apenwarr-redo/contrib/bash_completion.d/redo
Avery Pennarun 70923c5f30 bash completions: call redo-targets for a more complete list.
Also fix handling of filenames needing quoting (like "t/space dir"),
directories, and targets named after directories.
2011-01-01 21:12:50 -08:00

40 lines
887 B
Text

__find_redo_targets()
{
local IFS=$'\n:'
for d in . ../.. $PATH; do
if [ -x "$d/redo-targets" ]; then
( cd "$d" && echo "$PWD/redo-targets" )
break
fi
done
}
__redo_targets=$(__find_redo_targets)
__redo_completions()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
local IFS=$'\n'
local targets=$(
# targets already known to redo
[ -x "$__redo_targets" ] &&
"$__redo_targets" |
while read name; do
rest=${name#$cur}
[ "$rest" = "$name" ] && continue
name2="$cur${rest%%/*}"
[ -e "$name2/." ] || echo "$name2"
done
# targets named explicitly by .do files
compgen -o default "$cur" |
while read name; do
local don=${name%.do} def=${name#default.}
[ "$don" = "$name" -o "$def" != "$name" ] && continue
echo "${name%.do}"
done
)
COMPREPLY=($(compgen -W "$targets" "$cur"))
}
complete -F __redo_completions -o plusdirs -o filenames redo