Mercurial > repos > shellac > sam_consensus_v3
comparison env/bin/activate-global-python-argcomplete @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
| author | shellac |
|---|---|
| date | Mon, 22 Mar 2021 18:12:50 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:4f3585e2f14b |
|---|---|
| 1 #!/Users/cmdms/OneDrive-UOB/Development/Projects/2021/sam-consensus-v3/env/bin/python3 | |
| 2 # PYTHON_ARGCOMPLETE_OK | |
| 3 | |
| 4 # Copyright 2012-2019, Andrey Kislyuk and argcomplete contributors. | |
| 5 # Licensed under the Apache License. See https://github.com/kislyuk/argcomplete for more info. | |
| 6 | |
| 7 ''' | |
| 8 Activate the generic bash-completion script for the argcomplete module. | |
| 9 ''' | |
| 10 | |
| 11 import os, sys, argparse, argcomplete, shutil, fileinput | |
| 12 | |
| 13 parser = argparse.ArgumentParser(description=__doc__, | |
| 14 formatter_class=argparse.RawDescriptionHelpFormatter) | |
| 15 | |
| 16 dest_opt = parser.add_argument("--dest", default="/etc/bash_completion.d", | |
| 17 help="Specify the bash completion modules directory to install into") | |
| 18 parser.add_argument("--user", help="Install into user directory (~/.bash_completion.d/)", action='store_true') | |
| 19 parser.add_argument("--no-defaults", dest="use_defaults", action="store_false", default=True, | |
| 20 help="When no matches are generated, do not fallback to readline\'s default completion") | |
| 21 parser.add_argument("--complete-arguments", nargs=argparse.REMAINDER, | |
| 22 help="arguments to call complete with; use of this option discards default options") | |
| 23 argcomplete.autocomplete(parser) | |
| 24 args = parser.parse_args() | |
| 25 | |
| 26 if args.user: | |
| 27 args.dest = os.path.expanduser("~/.bash_completion.d/") | |
| 28 if not os.path.exists(args.dest): | |
| 29 try: | |
| 30 os.mkdir(args.dest) | |
| 31 except Exception as e: | |
| 32 parser.error("Path {d} does not exist and could not be created: {e}".format(d=args.dest, e=e)) | |
| 33 elif not os.path.exists(args.dest) and args.dest != '-': | |
| 34 if sys.platform == 'darwin' and args.dest == dest_opt.default and os.path.exists("/usr/local" + dest_opt.default): | |
| 35 args.dest = "/usr/local" + dest_opt.default | |
| 36 else: | |
| 37 parser.error("Path {d} does not exist".format(d=args.dest)) | |
| 38 | |
| 39 activator = os.path.join(os.path.dirname(argcomplete.__file__), 'bash_completion.d', 'python-argcomplete') | |
| 40 | |
| 41 if args.complete_arguments is None: | |
| 42 complete_options = '-o default -o bashdefault' if args.use_defaults else '-o bashdefault' | |
| 43 else: | |
| 44 complete_options = " ".join(args.complete_arguments) | |
| 45 complete_call = "complete{} -D -F _python_argcomplete_global".format(" " + complete_options if complete_options else "") | |
| 46 def replaceCompleteCall(line): | |
| 47 if line.startswith("complete") and "_python_argcomplete_global" in line: | |
| 48 return complete_call + ('\n' if line.endswith('\n') else '') | |
| 49 else: | |
| 50 return line | |
| 51 | |
| 52 if args.dest == '-': | |
| 53 for l in open(activator): | |
| 54 sys.stdout.write(replaceCompleteCall(l)) | |
| 55 else: | |
| 56 dest = os.path.join(args.dest, "python-argcomplete") | |
| 57 | |
| 58 sys.stdout.write("Installing bash completion script " + dest) | |
| 59 if not args.use_defaults: | |
| 60 sys.stdout.write(" without -o default") | |
| 61 elif args.complete_arguments: | |
| 62 sys.stdout.write(" with options: " + complete_options) | |
| 63 sys.stdout.write("\n") | |
| 64 | |
| 65 try: | |
| 66 shutil.copy(activator, dest) | |
| 67 if args.complete_arguments or not args.use_defaults: | |
| 68 for l in fileinput.input(dest, inplace=True): | |
| 69 # fileinput with inplace=True redirects stdout to the edited file | |
| 70 sys.stdout.write(replaceCompleteCall(l)) | |
| 71 except Exception as e: | |
| 72 err = str(e) | |
| 73 if args.dest == dest_opt.default: | |
| 74 err += ("\nPlease try --user to install into a user directory, " | |
| 75 "or --dest to specify the bash completion modules directory") | |
| 76 parser.error(err) |
