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]

Reply via email to