From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

# bash completion for rex
_rex()
{
local cur prev
COMPREPLY=()
_get_comp_words_by_ref -n : cur prev
if [[ "$cur" == -* ]]; then
COMPREPLY=( $(compgen -W '$(_parse_help "$1" -h)' -- "$cur") )
return
fi
case "$prev" in
-f)
_filedir
;;
-H)
if [ -f Rexfile ]; then
hosts=( $(rex -Ty 2>/dev/null | perl -MYAML -MList::Util=uniq -E 'my $groups = Load(join "", <>)->{groups}; say $_->{name} for uniq sort map { @{ $groups->{$_} } } keys %$groups') )
COMPREPLY=( $( compgen -W '${hosts[@]}' -- "$cur" ) ) || _known_hosts_real -a "$cur"
fi
;;
-E)
if [ -f Rexfile ]; then
envs=( $(rex -Ty 2>/dev/null | perl -MYAML -e 'my $envs = Load(join "", <>)->{envs}; print "$_\n" for @$envs;') )
COMPREPLY=( $( compgen -W '${envs[@]}' -- "$cur" ) )
fi
;;
-G)
if [ -f Rexfile ]; then
groups=( $(rex -Ty 2>/dev/null | perl -MYAML -e 'my $groups = Load(join "", <>)->{groups}; print "$_\n" for keys %$groups;') )
COMPREPLY=( $( compgen -W '${groups[@]}' -- "$cur" ) )
fi
;;
*)
if [ -f Rexfile ]; then
tasks=( $(rex -Ty 2>/dev/null | perl -MYAML -E 'my $tasks = Load(join "", <>)->{tasks}; say $_ for @$tasks;') )
COMPREPLY=( $( compgen -W '${tasks[@]}' -- "$cur" ) )
fi
;;
esac
_rex_fix_colon_reply
return 0
} &&
complete -F _rex rex
_rex_fix_colon_reply()
{
local colprefs i
colprefs=${cur%"${cur##*:}"}
i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=${COMPREPLY[$i]#"$colprefs"}
done
}
# Local variables:
# mode: shell-script
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh