218 lines
8.7 KiB
Bash
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 "$( 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
|
|
|
|
# ex: ts=4 sw=4 et filetype=sh
|