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) |