Skip to content

Commit

Permalink
Merge pull request #16 from jluebbe/cli
Browse files Browse the repository at this point in the history
add help and completion helper
  • Loading branch information
Emantor committed Mar 3, 2017
2 parents 558ec88 + e6a2f85 commit efa30b4
Showing 1 changed file with 52 additions and 18 deletions.
70 changes: 52 additions & 18 deletions labgrid/remote/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,17 @@ def on_place_changed(self, name, config):
#print("Got place changed: {}, {}".format(name, place))
self.places[name] = place

@asyncio.coroutine
def complete(self):
if self.args.type == 'resources':
for exporter, groups in sorted(self.resources.items()):
for group_name, group in sorted(groups.items()):
for resource_name, resource in sorted(group.items()):
print("{}/{}/{}".format(exporter, group_name, resource.cls))
elif self.args.type == 'places':
for name, place in sorted(self.places.items()):
print(name)

@asyncio.coroutine
def print_resources(self):
"""Print out the resources"""
Expand Down Expand Up @@ -439,7 +450,11 @@ def main():
default="ws://127.0.0.1:20408/ws",
help="crossbar websocket URL"
)
subparsers = parser.add_subparsers(dest='command')
subparsers = parser.add_subparsers(
dest='command',
title='available subcommands',
metavar="COMMAND",
)

place_parser = argparse.ArgumentParser(add_help=False)
if 'PLACE' in os.environ:
Expand All @@ -453,14 +468,20 @@ def main():
else:
place_parser.add_argument('-p', '--place', type=str, required=True)

subparser = subparsers.add_parser('resources')
subparser = subparsers.add_parser('complete')
subparser.add_argument('type', choices=['resources', 'places'])
subparser.set_defaults(func=ClientSession.complete)

subparser = subparsers.add_parser('resources', aliases=('r',),
help="list available resources")
subparser.add_argument('-a', '--acquired', action='store_true')
subparser.add_argument('-e', '--exporter')
subparser.add_argument('-v', '--verbose', action='count')
subparser.add_argument('match', nargs='?')
subparser.set_defaults(func=ClientSession.print_resources)

subparser = subparsers.add_parser('places')
subparser = subparsers.add_parser('places', aliases=('p',),
help="list available places")
subparser.add_argument('-a', '--acquired', action='store_true')
subparser.add_argument('-v', '--verbose', action='store_true')
subparser.set_defaults(func=ClientSession.print_places)
Expand All @@ -470,49 +491,62 @@ def main():
)
subparser.set_defaults(func=ClientSession.print_place)

subparser = subparsers.add_parser('add-place')
subparser = subparsers.add_parser('add-place', help="add a new place")
subparser.set_defaults(func=ClientSession.add_place)
subparser.add_argument('place')
subparser.add_argument('place', help="place name")

subparser = subparsers.add_parser('del-place')
subparser = subparsers.add_parser('del-place', help="delete an existing place")
subparser.set_defaults(func=ClientSession.del_place)
subparser.add_argument('place')
subparser.add_argument('place', help="place name")

subparser = subparsers.add_parser('add-alias', parents=[place_parser])
subparser = subparsers.add_parser('add-alias', parents=[place_parser],
help="add an alias to a place")
subparser.add_argument('alias')
subparser.set_defaults(func=ClientSession.add_alias)

subparser = subparsers.add_parser('del-alias', parents=[place_parser])
subparser = subparsers.add_parser('del-alias', parents=[place_parser],
help="delete an alias from a place")
subparser.add_argument('alias')
subparser.set_defaults(func=ClientSession.del_alias)

subparser = subparsers.add_parser('set-comment', parents=[place_parser])
subparser = subparsers.add_parser('set-comment', parents=[place_parser],
help="update the place comment")
subparser.add_argument('comment', nargs='+')
subparser.set_defaults(func=ClientSession.set_comment)

subparser = subparsers.add_parser('add-match', parents=[place_parser])
subparser = subparsers.add_parser('add-match', parents=[place_parser],
help="add a match pattern to a place")
subparser.add_argument('pattern')
subparser.set_defaults(func=ClientSession.add_match)

subparser = subparsers.add_parser('del-match', parents=[place_parser])
subparser = subparsers.add_parser('del-match', parents=[place_parser],
help="delete a match pattern from a place")
subparser.add_argument('pattern')
subparser.set_defaults(func=ClientSession.del_match)

subparser = subparsers.add_parser('acquire', parents=[place_parser])
subparser = subparsers.add_parser('acquire', parents=[place_parser],
aliases=('lock',),
help="acquire a place")
subparser.set_defaults(func=ClientSession.acquire)

subparser = subparsers.add_parser('release', parents=[place_parser])
subparser = subparsers.add_parser('release', parents=[place_parser],
aliases=('unlock',),
help="release a place")
subparser.set_defaults(func=ClientSession.release)

subparser = subparsers.add_parser('env', parents=[place_parser])
subparser = subparsers.add_parser('env', parents=[place_parser],
help="generate a labgrid environment file for a place")
subparser.set_defaults(func=ClientSession.env)

subparser = subparsers.add_parser('power', parents=[place_parser])
subparser = subparsers.add_parser('power', parents=[place_parser],
help="change (or get) a place's power status")
subparser.add_argument('action', choices=['on', 'off', 'cycle', 'get'])
subparser.set_defaults(func=ClientSession.power)

subparser = subparsers.add_parser('console', parents=[place_parser])
subparser.add_argument('-l', '--loop', action='store_true')
subparser = subparsers.add_parser('console', parents=[place_parser],
help="connect to the console")
subparser.add_argument('-l', '--loop', action='store_true',
help="keep trying to connect if the console is unavailable")
subparser.set_defaults(func=ClientSession.console)

#subparser = subparsers.add_parser('attach', parents=[place_parser])
Expand Down

0 comments on commit efa30b4

Please sign in to comment.