# 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