haiku/data/etc/bash_completion.d/svk

226 lines
8.9 KiB
Bash

# svk(1) completion
have svk &&
_svk()
{
local cur prev commands options command
COMPREPLY=()
_get_comp_words_by_ref cur prev
commands='add admin annotate ann blame praise cat checkout co cleanup \
cmerge cm commit ci copy cp delete del remove rm depotmap \
depot describe desc diff di help h ? import info list ls log \
merge mirror mi mkdir move mv ren rename patch propdel pd pdel \
propedit pe pedit propget pg pget proplist pl plist propset ps \
pset pull push resolved revert smerge sm status st stat switch \
sw sync sy update up verify'
if [[ $COMP_CWORD -eq 1 ]] ; then
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '--version' -- "$cur" ) )
else
COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
fi
else
case $prev in
-F|--file|--targets)
_filedir
return 0;
;;
--encoding)
COMPREPLY=( $( compgen -W \
'$( iconv --list | sed -e "s@//@@;" )' -- "$cur" ) )
return 0;
;;
esac
command=${COMP_WORDS[1]}
if [[ "$cur" == -* ]]; then
# possible options for the command
case $command in
add)
options=' --non-recursive -N -q --quiet'
;;
blame|annotate|ann|praise)
options='-r --revisions -x --cross'
;;
cat)
options='-r --revision'
;;
checkout|co)
options='-r --revision -q --quiet -N --non-recursive -l \
--list -d --detach --export --relocate --purge'
;;
cleanup)
options='-a --all'
;;
cmerge|cm)
options='-c --change -l --log -r --revision -a --auto \
--verbatim --no-ticket -m --message -F --file \
--template --encoding -P --patch -S --sign -C \
--check-only --direct'
;;
commit|ci)
options='--import -m --message -F --file --encoding \
--template -P --patch -S --sign -C --check-only -N \
--non-recursive --direct'
;;
copy|cp)
options='-r --revision -p --parent -q --quiet -m --message \
-F --file --template --encoding -P --patch -S --sign \
-C --check-only --direct'
;;
delete|del|remove|rm)
options='-k --keep-local -m --message -F --file --encoding \
--template -P --patch -S --sign -C --check-only \
--direct'
;;
depotmap|depot)
options='-i --init -l --list -d --detach --relocate'
;;
diff|di)
options='-r --revision -s --summarize -b --verbose -N \
--non-recursive'
;;
import)
options='-f --from-checkout -t --to-checkout -m --message \
-F --file --template --encoding -P --patch -S --sign \
-C --check-only -N --non-recursive --direct'
;;
list|ls)
options='-r --revision -v --verbose -R --recursive -d \
--depth -f --full-path'
;;
log)
options='-r --revision -l --limit -q --quiet -x --cross \
-v --verbose'
;;
merge)
options='-r --revision -c --change -I --incremental -a \
--auto -l --log -s --sync -t --to -f --from \
--verbatim --no-ticket --track-rename -m --message \
-F --file --template --encoding -P --patch -S --sign \
-C --check-only --direct'
;;
mirror|mi)
options='-l --list -d --detach --relocate --recover \
--unlock --upgrade'
;;
mkdir)
options='-p --parent -m --message -F --file --template \
--encoding -P --patch -S --sign -C --check-only \
--direct'
;;
move|mv|rename|ren)
options='-r --revision -p --parent -q --quiet -m \
--message -F --file --encoding --template -P --patch \
-S --sign -C --check-only --direct'
;;
patch)
options='--depot'
;;
propdel|propset|pdel|pset|pd|ps)
options='-R --recursive -r --revision --revprop -m \
--message -F --file --template --encoding -P --patch \
-S --sign -C --check-only -q --quiet --direct'
;;
propedit|pedit|pe)
options='-R --recursive -r --revision --revprop -m \
--message -F --file --template --encoding -P --patch \
-S --sign -C --check-only --direct'
;;
propget|pget|pg)
options='-R --recursive -r --revision --revprop --strict'
;;
proplist|plist|pl)
options='-R --recursive -v --verbose \
-r --revision --revprop'
;;
pull)
options='-a --all -l --lump'
;;
push)
options='-f --from -l --lump -C --check -P --patch -S \
--sign --verbatim'
;;
resolved)
options='-R --recursive'
;;
revert)
options='-R --recursive -q --quiet'
;;
smerge|sm)
options='-I --incremental -l --log -B --baseless -b \
--base -s --sync -t --to -f --from --verbatim \
--no-ticket --track-rename --host --remoterev -m \
--message -F --file --template --encoding -P --patch \
-S --sign -C --check-only --direct'
;;
status|stat|st)
options='-q --quiet --no-ignore -N --non-recursive -v \
--verbose'
;;
switch|sw)
options='-r --revision -d --detach -q --quiet'
;;
sync|sy)
options='-a --all -s --skipto -t --torev'
;;
update|up)
options='-r --revision -N --non-recursive -C --check-only \
-s --sync -m --merge -q --quiet'
;;
esac
options="$options --help -h"
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
else
case $command in
help|h|\?)
COMPREPLY=( $( compgen -W "$commands \
environment commands intro" -- "$cur" ) )
;;
admin)
COMPREPLY=( $( compgen -W 'help deltify dump hotcopy \
list-dblogs list-unused-dblogs load lstxns recover \
rmtxns setlog verify rmcache' -- "$cur" ) )
;;
patch)
COMPREPLY=( $( compgen -W '--ls --list --cat --view \
--regen --regenerate --up --update --apply --rm \
--delete' -- "$cur" ) )
;;
sync)
COMPREPLY=( $( compgen -W "$( svk mirror --list \
2>/dev/null | awk '/^\//{print $1}' )" -- "$cur" ) )
;;
co|checkout|push|pull)
if [[ "$cur" == //*/* ]]; then
path=${cur%/*}/
else
path=//
fi
COMPREPLY=( $( compgen -W "$( svk list $path 2>/dev/null | \
sed -e 's|\(.*\)|'$path'\1|')" -- "$cur" ) )
;;
*)
_filedir
;;
esac
fi
fi
return 0
} &&
complete -F _svk svk
# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh