Add simplistic autocomplete

This commit is contained in:
2018-04-22 15:20:22 -05:00
parent e8ada8674b
commit 0f4ce49c8f
3 changed files with 29 additions and 2 deletions
+1
View File
@@ -3,3 +3,4 @@ from . import kubernetes
from .kubernetes import Kubernetes
from .gcloud import Gcloud
from .bootnode import Bootnode
from .complete import complete
+20
View File
@@ -0,0 +1,20 @@
import sys
def complete(argv, parser):
"""Return completions for commandline."""
if not argv[1:]:
return
if not argv[1] == 'complete':
return
# Generate list of command:descriptions
completions = []
commands = parser.format_help().split('\n')[8:-5]
for cmd in commands:
k, v = cmd.strip().split(None, 1)
completions.append("{0}:{1}".format(k, v))
print('\n'.join(completions))
sys.exit(0)
+8 -2
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
import sys
import argparse
from bootnode import Bootnode
from bootnode import Bootnode, complete
def run_command(cmd, args):
@@ -20,7 +20,7 @@ def run_command(cmd, args):
getattr(bootnode, cmd)(**kwargs)
if __name__ == '__main__':
def parser():
parser = argparse.ArgumentParser(description='Cluster management commands')
parser.add_argument('--network', help='Ethereum network')
subparsers = parser.add_subparsers()
@@ -92,6 +92,12 @@ if __name__ == '__main__':
scale_down.add_argument('network', help='Network to scale')
scale_down.set_defaults(command='scale_down')
return parser
if __name__ == '__main__':
parser = parser()
complete(sys.argv, parser)
args = parser.parse_args()
try: