# svk(1) completion -*- shell-script -*- proc _svk { local cur prev words cword _init_completion || return local commands options command setvar 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 ]] { if [[ "$cur" == -* ]] { setvar COMPREPLY = ''( $( compgen -W '--version' -- "$cur" ) ) } else { setvar COMPREPLY = ''( $( compgen -W "$commands" -- "$cur" ) ) } } else { case (prev) { -F|--file|--targets { _filedir return 0 } --encoding { setvar COMPREPLY = ''( $( compgen -W \ '$( iconv --list | sed -e "s@//@@;" )' -- "$cur" ) ) return 0 } } setvar command = ${words[1]} if [[ "$cur" == -* ]] { # possible options for the command case (command) { add { setvar options = '' --non-recursive -N -q --quiet'' } blame|annotate|ann|praise { setvar options = ''-r --revisions -x --cross'' } cat { setvar options = ''-r --revision'' } checkout|co { setvar options = ''-r --revision -q --quiet -N --non-recursive -l --list -d --detach --export --relocate --purge'' } cleanup { setvar options = ''-a --all'' } cmerge|cm { setvar 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 { setvar options = ''--import -m --message -F --file --encoding --template -P --patch -S --sign -C --check-only -N --non-recursive --direct'' } copy|cp { setvar 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 { setvar options = ''-k --keep-local -m --message -F --file --encoding --template -P --patch -S --sign -C --check-only --direct'' } depotmap|depot { setvar options = ''-i --init -l --list -d --detach --relocate'' } diff|di { setvar options = ''-r --revision -s --summarize -b --verbose -N --non-recursive'' } import { setvar 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 { setvar options = ''-r --revision -v --verbose -R --recursive -d --depth -f --full-path'' } log { setvar options = ''-r --revision -l --limit -q --quiet -x --cross -v --verbose'' } merge { setvar 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 { setvar options = ''-l --list -d --detach --relocate --recover --unlock --upgrade'' } mkdir { setvar options = ''-p --parent -m --message -F --file --template --encoding -P --patch -S --sign -C --check-only --direct'' } move|mv|rename|ren { setvar options = ''-r --revision -p --parent -q --quiet -m --message -F --file --encoding --template -P --patch -S --sign -C --check-only --direct'' } patch { setvar options = ''--depot'' } propdel|propset|pdel|pset|pd|ps { setvar 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 { setvar options = ''-R --recursive -r --revision --revprop -m --message -F --file --template --encoding -P --patch -S --sign -C --check-only --direct'' } propget|pget|pg { setvar options = ''-R --recursive -r --revision --revprop --strict'' } proplist|plist|pl { setvar options = ''-R --recursive -v --verbose -r --revision --revprop'' } pull { setvar options = ''-a --all -l --lump'' } push { setvar options = ''-f --from -l --lump -C --check -P --patch -S --sign --verbatim'' } resolved { setvar options = ''-R --recursive'' } revert { setvar options = ''-R --recursive -q --quiet'' } smerge|sm { setvar 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 { setvar options = ''-q --quiet --no-ignore -N --non-recursive -v --verbose'' } switch|sw { setvar options = ''-r --revision -d --detach -q --quiet'' } sync|sy { setvar options = ''-a --all -s --skipto -t --torev'' } update|up { setvar options = ''-r --revision -N --non-recursive -C --check-only -s --sync -m --merge -q --quiet'' } } setvar options = "" --help -h"" setvar COMPREPLY = ''( $( compgen -W "$options" -- "$cur" ) ) } else { case (command) { help|h|\? { setvar COMPREPLY = ''( $( compgen -W "$commands environment commands intro" -- "$cur" ) ) } admin { setvar COMPREPLY = ''( $( compgen -W 'help deltify dump hotcopy list-dblogs list-unused-dblogs load lstxns recover rmtxns setlog verify rmcache' -- "$cur" ) ) } patch { setvar COMPREPLY = ''( $( compgen -W '--ls --list --cat --view --regen --regenerate --up --update --apply --rm --delete' -- "$cur" ) ) } sync { setvar COMPREPLY = ''( $( compgen -W "$( $1 mirror --list \ 2>/dev/null | awk '/^\//{print $1}' )" -- "$cur" ) ) } co|checkout|push|pull { if [[ "$cur" == //*/* ]] { setvar path = "${cur%/*}/" } else { setvar path = "//" } setvar COMPREPLY = ''( $( compgen -W "$( $1 list $path 2>/dev/null | \ sed -e 's|\(.*\)|'$path'\1|')" -- "$cur" ) ) } * { _filedir } } } } return 0 } && complete -F _svk svk # ex: ts=4 sw=4 et filetype=sh