bash-completion/completions/svk

218 lines
8.7 KiB
Bash

# svk(1) completion -*- shell-script -*-
_svk()
{
local cur prev words cword
_init_completion || return
local commands options command
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 [[ $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=${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+=" --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 "$( $1 mirror --list \
2>/dev/null | awk '/^\//{print $1}' )" -- "$cur" ) )
;;
co|checkout|push|pull)
if [[ "$cur" == //*/* ]]; then
path=${cur%/*}/
else
path=//
fi
COMPREPLY=( $( compgen -W "$( $1 list $path 2>/dev/null | \
sed -e 's|\(.*\)|'$path'\1|')" -- "$cur" ) )
;;
*)
_filedir
;;
esac
fi
fi
return 0
} &&
complete -F _svk svk
# ex: ts=4 sw=4 et filetype=sh