218 lines
8.7 KiB
Plaintext
Raw Normal View History

# 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
2009-10-04 19:42:50 +02:00
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '--version' -- "$cur" ) )
else
COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
fi
else
case $prev in
-F|--file|--targets)
2009-10-04 19:42:50 +02:00
_filedir
2011-05-11 19:42:02 +03:00
return 0
2009-10-04 19:42:50 +02:00
;;
--encoding)
COMPREPLY=( $( compgen -W \
'$( iconv --list | sed -e "s@//@@;" )' -- "$cur" ) )
2011-05-11 19:42:02 +03:00
return 0
2009-10-04 19:42:50 +02:00
;;
esac
command=${words[1]}
2009-10-04 19:42:50 +02:00
if [[ "$cur" == -* ]]; then
# possible options for the command
case $command in
add)
options=' --non-recursive -N -q --quiet'
;;
blame|annotate|ann|praise)
2009-10-04 19:42:50 +02:00
options='-r --revisions -x --cross'
;;
cat)
options='-r --revision'
;;
checkout|co)
options='-r --revision -q --quiet -N --non-recursive -l
2009-10-04 19:42:50 +02:00
--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
2009-10-04 19:42:50 +02:00
--check-only --direct'
;;
commit|ci)
options='--import -m --message -F --file --encoding
--template -P --patch -S --sign -C --check-only -N
2009-10-04 19:42:50 +02:00
--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'
2009-10-04 19:42:50 +02:00
;;
delete|del|remove|rm)
options='-k --keep-local -m --message -F --file --encoding
--template -P --patch -S --sign -C --check-only
2009-10-04 19:42:50 +02:00
--direct'
;;
depotmap|depot)
2009-10-04 19:42:50 +02:00
options='-i --init -l --list -d --detach --relocate'
;;
diff|di)
options='-r --revision -s --summarize -b --verbose -N
2009-10-04 19:42:50 +02:00
--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'
2009-10-04 19:42:50 +02:00
;;
list|ls)
options='-r --revision -v --verbose -R --recursive -d
2009-10-04 19:42:50 +02:00
--depth -f --full-path'
;;
log)
options='-r --revision -l --limit -q --quiet -x --cross -v
--verbose'
2009-10-04 19:42:50 +02:00
;;
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'
2009-10-04 19:42:50 +02:00
;;
mirror|mi)
options='-l --list -d --detach --relocate --recover
2009-10-04 19:42:50 +02:00
--unlock --upgrade'
;;
mkdir)
options='-p --parent -m --message -F --file --template
--encoding -P --patch -S --sign -C --check-only
2009-10-04 19:42:50 +02:00
--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'
2009-10-04 19:42:50 +02:00
;;
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'
2009-10-04 19:42:50 +02:00
;;
propedit|pedit|pe)
options='-R --recursive -r --revision --revprop -m
--message -F --file --template --encoding -P --patch
2009-10-04 19:42:50 +02:00
-S --sign -C --check-only --direct'
;;
propget|pget|pg)
2009-10-04 19:42:50 +02:00
options='-R --recursive -r --revision --revprop --strict'
;;
proplist|plist|pl)
options='-R --recursive -v --verbose -r --revision
--revprop'
2009-10-04 19:42:50 +02:00
;;
pull)
options='-a --all -l --lump'
;;
push)
options='-f --from -l --lump -C --check -P --patch -S
2009-10-04 19:42:50 +02:00
--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'
2009-10-04 19:42:50 +02:00
;;
status|stat|st)
options='-q --quiet --no-ignore -N --non-recursive -v
2009-10-04 19:42:50 +02:00
--verbose'
;;
switch|sw)
2009-10-04 19:42:50 +02:00
options='-r --revision -d --detach -q --quiet'
;;
sync|sy)
2009-10-04 19:42:50 +02:00
options='-a --all -s --skipto -t --torev'
;;
update|up)
options='-r --revision -N --non-recursive -C --check-only
2009-10-04 19:42:50 +02:00
-s --sync -m --merge -q --quiet'
;;
esac
options+=" --help -h"
2009-10-04 19:42:50 +02:00
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
else
case $command in
help|h|\?)
COMPREPLY=( $( compgen -W "$commands environment commands
intro" -- "$cur" ) )
2009-10-04 19:42:50 +02:00
;;
admin)
COMPREPLY=( $( compgen -W 'help deltify dump hotcopy
list-dblogs list-unused-dblogs load lstxns recover
2009-10-04 19:42:50 +02:00
rmtxns setlog verify rmcache' -- "$cur" ) )
;;
patch)
COMPREPLY=( $( compgen -W '--ls --list --cat --view
--regen --regenerate --up --update --apply --rm
2009-10-04 19:42:50 +02:00
--delete' -- "$cur" ) )
;;
sync)
COMPREPLY=( $( compgen -W "$( svk mirror --list \
2>/dev/null | awk '/^\//{print $1}' )" -- "$cur" ) )
;;
co|checkout|push|pull)
2009-10-04 19:42:50 +02:00
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
2009-10-04 19:42:50 +02:00
return 0
2009-06-08 21:22:43 +03:00
} &&
complete -F _svk svk
2009-10-04 19:42:50 +02:00
# ex: ts=4 sw=4 et filetype=sh