Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions contrib/completion/_labgrid-client.zsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#compdef labgrid-client
_labgrid-client () {
local curcontext="${curcontext}"
typeset -A opt_args
_arguments -C "1:Actions:((resources\:'show resources'\
places\:'show places'\
show\:'show current place'\
add-place\:'add place'\
del-place\:'delete place'\
add-alias\:'add alias for a place'\
del-alias\:'delete alias for a place'\
set-comment\:'set comment for a place'\
add-match\:'add match to a place'\
del-match\:'delete match from a place'\
acquire\:'acquire a place'\
release\:'release a place'\
env\:'print environment'\
power\:'power management'\
help\:'show help'\
console\:'open console'))" \
'*::arg:->args'
case "$state" in
(args)
case $line[1] in
(power)
_arguments -C "1:Power parameter:((on\:'power device on'\
off\:'power device off'
get\:'get power status'
cycle\:'cycle the device'))" \
'-p[place or alias]:place:->places' \
'-h[show help]' \
'-x[crossbar url]'
;;
(add-match)
_arguments -C "1:Resource Match:->resources" \
;;
(*)
_arguments -C '-p[place or alias]:place:->places' \
'-h[show help]' \
'-x[crossbar url]'
;;
esac
case "$state" in
(places)
local -a places mine_places
mine_places=('power' 'console' 'release' 'env')
if [[ ${mine_places[(i)$line[1]]} -le ${#mine_places} ]];
then places=( $(labgrid-client complete -m places) )
_values 'Available places and aliases' $places
else
places=( $(labgrid-client complete places) )
_values 'Available places and aliases' $places
fi
;;
(resources)
local -a resources
resources=( $(labgrid-client complete resources) )
_values 'Exported Resources' $resources
;;
esac
esac

}
45 changes: 45 additions & 0 deletions contrib/completion/labgrid-client.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# complete labgrid-client
_labgrid-client()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local prev=${COMP_WORDS[COMP_CWORD-1]}

case "$prev" in
-p)
local mine_places=('power' 'console' 'release' 'env')
if [[ ! -z "${mine_places[${COMP_WORDS[1]}]+_}" ]]; then
COMPREPLY=( $( compgen -W "$(labgrid-client complete places -m)" ) )
else
COMPREPLY=( $( compgen -W "$(labgrid-client complete places)" ) )
fi
return 0
;;
power)
COMPREPLY=( $( compgen -W "on off cycle get" ) )
return 0
;;
esac

# completing an option
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W "-p -h -x" ) )
else
COMPREPLY=( $( compgen -W "resources\
places\
show\
help\
add-place\
del-place\
add-alias\
del-alias\
set-comment\
add-match\
del-match\
acquire\
release\
env\
power\
console" ) )
fi
}
complete -F _labgrid-client labgrid-client
10 changes: 10 additions & 0 deletions labgrid/remote/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,17 @@ def complete(self):
for exporter, groups in sorted(self.resources.items()):
for group_name, group in sorted(groups.items()):
for resource_name, resource in sorted(group.items()):
if self.args.mine and resource.acquired != "{}/{}".format(gethostname(), getuser()):
continue
if self.args.acquired and resource.acquired is None:
continue
print("{}/{}/{}".format(exporter, group_name, resource.cls))
elif self.args.type == 'places':
for name, place in sorted(self.places.items()):
if self.args.mine and place.acquired != "{}/{}".format(gethostname(), getuser()):
continue
if self.args.acquired and place.acquired is None:
continue
print(name)

@asyncio.coroutine
Expand Down Expand Up @@ -643,6 +651,8 @@ def main():
subparser = subparsers.add_parser('help')

subparser = subparsers.add_parser('complete')
subparser.add_argument('-a', '--acquired', action='store_true')
subparser.add_argument('-m', '--mine', action='store_true')
subparser.add_argument('type', choices=['resources', 'places'])
subparser.set_defaults(func=ClientSession.complete)

Expand Down