2006-03-01 09:45:03 +00:00
|
|
|
# svk completion by Guillaume Rousse <guillomovitch@zarb.org>
|
|
|
|
|
2009-06-08 21:22:43 +03:00
|
|
|
have svk &&
|
2006-03-01 09:45:03 +00:00
|
|
|
_svk()
|
|
|
|
{
|
|
|
|
local cur prev commands options command
|
|
|
|
|
|
|
|
COMPREPLY=()
|
2008-05-10 18:04:06 +02:00
|
|
|
cur=`_get_cword`
|
2006-03-01 09:45:03 +00:00
|
|
|
|
|
|
|
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
|
Quote unquoted $cur to prevent globbing.
Closes Alioth #311614
Globbing might occur if $cur contains one of these globbing characters: * ? [ ]
The bug becomes apparent:
On Cygwin if the glob-string contains backslashes as well, causing a warning (Cygwin >= 1.7):
MS-DOS style path detected: ...
Preferred POSIX equivalent is: ...
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
On Linux, using strace, you can see bash-completion doing an unnecessary `open' system call.
Steps to reproduce on Linux using `strace':
Environment: Linux, bash-completion-1.0
1. Start bash with bash-completion loaded and find out PID ($$):
$ echo $$
MYPID
2. In a second bash shell, `strace' the above PID:
$ strace -e trace=open -f -o strace.log -p MYPID
3. Within the first bash shell, type:
$ cur="?"; _kernel_versions
4. In the second bash shell, type ^C to quick `strace'.
5. Check `strace.log', here you can see bash accessing
something it shouldn't:
...
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
...
6. The above call to `open' disappears if $cur in _kernel_versions gets
quoted, and you repeat the steps above:
_kernel_versions()
{
COMPREPLY=( $( compgen -W '$( command ls /lib/modules )' -- "$cur" ) )
}
2009-09-25 09:36:29 +02:00
|
|
|
COMPREPLY=( $( compgen -W '--version' -- "$cur" ) )
|
2006-03-01 09:45:03 +00:00
|
|
|
else
|
Quote unquoted $cur to prevent globbing.
Closes Alioth #311614
Globbing might occur if $cur contains one of these globbing characters: * ? [ ]
The bug becomes apparent:
On Cygwin if the glob-string contains backslashes as well, causing a warning (Cygwin >= 1.7):
MS-DOS style path detected: ...
Preferred POSIX equivalent is: ...
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
On Linux, using strace, you can see bash-completion doing an unnecessary `open' system call.
Steps to reproduce on Linux using `strace':
Environment: Linux, bash-completion-1.0
1. Start bash with bash-completion loaded and find out PID ($$):
$ echo $$
MYPID
2. In a second bash shell, `strace' the above PID:
$ strace -e trace=open -f -o strace.log -p MYPID
3. Within the first bash shell, type:
$ cur="?"; _kernel_versions
4. In the second bash shell, type ^C to quick `strace'.
5. Check `strace.log', here you can see bash accessing
something it shouldn't:
...
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
...
6. The above call to `open' disappears if $cur in _kernel_versions gets
quoted, and you repeat the steps above:
_kernel_versions()
{
COMPREPLY=( $( compgen -W '$( command ls /lib/modules )' -- "$cur" ) )
}
2009-09-25 09:36:29 +02:00
|
|
|
COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
|
2006-03-01 09:45:03 +00:00
|
|
|
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
|
|
|
|
|
|
|
|
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"
|
|
|
|
|
Quote unquoted $cur to prevent globbing.
Closes Alioth #311614
Globbing might occur if $cur contains one of these globbing characters: * ? [ ]
The bug becomes apparent:
On Cygwin if the glob-string contains backslashes as well, causing a warning (Cygwin >= 1.7):
MS-DOS style path detected: ...
Preferred POSIX equivalent is: ...
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
On Linux, using strace, you can see bash-completion doing an unnecessary `open' system call.
Steps to reproduce on Linux using `strace':
Environment: Linux, bash-completion-1.0
1. Start bash with bash-completion loaded and find out PID ($$):
$ echo $$
MYPID
2. In a second bash shell, `strace' the above PID:
$ strace -e trace=open -f -o strace.log -p MYPID
3. Within the first bash shell, type:
$ cur="?"; _kernel_versions
4. In the second bash shell, type ^C to quick `strace'.
5. Check `strace.log', here you can see bash accessing
something it shouldn't:
...
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
...
6. The above call to `open' disappears if $cur in _kernel_versions gets
quoted, and you repeat the steps above:
_kernel_versions()
{
COMPREPLY=( $( compgen -W '$( command ls /lib/modules )' -- "$cur" ) )
}
2009-09-25 09:36:29 +02:00
|
|
|
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
|
2006-03-01 09:45:03 +00:00
|
|
|
else
|
|
|
|
case $command in
|
|
|
|
@(help|h|\?))
|
|
|
|
COMPREPLY=( $( compgen -W "$commands \
|
Quote unquoted $cur to prevent globbing.
Closes Alioth #311614
Globbing might occur if $cur contains one of these globbing characters: * ? [ ]
The bug becomes apparent:
On Cygwin if the glob-string contains backslashes as well, causing a warning (Cygwin >= 1.7):
MS-DOS style path detected: ...
Preferred POSIX equivalent is: ...
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
On Linux, using strace, you can see bash-completion doing an unnecessary `open' system call.
Steps to reproduce on Linux using `strace':
Environment: Linux, bash-completion-1.0
1. Start bash with bash-completion loaded and find out PID ($$):
$ echo $$
MYPID
2. In a second bash shell, `strace' the above PID:
$ strace -e trace=open -f -o strace.log -p MYPID
3. Within the first bash shell, type:
$ cur="?"; _kernel_versions
4. In the second bash shell, type ^C to quick `strace'.
5. Check `strace.log', here you can see bash accessing
something it shouldn't:
...
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
...
6. The above call to `open' disappears if $cur in _kernel_versions gets
quoted, and you repeat the steps above:
_kernel_versions()
{
COMPREPLY=( $( compgen -W '$( command ls /lib/modules )' -- "$cur" ) )
}
2009-09-25 09:36:29 +02:00
|
|
|
environment commands intro" -- "$cur" ) )
|
2006-03-01 09:45:03 +00:00
|
|
|
;;
|
|
|
|
admin)
|
|
|
|
COMPREPLY=( $( compgen -W 'help \
|
|
|
|
deltify dump hotcopy \
|
|
|
|
list-dblogs list-unused-dblogs \
|
|
|
|
load lstxns recover rmtxns \
|
|
|
|
setlog verify rmcache' \
|
Quote unquoted $cur to prevent globbing.
Closes Alioth #311614
Globbing might occur if $cur contains one of these globbing characters: * ? [ ]
The bug becomes apparent:
On Cygwin if the glob-string contains backslashes as well, causing a warning (Cygwin >= 1.7):
MS-DOS style path detected: ...
Preferred POSIX equivalent is: ...
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
On Linux, using strace, you can see bash-completion doing an unnecessary `open' system call.
Steps to reproduce on Linux using `strace':
Environment: Linux, bash-completion-1.0
1. Start bash with bash-completion loaded and find out PID ($$):
$ echo $$
MYPID
2. In a second bash shell, `strace' the above PID:
$ strace -e trace=open -f -o strace.log -p MYPID
3. Within the first bash shell, type:
$ cur="?"; _kernel_versions
4. In the second bash shell, type ^C to quick `strace'.
5. Check `strace.log', here you can see bash accessing
something it shouldn't:
...
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
...
6. The above call to `open' disappears if $cur in _kernel_versions gets
quoted, and you repeat the steps above:
_kernel_versions()
{
COMPREPLY=( $( compgen -W '$( command ls /lib/modules )' -- "$cur" ) )
}
2009-09-25 09:36:29 +02:00
|
|
|
-- "$cur" ) )
|
2006-03-01 09:45:03 +00:00
|
|
|
;;
|
|
|
|
patch)
|
|
|
|
COMPREPLY=( $( compgen -W '--ls --list \
|
|
|
|
--cat --view --regen \
|
|
|
|
--regenerate --up --update \
|
|
|
|
--apply --rm --delete' \
|
Quote unquoted $cur to prevent globbing.
Closes Alioth #311614
Globbing might occur if $cur contains one of these globbing characters: * ? [ ]
The bug becomes apparent:
On Cygwin if the glob-string contains backslashes as well, causing a warning (Cygwin >= 1.7):
MS-DOS style path detected: ...
Preferred POSIX equivalent is: ...
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
On Linux, using strace, you can see bash-completion doing an unnecessary `open' system call.
Steps to reproduce on Linux using `strace':
Environment: Linux, bash-completion-1.0
1. Start bash with bash-completion loaded and find out PID ($$):
$ echo $$
MYPID
2. In a second bash shell, `strace' the above PID:
$ strace -e trace=open -f -o strace.log -p MYPID
3. Within the first bash shell, type:
$ cur="?"; _kernel_versions
4. In the second bash shell, type ^C to quick `strace'.
5. Check `strace.log', here you can see bash accessing
something it shouldn't:
...
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
...
6. The above call to `open' disappears if $cur in _kernel_versions gets
quoted, and you repeat the steps above:
_kernel_versions()
{
COMPREPLY=( $( compgen -W '$( command ls /lib/modules )' -- "$cur" ) )
}
2009-09-25 09:36:29 +02:00
|
|
|
-- "$cur" ) )
|
2006-03-01 09:45:03 +00:00
|
|
|
;;
|
|
|
|
sync)
|
|
|
|
COMPREPLY=( $( compgen -W "$( svk \
|
|
|
|
mirror --list 2>/dev/null | \
|
|
|
|
awk '/^\//{print $1}' )" \
|
Quote unquoted $cur to prevent globbing.
Closes Alioth #311614
Globbing might occur if $cur contains one of these globbing characters: * ? [ ]
The bug becomes apparent:
On Cygwin if the glob-string contains backslashes as well, causing a warning (Cygwin >= 1.7):
MS-DOS style path detected: ...
Preferred POSIX equivalent is: ...
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
On Linux, using strace, you can see bash-completion doing an unnecessary `open' system call.
Steps to reproduce on Linux using `strace':
Environment: Linux, bash-completion-1.0
1. Start bash with bash-completion loaded and find out PID ($$):
$ echo $$
MYPID
2. In a second bash shell, `strace' the above PID:
$ strace -e trace=open -f -o strace.log -p MYPID
3. Within the first bash shell, type:
$ cur="?"; _kernel_versions
4. In the second bash shell, type ^C to quick `strace'.
5. Check `strace.log', here you can see bash accessing
something it shouldn't:
...
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
...
6. The above call to `open' disappears if $cur in _kernel_versions gets
quoted, and you repeat the steps above:
_kernel_versions()
{
COMPREPLY=( $( compgen -W '$( command ls /lib/modules )' -- "$cur" ) )
}
2009-09-25 09:36:29 +02:00
|
|
|
-- "$cur" ) )
|
2006-03-01 09:45:03 +00:00
|
|
|
;;
|
|
|
|
@(co|checkout|push|pull))
|
|
|
|
if [[ "$cur" == //*/* ]]; then
|
|
|
|
path=${cur%/*}/
|
|
|
|
else
|
|
|
|
path=//
|
|
|
|
fi
|
|
|
|
COMPREPLY=( $( compgen -W "$( svk \
|
Quote unquoted $cur to prevent globbing.
Closes Alioth #311614
Globbing might occur if $cur contains one of these globbing characters: * ? [ ]
The bug becomes apparent:
On Cygwin if the glob-string contains backslashes as well, causing a warning (Cygwin >= 1.7):
MS-DOS style path detected: ...
Preferred POSIX equivalent is: ...
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
On Linux, using strace, you can see bash-completion doing an unnecessary `open' system call.
Steps to reproduce on Linux using `strace':
Environment: Linux, bash-completion-1.0
1. Start bash with bash-completion loaded and find out PID ($$):
$ echo $$
MYPID
2. In a second bash shell, `strace' the above PID:
$ strace -e trace=open -f -o strace.log -p MYPID
3. Within the first bash shell, type:
$ cur="?"; _kernel_versions
4. In the second bash shell, type ^C to quick `strace'.
5. Check `strace.log', here you can see bash accessing
something it shouldn't:
...
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
...
6. The above call to `open' disappears if $cur in _kernel_versions gets
quoted, and you repeat the steps above:
_kernel_versions()
{
COMPREPLY=( $( compgen -W '$( command ls /lib/modules )' -- "$cur" ) )
}
2009-09-25 09:36:29 +02:00
|
|
|
list $path 2>/dev/null | sed -e 's|\(.*\)|'$path'\1|')" -- "$cur" ) )
|
2006-03-01 09:45:03 +00:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
_filedir
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
return 0
|
2009-06-08 21:22:43 +03:00
|
|
|
} &&
|
2009-04-21 18:33:12 +02:00
|
|
|
complete -F _svk $filenames svk
|
2009-10-01 20:54:51 +03:00
|
|
|
|
|
|
|
# Local variables:
|
|
|
|
# mode: shell-script
|
|
|
|
# sh-basic-offset: 8
|
|
|
|
# sh-indent-comment: t
|
|
|
|
# indent-tabs-mode: t
|
|
|
|
# End:
|
|
|
|
# ex: ts=8 sw=8 noet filetype=sh
|