Package: svk
Version: 0.991-1
Severity: wishlist
Tags: patch
svk uses almost exactly the same commands as svn, but it had no
bash_completion. So, i took some time to create one quickly. Please
create a file called "svk" on /etc/bash_completion.d with the following
information:
=======++=== START CUT ===++=======
# Programmable completion for the svk command under bash.
# This file was inspired on svn bash_completion file
# Source this file to use it
# Known to work with bash 2.05a with programmable completion and extended
# pattern matching enabled (use 'shopt -s extglob progcomp' to enable
# these if they are not already enabled).
_svk()
{
local cur cmds cmdOpts pOpts mOpts rOpts qOpts nOpts optsParam opt
local helpCmds optBase i
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
# Possible expansions, without unambiguous abbreviations such as "up".
cmds='add blame annotate praise cat checkout co cleanup commit ci \
copy cp delete remove rm diff export help ? import info \
list ls log merge mkdir move mv rename \
propdel pdel propedit pedit propget pget \
proplist plist propset pset resolved revert \
status switch update --version'
if [[ $COMP_CWORD -eq 1 ]] ; then
COMPREPLY=( $( compgen -W "$cmds" -- $cur ) )
return 0
fi
# options that require a parameter
# note: continued lines must end '|' continuing lines must start '|'
optsParam="-r|--revision|--username|--password|--targets|
|-x|--extensions|-m|--message|-F|--file|--encoding|
|--diff-cmd|--diff3-cmd|--editor-cmd|--old|--new|
|--config-dir|--native-eol"
# if not typing an option, or if the previous option required a
# parameter, then fallback on ordinary filename expansion
helpCmds='help|--help|h|\?'
if [[ ${COMP_WORDS[1]} != @($helpCmds) ]] && \
[[ "$cur" != -* ]] || \
[[ ${COMP_WORDS[COMP_CWORD-1]} == @($optsParam) ]] ; then
return 0
fi
pOpts="--username --password --no-auth-cache --non-interactive"
mOpts="-m --message -F --file --encoding --force-log"
rOpts="-r --revision"
qOpts="-q --quiet"
nOpts="-N --non-recursive"
# possible options for the command
cmdOpts=
case ${COMP_WORDS[1]} in
--version)
cmdOpts="$qOpts"
;;
add)
cmdOpts="--auto-props --no-auto-props --force --targets \
$nOpts $qOpts"
;;
blame|annotate|ann|praise)
cmdOpts="$rOpts $pOpts -v --verbose"
;;
cat)
cmdOpts="$rOpts $pOpts"
;;
checkout|co)
cmdOpts="$rOpts $qOpts $nOpts $pOpts"
;;
cleanup)
cmdOpts="--diff3-cmd"
;;
commit|ci)
cmdOpts="$mOpts $qOpts $nOpts --targets --editor-cmd $pOpts"
;;
copy|cp)
cmdOpts="$mOpts $rOpts $qOpts --editor-cmd $pOpts"
;;
delete|del|remove|rm)
cmdOpts="--force $mOpts $qOpts --targets --editor-cmd $pOpts"
;;
diff|di)
cmdOpts="$rOpts -x --extensions --diff-cmd --no-diff-deleted \
$nOpts $pOpts --old --new --notice-ancestry"
;;
export)
cmdOpts="$rOpts $qOpts $pOpts --force --native-eol"
;;
help|h|\?)
cmdOpts="$cmds $qOpts"
;;
import)
cmdOpts="--auto-props --no-auto-props $mOpts $qOpts $nOpts \
--editor-cmd $pOpts"
;;
info)
cmdOpts="--targets -R --recursive"
;;
list|ls)
cmdOpts="$rOpts -v --verbose -R --recursive $pOpts"
;;
log)
cmdOpts="$rOpts -v --verbose --targets $pOpts --stop-on-copy \
--incremental --xml $qOpts"
;;
merge)
cmdOpts="$rOpts $nOpts $qOpts --force --dry-run --diff3-cmd \
$pOpts --ignore-ancestry"
;;
mkdir)
cmdOpts="$mOpts $qOpts --editor-cmd $pOpts"
;;
move|mv|rename|ren)
cmdOpts="$mOpts $rOpts $qOpts --force --editor-cmd $pOpts"
;;
propdel|pdel|pd)
cmdOpts="$qOpts -R --recursive $rOpts --revprop $pOpts"
;;
propedit|pedit|pe)
cmdOpts="$rOpts --revprop --encoding --editor-cmd $pOpts \
--force"
;;
propget|pget|pg)
cmdOpts="-R --recursive $rOpts --revprop --strict $pOpts"
;;
proplist|plist|pl)
cmdOpts="-v --verbose -R --recursive $rOpts --revprop $qOpts \
$pOpts"
;;
propset|pset|ps)
cmdOpts="-F --file $qOpts --targets -R --recursive --revprop \
--encoding $pOpts $rOpts --force"
;;
resolved)
cmdOpts="--targets -R --recursive $qOpts"
;;
revert)
cmdOpts="--targets -R --recursive $qOpts"
;;
status|stat|st)
cmdOpts="-u --show-updates -v --verbose $nOpts $qOpts $pOpts \
--no-ignore"
;;
switch|sw)
cmdOpts="--relocate $rOpts $nOpts $qOpts $pOpts --diff3-cmd"
;;
update|up)
cmdOpts="$rOpts $nOpts $qOpts $pOpts --diff3-cmd"
;;
*)
;;
esac
cmdOpts="$cmdOpts --help -h --config-dir"
# take out options already given
for (( i=2; i<=$COMP_CWORD-1; ++i )) ; do
opt=${COMP_WORDS[$i]}
case $opt in
--*) optBase=${opt/=*/} ;;
-*) optBase=${opt:0:2} ;;
esac
cmdOpts=" $cmdOpts "
cmdOpts=${cmdOpts/ ${optBase} / }
# take out alternatives and mutually exclusives
case $optBase in
-v) cmdOpts=${cmdOpts/ --verbose / } ;;
--verbose) cmdOpts=${cmdOpts/ -v / } ;;
-N) cmdOpts=${cmdOpts/ --non-recursive / } ;;
--non-recursive) cmdOpts=${cmdOpts/ -N / } ;;
-R) cmdOpts=${cmdOpts/ --recursive / } ;;
--recursive) cmdOpts=${cmdOpts/ -R / } ;;
-x) cmdOpts=${cmdOpts/ --extensions / } ;;
--extensions) cmdOpts=${cmdOpts/ -x / } ;;
-q) cmdOpts=${cmdOpts/ --quiet / } ;;
--quiet) cmdOpts=${cmdOpts/ -q / } ;;
-h) cmdOpts=${cmdOpts/ --help / } ;;
--help) cmdOpts=${cmdOpts/ -h / } ;;
-r) cmdOpts=${cmdOpts/ --revision / } ;;
--revision) cmdOpts=${cmdOpts/ -r / } ;;
--auto-props) cmdOpts=${cmdOpts/ --no-auto-props / } ;;
--no-auto-props) cmdOpts=${cmdOpts/ --auto-props / } ;;
-m|--message|-F|--file)
cmdOpts=${cmdOpts/ --message / }
cmdOpts=${cmdOpts/ -m / }
cmdOpts=${cmdOpts/ --file / }
cmdOpts=${cmdOpts/ -F / }
;;
esac
# skip next option if this one requires a parameter
if [[ $opt == @($optsParam) ]] ; then
((++i))
fi
done
COMPREPLY=( $( compgen -W "$cmdOpts" -- $cur ) )
return 0
}
complete -F _svk -o default svk
=======++=== END CUT ===++=======
-- System Information:
Debian Release: 3.1
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.12-rc3-desktop-1
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=ISO-8859-1) (ignored:
LC_ALL set to en_US)
Versions of packages svk depends on:
ii libalgorithm-annotate-perl 0.10-1 represent a series of changes in a
ii libalgorithm-diff-perl 1.19.01-1 a perl library for finding Longest
ii libclass-autouse-perl 1.17-1 Defer loading ( 'use'ing ) of a cl
ii libclone-perl 0.15-1 recursively copy Perl datatypes
ii libcompress-zlib-perl 1.34-1 Perl module for creation and manip
ii libdata-hierarchy-perl 0.21-1 Handle data in a hierarchical stru
ii libfile-type-perl 0.22-1 determine file type using magic st
ii libfreezethaw-perl 0.43-2 converting Perl structures to stri
ii libio-digest-perl 0.10-1 Calculate digests while reading or
ii libio-string-perl 1.05-1 Emulate IO::File interface for in-
ii liblocale-maketext-lexicon-pe 0.49-1 Lexicon-handling backends for "Loc
ii liblocale-maketext-simple-per 0.12-2 Simple interface to Locale::Makete
ii libperlio-eol-perl 0.13-1 PerlIO layer for normalizing line
ii libperlio-via-dynamic-perl 0.11-1 dynamic PerlIO layers
ii libperlio-via-symlink-perl 0.03-1 PerlIO layers for create symlinks
ii libpod-simple-perl 3.02-2 Perl framework for parsing files i
ii libregexp-shellish-perl 0.93-1 Shell-like regular expressions
ii libsvn-core-perl 1.1.4-1 perl bindings for Subversion (aka.
ii libsvn-mirror-perl 0.57-1 A subversion repository mirroring
ii libsvn-simple-perl 0.27-1 A simple interface for writing a d
ii libtext-diff-perl 0.35-2 Perform diffs on files and record
ii libtimedate-perl 1.1600-4 Time and date functions for Perl
ii libyaml-perl 0.38-2 YAML Ain't Markup Language (tm)
ii perl 5.8.4-8 Larry Wall's Practical Extraction
-- no debconf information
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]