#compdef hostgroup hostgroups _hostgroup_hostgroups () { local expl _description hostgroup expl 'hostgroup' compadd "$expl[@]" - $(hostgroup -h ALL) } _hostgroup_hosts () { local expl _description host expl 'host' compadd "$expl[@]" - $(hostgroup ALL) } _hostgroup () { _arguments \ '(--hosts)-h[input contains hostnames not groups]:*:host:_hostgroup_hosts' \ '(-h)--hosts[input contains hostnames not groups]:*:host:_hostgroup_hosts' \ '(-e)--expression[input is expression not list]' \ '(--expression)-e[input is expression not list]' \ {'(--database)-f+','(-f)--database='}':alternative database file:_files' \ '(-l --lines '{'--delimiter)-d+','-d)--delimiter='}':output delimiter:' \ '(-d --delimiter '{' -l)--lines',' --lines)-l'}'[list one item per line]' \ {'(-c)--count','(--count)-c'}'[output number of items rather than actual items]' \ {'*-v','*--verbose'}'[increase verbosity (can be repeated)]' \ '(-h --hosts)*:hostgroup:_hostgroup_hostgroups' } _hostgroups () { _arguments '*:hostgroup:_hostgroup_hosts' } _$service "$@"