summaryrefslogtreecommitdiff
path: root/contrib/svk
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/svk')
-rw-r--r--contrib/svk466
1 files changed, 215 insertions, 251 deletions
diff --git a/contrib/svk b/contrib/svk
index e2d0fac7..1b6f70fd 100644
--- a/contrib/svk
+++ b/contrib/svk
@@ -1,263 +1,227 @@
-# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
-# ex: ts=8 sw=8 noet filetype=sh
-#
# svk completion by Guillaume Rousse <guillomovitch@zarb.org>
+have svk &&
_svk()
{
- local cur prev commands options command
+ local cur prev commands options command
- COMPREPLY=()
- cur=`_get_cword`
+ COMPREPLY=()
+ cur=`_get_cword`
- 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'
+ 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 [[ $COMP_CWORD -eq 1 ]] ; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--version' -- $cur ) )
- else
- COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
- fi
- else
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--version' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
+ fi
+ else
- prev=${COMP_WORDS[COMP_CWORD-1]}
- case $prev in
- -@(F|-file|-targets))
- _filedir
- return 0;
- ;;
- --encoding)
- COMPREPLY=( $( compgen -W \
- '$( iconv --list | sed -e "s@//@@;" )' \
- -- "$cur" ) )
- return 0;
- ;;
- esac
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ case $prev in
+ -@(F|-file|-targets))
+ _filedir
+ return 0;
+ ;;
+ --encoding)
+ COMPREPLY=( $( compgen -W \
+ '$( iconv --list | sed -e "s@//@@;" )' -- "$cur" ) )
+ return 0;
+ ;;
+ esac
- command=${COMP_WORDS[1]}
+ command=${COMP_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="$options --help -h"
+ 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="$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
+ 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 $default svk
+ return 0
+} &&
+complete -F _svk $filenames svk
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh