diff options
author | David Paleino <d.paleino@gmail.com> | 2009-04-03 13:07:16 +0200 |
---|---|---|
committer | David Paleino <d.paleino@gmail.com> | 2009-04-03 13:07:16 +0200 |
commit | 96d00c3d7f1912d4f3f76f8ea21ef68d179b8b30 (patch) | |
tree | 1e956dc3b947bf1c80f661b27731775a5f7932ba /contrib | |
download | bash-completion-96d00c3d7f1912d4f3f76f8ea21ef68d179b8b30.tar.gz |
Imported Upstream version 1.0upstream/1.0
Diffstat (limited to 'contrib')
44 files changed, 3659 insertions, 0 deletions
diff --git a/contrib/_subversion b/contrib/_subversion new file mode 100644 index 00000000..5489f8a3 --- /dev/null +++ b/contrib/_subversion @@ -0,0 +1,426 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# svn completion +# +have svn && +{ +_svn() +{ + local cur prev commands options command + + COMPREPLY=() + cur=`_get_cword` + + commands='add blame praise annotate ann cat checkout co cleanup commit \ + ci copy cp delete del remove rm diff di export help ? h import \ + info list ls lock log merge mkdir move mv rename ren \ + propdel pdel pd propedit pedit pe propget pget pg \ + proplist plist pl propset pset ps resolved revert \ + status stat st switch sw unlock update up' + + 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 + --config-dir) + _filedir -d + return 0; + ;; + -@(F|-file|-targets)) + _filedir + return 0; + ;; + --encoding) + COMPREPLY=( $( compgen -W \ + '$( iconv --list | sed -e "s@//@@;" )' \ + -- "$cur" ) ) + return 0; + ;; + --@(editor|diff|diff3)-cmd) + COMP_WORDS=(COMP_WORDS[0] $cur) + COMP_CWORD=1 + _command + return 0; + ;; + esac + + command=${COMP_WORDS[1]} + + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + add) + options='--auto-props --no-auto-props \ + --force --targets --no-ignore \ + --non-recursive -N -q --quiet' + ;; + @(blame|annotate|ann|praise)) + options='-r --revisions --username \ + --password --no-auth-cache \ + --non-interactive -v \ + --verbose --incremental --xml' + ;; + cat) + options='-r --revision --username \ + --password --no-auth-cache \ + --non-interactive' + ;; + @(checkout|co)) + options='-r --revision -q --quiet -N \ + --non-recursive --username \ + --password --no-auth-cache \ + --non-interactive \ + --ignore-externals' + ;; + cleanup) + options='--diff3-cmd' + ;; + @(commit|ci)) + options='-m --message -F --file \ + --encoding --force-log -q \ + --quiet --non-recursive -N \ + --targets --editor-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive --no-unlock' + ;; + @(copy|cp)) + options='-m --message -F --file \ + --encoding --force-log -r \ + --revision -q --quiet \ + --editor-cmd -username \ + --password --no-auth-cache \ + --non-interactive' + ;; + @(delete|del|remove|rm)) + options='--force -m --message -F \ + --file --encoding --force-log \ + -q --quiet --targets \ + --editor-cmd -username \ + --password --no-auth-cache \ + --non-interactive' + ;; + @(diff|di)) + options='-r --revision -x --extensions \ + --diff-cmd --no-diff-deleted \ + -N --non-recursive --username \ + --password --no-auth-cache \ + --non-interactive --force \ + --old --new --notice-ancestry' + ;; + export) + options='-r --revision -q --quiet \ + --username --password \ + --no-auth-cache \ + --non-interactive -N \ + --non-recursive --force \ + --native-eol --ignore-externals' + ;; + import) + options='--auto-props --no-auto-props \ + -m --message -F --file \ + --encoding --force-log -q \ + --quiet --non-recursive \ + --no-ignore --editor-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive' + ;; + info) + options='--username --password \ + --no-auth-cache \ + --non-interactive -r \ + --revision --xml --targets \ + -R --recursive --incremental' + ;; + @(list|ls)) + options='-r --revision -v --verbose -R \ + --recursive --username \ + --password --no-auth-cache \ + --non-interactive \ + --incremental --xml' + ;; + lock) + options='-m --message -F --file \ + --encoding --force-log \ + --targets --force --username \ + --password --no-auth-cache \ + --non-interactive' + ;; + log) + options='-r --revision -v --verbose \ + --targets --username \ + --password --no-auth-cache \ + --non-interactive \ + --stop-on-copy --incremental \ + --xml -q --quiet --limit' + ;; + merge) + options='-r --revision -N \ + --non-recursive -q --quiet \ + --force --dry-run --diff3-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive \ + --ignore-ancestry' + ;; + mkdir) + options='-m --message -F --file \ + --encoding --force-log -q \ + --quiet --editor-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive' + ;; + @(move|mv|rename|ren)) + options='-m --message -F --file \ + --encoding --force-log -r \ + --revision -q --quiet \ + --force --editor-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive' + ;; + @(propdel|pdel|pd)) + options='-q --quiet -R --recursive -r \ + --revision --revprop \ + --username --password \ + --no-auth-cache \ + --non-interactive' + ;; + @(propedit|pedit|pe)) + options='-r --revision --revprop \ + --encoding --editor-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive --force' + ;; + @(propget|pget|pg)) + options='-R --recursive -r --revision \ + --revprop --strict --username \ + --password --no-auth-cache \ + --non-interactive' + ;; + @(proplist|plist|pl)) + options='-v --verbose -R --recursive \ + -r --revision --revprop -q \ + --quiet --username --password \ + --no-auth-cache \ + --non-interactive' + ;; + @(propset|pset|ps)) + options='-F --file -q --quiet \ + --targets -R --recursive \ + --revprop --encoding \ + --username --password \ + --no-auth-cache \ + --non-interactive -r \ + --revision --force' + ;; + resolved) + options='--targets -R --recursive -q \ + --quiet' + ;; + revert) + options='--targets -R --recursive -q \ + --quiet' + ;; + @(status|stat|st)) + options='-u --show-updates -v \ + --verbose -N --non-recursive \ + -q --quiet --username \ + --password --no-auth-cache \ + --non-interactive --no-ignore \ + --ignore-externals \ + --incremental --xml' + ;; + @(switch|sw)) + options='--relocate -r --revision -N \ + --non-recursive -q --quiet \ + --username --password \ + --no-auth-cache \ + --non-interactive --diff3-cmd' + ;; + unlock) + options='--targets --force --username \ + --password --no-auth-cache \ + --non-interactive' + ;; + @(update|up)) + options='-r --revision -N \ + --non-recursive -q --quiet \ + --username --password \ + --no-auth-cache \ + --non-interactive \ + --diff3-cmd --ignore-externals' + ;; + esac + options="$options --help -h --config-dir" + + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + else + if [[ "$command" == @(help|h|\?) ]]; then + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + else + _filedir + fi + fi + fi + + return 0 +} +complete -F _svn $filenames svn + +_svnadmin() +{ + local cur prev commands options mode + + COMPREPLY=() + cur=`_get_cword` + + commands='create deltify dump help ? hotcopy list-dblogs \ + list-unused-dblogs load lslocks lstxns recover rmlocks \ + rmtxns setlog verify' + + 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 + --config-dir) + _filedir -d + return 0; + ;; + --fs-type) + COMPREPLY=( $( compgen -W 'fsfs bdb' -- $cur ) ) + return 0; + ;; + esac + + command=${COMP_WORDS[1]} + + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + create) + options='--bdb-txn-nosync \ + --bdb-log-keep --config-dir \ + --fs-type' + ;; + deltify) + options='-r --revision -q --quiet' + ;; + dump) + options='-r --revision --incremental \ + -q --quiet --deltas' + ;; + hotcopy) + options='--clean-logs' + ;; + load) + options='--ignore-uuid --force-uuid \ + --parent-dir -q --quiet \ + --use-pre-commit-hook \ + --use-post-commit-hook' + ;; + rmtxns) + options='-q --quiet' + ;; + setlog) + options='-r --revision --bypass-hooks' + ;; + esac + + options="$options --help -h" + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + else + if [[ "$command" == @(help|h|\?) ]]; then + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + else + _filedir + fi + fi + fi + + return 0 +} +complete -F _svnadmin $default svnadmin + +_svnlook() +{ + local cur prev commands options mode + + COMPREPLY=() + cur=`_get_cword` + + commands='author cat changed date diff dirs-changed help ? h history \ + info lock log propget pget pg proplist plist pl tree uuid \ + youngest' + + if [[ $COMP_CWORD -eq 1 ]] ; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version' -- $cur ) ) + else + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + fi + else + command=${COMP_WORDS[1]} + + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + @(author|cat|date|dirs-changed|info|log)) + options='-r --revision -t \ + --transaction' + ;; + changed) + options='-r --revision -t \ + --transaction --copy-info' + ;; + diff) + options='-r --revision -t \ + --transaction \ + --no-diff-deleted \ + --no-diff-added \ + --diff-copy-from' + ;; + history) + options='-r --revision --show-ids' + ;; + prop@(get|list)) + options='-r --revision -t \ + --transaction --revprop' + ;; + tree) + options='-r --revision -t \ + --transaction --show-ids \ + --full-paths' + ;; + esac + + options="$options --help -h" + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + else + if [[ "$command" == @(help|h|\?) ]]; then + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + else + _filedir + fi + fi + fi + + return 0 +} +complete -F _svnlook $default svnlook +} diff --git a/contrib/apache2ctl b/contrib/apache2ctl new file mode 100644 index 00000000..8794b4a9 --- /dev/null +++ b/contrib/apache2ctl @@ -0,0 +1,18 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# apache2ctl(1) completion +# +have apache2ctl && { +_apache2ctl() { + local APWORDS + + COMPREPLY=() + cur=`_get_cword` + + APWORDS=$(apache2ctl 2>&1 >/dev/null | head -n1 | cut -f3 -d" " | tr "|" " ") + + COMPREPLY=( $( compgen -W "$APWORDS" -- "$cur" ) ) +} +complete -F _apache2ctl apache2ctl +} diff --git a/contrib/bitkeeper b/contrib/bitkeeper new file mode 100644 index 00000000..8e1cc3cd --- /dev/null +++ b/contrib/bitkeeper @@ -0,0 +1,20 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# BitKeeper completion adapted from code by Bart Trojanowski <bart@jukie.net> + +_bk() { + local BKCMDS + + COMPREPLY=() + cur=`_get_cword` + + BKCMDS="$( bk help topics | grep '^ bk' | cut -d ' ' -f 4 | \ + xargs echo )" + + COMPREPLY=( $( compgen -W "$BKCMDS" -- "$cur" ) ) + _filedir + + return 0 +} +complete -F _bk bk diff --git a/contrib/bittorrent b/contrib/bittorrent new file mode 100644 index 00000000..a240d47c --- /dev/null +++ b/contrib/bittorrent @@ -0,0 +1,38 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# btdownloadheadless(1) completion by Guillaume Rousse <rousse@ccr.jussieu.fr> + +_btdownload() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + --@(responsefile|saveas)) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--max_uploads --keepalive_interval \ + --download_slice_size --request_backlog \ + --max_message_length --ip --minport --maxport \ + --responsefile --url --saveas --timeout \ + --timeout_check_interval --max_slice_length \ + --max_rate_period --bind --upload_rate_fudge \ + --display_interval --rerequest_interval \ + --min_peers --http_timeout --max_initiate \ + --max_allow_in --check_hashes \ + --max_upload_rate --snub_time --spew \ + --rarest_first_cutoff --min_uploads \ + --report_hash_failures' -- $cur ) ) + else + _filedir + fi +} +complete -F _btdownload btdownloadheadless.py btdownloadcurses.py btdownloadgui.py diff --git a/contrib/brctl b/contrib/brctl new file mode 100644 index 00000000..1ecdc127 --- /dev/null +++ b/contrib/brctl @@ -0,0 +1,44 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for brctl + +have brctl && +_brctl() +{ + local cur command + + COMPREPLY=() + cur=`_get_cword` + command=${COMP_WORDS[1]} + + case $COMP_CWORD in + 1) + COMPREPLY=( $( compgen -W "addbr delbr addif delif \ + setageing setbridgeprio setfd sethello \ + setmaxage setpathcost setportprio show \ + showmacs showstp stp" -- $cur ) ) + ;; + 2) + case $command in + show) + ;; + *) + COMPREPLY=( $( compgen -W "$(brctl \ + show | sed '1d' | \ + awk '{print $1}' )" -- $cur ) ) + esac + ;; + 3) + case $command in + @(add|del)if) + _configured_interfaces + ;; + stp) + COMPREPLY=( $( compgen -W 'on off' -- $cur ) ) + ;; + esac + ;; + esac +} && +complete -F _brctl $default brctl diff --git a/contrib/cksfv b/contrib/cksfv new file mode 100644 index 00000000..f759e9ee --- /dev/null +++ b/contrib/cksfv @@ -0,0 +1,30 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# cksfv completion by Chris <xris@forevermore.net> + +_cksfv() +{ + COMPREPLY=() + cur=`_get_cword` + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W '-C -f -i -q -v' -- $cur ) ) + return 0 + fi + + case "${COMP_WORDS[$COMP_CWORD-1]}" in + -C) + _filedir -d + return 0 + ;; + -f) + _filedir 'sfv' + return 0 + ;; + esac + + _filedir + return 0 +} +complete -F _cksfv cksfv diff --git a/contrib/clisp b/contrib/clisp new file mode 100644 index 00000000..6c6d9b63 --- /dev/null +++ b/contrib/clisp @@ -0,0 +1,26 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash brogrammable completion for various Common Lisp implementations by +# Nikodemus Siivola <nikodemus@random-state.net> + +_clisp() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h --help --version --license -B -K \ + -M -m -L -N -E -q --quiet --silent -w -I -ansi \ + -traditional -p -C -norc -i -c -l -o -x ' \ + -- $cur ) ) + else + _filedir + fi + + return 0 +} +complete -F _clisp $default clisp diff --git a/contrib/cowsay b/contrib/cowsay new file mode 100644 index 00000000..d9f8bc46 --- /dev/null +++ b/contrib/cowsay @@ -0,0 +1,26 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for cowsay + +have cowsay && +_cowsay() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -f) + COMPREPLY=( $( cowsay -l | tail -n +2 | tr " " "\n" | grep "^$cur" ) ) + return 0 + ;; + esac + + # relevant options completion + COMPREPLY=( $( compgen -W '-b -d -g -p -s -t -w -y -e -f -h -l -n -T -W' -- $cur ) ) + +} && +complete -F _cowsay $default cowsay cowthink diff --git a/contrib/cpan2dist b/contrib/cpan2dist new file mode 100644 index 00000000..caec18fa --- /dev/null +++ b/contrib/cpan2dist @@ -0,0 +1,45 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for cpan2dist + +have cpan2dist && +_cpan2dist() +{ + local cur prev packagelist cpandirs + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + --format) + # should remove ":" from COMP_WORDBREAKS, but doesn't work (?) + COMPREPLY=( $( compgen -W '$(perl -MCPANPLUS::Dist -e "print map { \"\$_\n\" } CPANPLUS::Dist->dist_types")' -- "$cur" ) ) + return 0 + ;; + --@(banlist|ignorelist|modulelist|logfile)) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --skiptest --force --install \ + --verbose --keepsource --makefile --buildprereq \ + --archive --flushcache --defaults --edit-metafile \ + --format --ban --banlist --ignore --ignorelist \ + --modulelist --logfile --timeout --set-config \ + --set-program --dist-opts --default-banlist \ + --default-ignorelist' -- $cur ) ) + else + cpandirs=( "$HOME/.cpanplus/" "$HOME/.cpan/source/modules/" ) + for dir in ${cpandirs[@]}; do + [ -d "$dir" -a -r "$dir/02packages.details.txt.gz" ] && packagelist="$dir/02packages.details.txt.gz" + done + COMPREPLY=( $( zgrep "^${cur//-/::}" \ + $packagelist 2>/dev/null \ + | awk '{print $1}' | sed -e 's/::/-/g' ) ) + fi +} && +complete -F _cpan2dist $default cpan2dist diff --git a/contrib/dsniff b/contrib/dsniff new file mode 100644 index 00000000..614005a2 --- /dev/null +++ b/contrib/dsniff @@ -0,0 +1,272 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# dsniff util completion by Guillaume Rousse <rousse@ccr.jussieu.fr> + +# arpspoof(8) completion +# +_arpspoof() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -i) + _interfaces + return 0 + ;; + -t) + _known_hosts + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -t' -- $cur ) ) + else + _known_hosts + fi + +} +complete -F _arpspoof arpspoof + +# dnsspoof(8) completion +# +_dnsspoof() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -i) + _interfaces + return 0 + ;; + -f) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -f' -- $cur ) ) + fi + +} +complete -F _dnsspoof dnsspoof + +# dsniff(8) completion +# +_dsniff() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(r|w|f)) + _filedir + return 0 + ;; + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c -d -m -n -i -s -f -t \ + -r -w' -- $cur ) ) + fi + +} +complete -F _dsniff dsniff + +# filesnarf(8), mailsnarf(8) and msgsnarf (8) completion +# +_snarf() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -v' -- $cur ) ) + fi + +} +complete -F _snarf filesnarf mailsnarf msgsnarf + +# macof(8) completion +# +_macof() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -i) + _interfaces + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -s -d -e -x -y -n' -- $cur ) ) + fi + +} +complete -F _macof macof + +# sshmitm(8) completion +# +_sshmitm() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d -I -p' -- $cur ) ) + else + _known_hosts + fi + +} +complete -F _sshmitm sshmitm + +# sshow(8) completion +# +_sshow() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d -i' -- $cur ) ) + fi + +} +complete -F _sshow sshow + +# tcpkill(8) completion +# +_tcpkill() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -1 -2 -3 -4 -5 -6 -7 -8 -9' -- $cur ) ) + fi + +} +complete -F _tcpkill tcpkill + +# tcpnice(8) completion +# +_tcpnice() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A -I -M -i' -- $cur ) ) + fi + +} +complete -F _tcpnice tcpnice + +# urlsnarf(8) completion +# +_urlsnarf() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-n -i -v' -- $cur ) ) + fi + +} +complete -F _urlsnarf urlsnarf + +# webmitm(8) completion +# +_webmitm() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d' -- $cur ) ) + else + _known_hosts + fi + +} +complete -F _webmitm webmitm diff --git a/contrib/freeciv b/contrib/freeciv new file mode 100644 index 00000000..0a5cf359 --- /dev/null +++ b/contrib/freeciv @@ -0,0 +1,64 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# civserver completion by Guillaume Rousse <rousse@ccr.jussieu.fr> + +_civserver() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(f|g|l|r|-file|-log|-gamelog|-read)) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d -f -g -h -i -l -m -M -p -q -r -v\ + --debug --file --gamelog --help --info --log --meta \ + --Metaserver --port --quitidle --read --version' \ + -- $cur ) ) + fi + +} +complete -F _civserver civserver + +# civclient completion by Guillaume Rousse <rousse@ccr.jussieu.fr> +# +_civclient() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(l|S|t|-log|-Sound|-tiles)) + _filedir + return 0 + ;; + -@(P|-Plugin)) + COMPREPLY=( $( compgen -W 'none esd sdl' -- $cur ) ) + return 0 + ;; + -@(s|-server)) + _known_hosts + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -d -h -l -m -n -p -P -s -S -t -v\ + --autoconnect --debug --help --log --meta --name \ + --port --Plugin --server --Sound --tiles --version' \ + -- $cur ) ) + fi + +} +complete -F _civclient civclient diff --git a/contrib/gcl b/contrib/gcl new file mode 100644 index 00000000..dd4f25e0 --- /dev/null +++ b/contrib/gcl @@ -0,0 +1,25 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash programmable completion for various Common Lisp implementations by +# Nikodemus Siivola <nikodemus@random-state.net> + +_gcl() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-eval -load -f -batch -dir -libdir \ + -compile -o-file -c-file -h-file -data-file -system-p '\ + -- $cur ) ) + else + _filedir + fi + + return 0 +} +complete -F _gcl -o default gcl diff --git a/contrib/gkrellm b/contrib/gkrellm new file mode 100644 index 00000000..43603b10 --- /dev/null +++ b/contrib/gkrellm @@ -0,0 +1,37 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# gkrellm(1) completion by Guillaume Rousse <rousse@ccr.jussieu.fr> + +_gkrellm() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(t|-theme)) + _filedir -d + return 0 + ;; + -@(p|-plugin)) + _filedir 'so' + return 0 + ;; + -@(s|-server)) + _known_hosts + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help -t --theme -s --server \ + -g --geometry -wm -w --withdrawn -c --config -nc \ + -f --force-host-config -demo -p --plugin -P \ + --port' -- $cur ) ) + fi + +} +complete -F _gkrellm gkrellm gkrellm2 diff --git a/contrib/gnatmake b/contrib/gnatmake new file mode 100644 index 00000000..e4d4e41f --- /dev/null +++ b/contrib/gnatmake @@ -0,0 +1,32 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# Gnatmake completion by Ralf_Schroth@t-online.de (Ralf Schroth) + +_gnatmake() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + # relevant (and less relevant ;-) )options completion + COMPREPLY=( $( compgen -W '-a -c -f -i -j -k -m -M -n -o \ + -q -s -v -z -aL -A -aO -aI -I -I- -L -nostdinc \ + -nostdlib -cargs -bargs -largs -fstack-check \ + -fno-inline -g -O1 -O0 -O2 -O3 -gnata -gnatA \ + -gnatb -gnatc -gnatd -gnatD -gnate -gnatE \ + -gnatf -gnatF -gnatg -gnatG -gnath -gnati \ + -gnatk -gnatl -gnatL -gnatm -gnatn -gnato \ + -gnatO -gnatp -gnatP -gnatq -gnatR -gnats \ + -gnatt -gnatT -gnatu -gnatU -gnatv -gnatws \ + -gnatwe -gnatwl -gnatwu -gnatW -gnatx -gnatX \ + -gnaty -gnatz -gnatZ -gnat83' -- $cur ) ) + else + # source file completion + _filedir '@(adb|ads)' + + fi +} +complete -F _gnatmake -o filenames gnatmake diff --git a/contrib/gpg2 b/contrib/gpg2 new file mode 100644 index 00000000..c41aa0af --- /dev/null +++ b/contrib/gpg2 @@ -0,0 +1,44 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# gpg2(1) completion +# +have gpg2 && { +_gpg2 () +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + --homedir) + _filedir -d + return 0 + ;; + -@(s|-sign|-clearsign|-options|-decrypt)) + _filedir + return 0 + ;; + --@(export|@(?(l|nr|nrl)sign|edit)-key)) + # return list of public keys + COMPREPLY=( $( compgen -W "$( gpg2 --list-keys 2>/dev/null | sed -ne 's@^pub.*/\([^ ]*\).*$@\1@p;s@^.*\(<\([^>]*\)>\).*$@\2@p')" -- "$cur" )) + return 0 + ;; + -@(r|-recipient)) + COMPREPLY=( $( compgen -W "$( gpg2 --list-keys 2>/dev/null | sed -ne 's@^.*<\([^>]*\)>.*$@\1@p')" -- "$cur" )) + if [ -e ~/.gnupg/gpg.conf ]; then + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$( sed -ne 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' ~/.gnupg/gpg.conf)" -- "$cur")) + fi + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-s -b -e -c -d -k -K -a -r -u -z -o -v \ + -n -N -i -h -R -t $(gpg2 --dump-options)' -- $cur ) ) + fi +} && +complete -F _gpg2 $default gpg2 +} diff --git a/contrib/harbour b/contrib/harbour new file mode 100644 index 00000000..0d111bd1 --- /dev/null +++ b/contrib/harbour @@ -0,0 +1,8 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# harbour completion by Dave Pearson <davep@davep.org> +# http://www.harbour-project.org/ + +complete -f -X '!*.@([Pp][Rr][Gg]|[Cc][Ll][Pp])' harbour gharbour hbpp +complete -f -X '!*.[Hh][Rr][Bb]' hbrun diff --git a/contrib/isql b/contrib/isql new file mode 100644 index 00000000..fd66af58 --- /dev/null +++ b/contrib/isql @@ -0,0 +1,13 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# isql completion by Victor Bogado da Silva Lins <victor@bogado.net> + +_isql() +{ + local cur + cur=`_get_cword` + + [ -f "$ODBCINI" ] && COMPREPLY=( $( grep \\[$cur "$ODBCINI" | tr -d \\[\\] ) ) +} +complete -F _isql isql diff --git a/contrib/larch b/contrib/larch new file mode 100644 index 00000000..3ec04014 --- /dev/null +++ b/contrib/larch @@ -0,0 +1,39 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# larch(1) completion by Alex Shinn <foof@synthcode.com> + +_larch() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [ $COMP_CWORD -eq 1 ] || [[ "$prev" == -* ]]; then + COMPREPLY=( $( compgen -W ' \ +my-id my-default-archive register-archive whereis-archive archives \ +init-tree tree-root tree-version set-tree-version inventory tagging-method \ +tree-lint missing-tags add delete move explicit-default set-manifest \ +manifest check-manifest mkpatch dopatch patch-report empty-patch \ +make-archive make-category make-branch make-version categories \ +branches versions revisions cat-archive-log archive-cache-revision \ +archive-cached-revisions archive-uncache-revision category-readme \ +branch-readme version-readme make-log logs add-log log-ls cat-log \ +log-header-field changelog log-for-merge merge-points new-on-branch \ +import commit get get-patch lock-branch lock-revision push-mirror \ +build-config update-config replay-config record-config show-config \ +config-history update replay delta-patch star-merge tag prepare-branch \ +finish-branch join-branch whats-missing what-changed file-diffs pristines \ +lock-pristine my-revision-library library-find library-add library-remove \ +library-archives library-categories library-branches library-versions \ +library-revisions library-log library-file touched-files-prereqs \ +patch-set-web update-distributions distribution-name notify my-notifier \ +mail-new-categories mail-new-branches mail-new-versions mail-new-revisions \ +notify-library notify-browser push-new-revisions sendmail-mailx' $cur )) + fi + + return 0 +} +complete -F _larch -o default larch diff --git a/contrib/lilypond b/contrib/lilypond new file mode 100644 index 00000000..9c523efd --- /dev/null +++ b/contrib/lilypond @@ -0,0 +1,6 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# lilypond completion by Laurent Martelli <laurent@bearteam.org> + +complete -f -X '!*.ly' lilypond ly2dvi diff --git a/contrib/lisp b/contrib/lisp new file mode 100644 index 00000000..be8e1f92 --- /dev/null +++ b/contrib/lisp @@ -0,0 +1,26 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash programmable completion for various Common Lisp implementations by +# Nikodemus Siivola <nikodemus@random-state.net> + +_lisp() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-core -lib -batch -quit -edit -eval -init \ + -dynamic-space-size -hinit -noinit -nositeinit -load \ + -slave ' \ + -- $cur ) ) + else + _filedir + fi + + return 0 +} +complete -F _lisp -o default lisp diff --git a/contrib/lzma b/contrib/lzma new file mode 100644 index 00000000..99005bc8 --- /dev/null +++ b/contrib/lzma @@ -0,0 +1,42 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# lzma(1) completion by Per Øyvind Karlsen <peroyvind@mandriva.org> +# +have lzma && +_lzma() +{ + local cur prev xspec + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c -d -f -h -k -L -q -s \ + -v -V -z -1 -2 -3 -4 -5 -6 -7 -8 -9 \ + --help --decompress --compress --keep --force \ + --test --stdout --quiet --verbose --license \ + --version --small --fast --best --text' -- $cur ) ) + return 0 + fi + + local IFS=$'\t\n' + + xspec="*.lzma" + if [[ "$prev" == --* ]]; then + [[ "$prev" == --decompress || \ + "$prev" == --list || \ + "$prev" == --test ]] && xspec="!"$xspec + [[ "$prev" == --compress ]] && xspec= + elif [[ "$prev" == -* ]]; then + [[ "$prev" == -*[dt]* ]] && xspec="!"$xspec + [[ "$prev" == -*z* ]] && xspec= + fi + + _expand || return 0 + + COMPREPLY=( $( compgen -f -X "$xspec" -- $cur ) \ + $( compgen -d -- $cur ) ) +} && +complete -F _lzma $filenames lzma diff --git a/contrib/lzop b/contrib/lzop new file mode 100644 index 00000000..59a7a429 --- /dev/null +++ b/contrib/lzop @@ -0,0 +1,53 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# lzop(1) completion + +have lzop && +_lzop() +{ + local cur prev xspec + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # TODO: -p: takes a dir argument, without a separating space + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d -x -l -t -h -I -V -L -1 -2 -3 \ + -4 -5 -6 -7 -8 -9 -q -v -c -f -F -n -N -P -k -U -o \ + -S --fast --best --decompress --uncompress --extract \ + --test --list --ls --info --sysinfo --license --help \ + --version --stdout --to-stdout --output --path \ + --force --no-checksum --no-name --name --no-mode \ + --no-time --suffix --keep --unlink --delete --crc32 \ + --no-warn --ignore-warn --quiet --silent --verbose \ + --no-stdin --filter --checksum --no-color --mono \ + --color' -- $cur ) ) + return 0 + fi + + case "$prev" in + -o|--output) _filedir ; return 0 ;; + --path) _filedir -d ; return 0 ;; + -S|--suffix) return 0 ;; + esac + + xspec="*.?(t)lzo" + case "$prev" in + --@(@(de|un)compress|extract|list|ls|info|test)) + xspec="!"$xspec ;; + --force) xspec= ;; + --*) ;; + -*f*|'<'|'>') xspec= ;; + -*[dltx]*) xspec="!"$xspec ;; + esac + + _expand || return 0 + + local IFS=$'\t\n' + COMPREPLY=( $( compgen -f -X "$xspec" -- $cur ) \ + $( compgen -d -- $cur ) ) +} && +complete -F _lzop $filenames lzop diff --git a/contrib/mailman b/contrib/mailman new file mode 100644 index 00000000..45b7db36 --- /dev/null +++ b/contrib/mailman @@ -0,0 +1,533 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# Mailman completion by Guillaume Rousse <rousse@ccr.jussieu.fr> + +_mailman_lists() +{ + COMPREPLY=( $( list_lists -b | grep "^$cur") ) +} + +_add_members() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(r|d|-regular-members-file=|-digest-members-file=)) + _filedir + return 0 + ;; + -@(w|a|-welcome-msg=|-admin-notify=)) + COMPREPLY=( $( compgen -W 'y n' -- $cur) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--regular-members-file= -r \ + --digest-members-file= -d --welcome-msg= -w \ + --admin-notify= -a --help -h' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _add_members add_members + +_remove_members() +{ + + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(f|-file=)) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--file= -f --all -a \ + --fromall --nouserack -n --noadminack -N \ + --help -h' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _remove_members remove_members + +_find_member() +{ + + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(l|x|-listname=|-exclude=)) + _mailman_lists + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-l --listname= -x \ + --exclude= --owners -w --help -h' -- $cur ) ) + fi + +} +complete -F _find_member find_member + +_clone_member() +{ + + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(l|-listname=)) + _mailman_lists + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-l --listname= --remove -r \ + --admin -a --quiet -q --nomodify -n --help -h' -- $cur ) ) + fi + +} +complete -F _clone_member clone_member + +_sync_members() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(w|g|d|--welcome-msg=|-goodbye-msg|-digest=)) + COMPREPLY=( $( compgen -W 'y n' -- $cur) ) + return 0 + ;; + -@(d|-file)) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--no-change -n --welcome-msg= -w \ + --goodbye-msg= -g --digest= -d --notifyadmin= -a \ + -f --file -h --help' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _sync_members sync_members + +_list_lists() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --advertised \ + --virtual-host-overview= -V -b --bare \ + -h --help' -- $cur ) ) + fi + +} +complete -F _list_lists list_lists + +_unshunt() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h --help' -- $cur ) ) + else + _filedir -d + fi + +} +complete -F _unshunt unshunt + +_list_admins() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all-vhost= -v \ + --all -a -h --help' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _list_admins list_admins + +_list_owners() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-w --with-listnames \ + -m --moderators -h --help' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _list_owners list_owners + +_list_members() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(o|-output)) + _filedir + return 0 + ;; + -@(d|-digest=)) + COMPREPLY=( $( compgen -W 'mime plain' -- $cur) ) + return 0 + ;; + -@(n|-nomail=)) + COMPREPLY=( $( compgen -W 'byadmin byuser bybounce unknown' -- $cur) ) + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--output -o --regular -r \ + --digest= -d --nomail= -n --fullnames -f \ + --preserve -p -h --help' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _list_members list_members + +_change_pw() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(l|-listname=)) + _mailman_lists + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --all --domain= -d --listname= -l \ + --password= -p --quiet -q -h --help' -- $cur ) ) + fi + +} +complete -F _change_pw change_pw + +_withlist() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-l --lock -i --interactive \ + -r --run -a --all -q --quiet -h --help' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _withlist withlist + +_newlist() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-l --language -q --quiet -h --help' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _newlist newlist + +_rmlist() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--archives -a \ + -h --help' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _rmlist rmlist + +_config_list() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(i|o|-inputfile|-outputfile)) + _filedir + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--inputfile -i --outputfile -o \ + --checkonly -c --verbose -v -h --help' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _config_list $filenames config_list + +_arch() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(w|g|d|--welcome-msg=|-goodbye-msg|-digest=)) + COMPREPLY=( $( compgen -W 'y n' -- $cur) ) + return 0 + ;; + -@(d|-file)) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--wipe -s --start= -e --end= \ + -q --quiet -h --help' -- $cur ) ) + else + args=$COMP_CWORD + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -* ]]; then + args=$(($args-1)) + fi + done + case $args in + 1) + _mailman_lists + ;; + 2) + _filedir + ;; + esac + fi + +} +complete -F _arch $filenames arch + +_cleanarch() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-s --status -n --dry-run \ + -q --quiet -h --help' -- $cur ) ) + fi + +} +complete -F _cleanarch cleanarch + +_inject() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(l|-listname=)) + _mailman_lists + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-l --listname= -q --queue= \ + -h --help' -- $cur ) ) + else + _filedir + fi + +} +complete -F _inject $filenames inject + +_dumpdb() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--marshal -m --pickle -p --noprint -n -h --help' -- $cur ) ) + else + _filedir + fi + +} +complete -F _dumpdb $filenames dumpdb + +_check_db() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all -a --verbose -v \ + -h --help' -- $cur ) ) + else + _mailman_lists + fi + +} +complete -F _check_db check_db + +_check_perms() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-f -v -h' -- $cur ) ) + fi + +} +complete -F _check_perms check_perms + +_genaliases() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-q --quiet -h --help' -- $cur ) ) + fi + +} +complete -F _genaliases genaliases + +_mmsitepass() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c --listcreator -h --help' -- $cur ) ) + fi + +} +complete -F _mmsitepass mmsitepass + +_qrunner() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-r --runner= --once -o \ + -l --list -v --verbose -s --subproc -h --help' -- $cur ) ) + fi + +} +complete -F _qrunner qrunner + +_mailmanctl() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-n --no-restart -u --run-as-user \ + -s --stale-lock-cleanup --quiet -q -h --help' -- $cur ) ) + else + COMPREPLY=( $( compgen -W 'start stop restart reopen' -- $cur ) ) + fi + +} +complete -F _mailmanctl mailmanctl diff --git a/contrib/mcrypt b/contrib/mcrypt new file mode 100644 index 00000000..81f5d8b3 --- /dev/null +++ b/contrib/mcrypt @@ -0,0 +1,80 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# mcrypt(1) completion by Ariel Fermani <the_end@bbs.frc.utn.edu.ar> + +_mcrypt() +{ + local cur prev i decrypt + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(g|-openpgp-z)) + COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' \ + -- $cur ) ) + return 0 + ;; + -@(o|-keymode)) + COMPREPLY=( $( mcrypt --list-keymodes 2> /dev/null | + grep "^$cur" ) ) + return 0 + ;; + -@(m|-mode)) + COMPREPLY=( $( mcrypt --list 2> /dev/null | + sed -e 's/.*: //' -e 's/ $//' | sort | + uniq | tr " " "\n" | grep "^$cur" ) ) + return 0 + ;; + -@(a|-algorithm)) + COMPREPLY=( $( mcrypt --list 2> /dev/null | + awk '{print $1}' | grep "^$cur" ) ) + return 0 + ;; + -@(h|-hash)) + COMPREPLY=( $( mcrypt --list-hash 2> /dev/null | + sed 1d | grep "^$cur" ) ) + return 0 + ;; + -@(k|s|-@(key?(size)))) + return 0 + ;; + -@(f|c|-@(keyfile|config))) + _filedir + return 0 + ;; + --@(algorithm|mode)s-directory) + _filedir -d + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-g --openpgp --openpgp-z -d \ + --decrypt -s --keysize -o --keymode -f --keyfile \ + -c --config -a --algorithm --algorithms-directory \ + -m --mode --modes-directory -h --hash -k --key \ + --noiv -b --bare -z --gzip -p --bzip2 --flush -l \ + --doublecheck -u --unlink --nodelete -t --time -F \ + --force --echo -r --random --list --list-keymodes \ + --list-hash -V --verbose -q --quiet --help -v \ + --version -L --license' -- $cur ) ) + elif [[ ${COMP_WORDS[0]} == mdecrypt ]]; then + _filedir '@(nc)' + else + decrypt=0 + for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == -@(d|-decrypt) ]]; then + _filedir '@(nc)' + decrypt=1 + break + fi + done + if [[ $decrypt -eq 0 ]]; then + _filedir + fi + fi +} +complete -o filenames -F _mcrypt mcrypt mdecrypt diff --git a/contrib/minicom b/contrib/minicom new file mode 100644 index 00000000..dcc4b5f2 --- /dev/null +++ b/contrib/minicom @@ -0,0 +1,46 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for minicom + +have minicom && +_minicom() +{ + local cur prev confdir + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -@(a|c)) + COMPREPLY=( $( compgen -W 'on off' -- $cur ) ) + return 0 + ;; + -@(S|C)) + _filedir + return 0 + ;; + -P) + COMPREPLY=( $( command ls /dev/tty* ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]} ${COMPREPLY[@]#/dev/}' -- $cur ) ) + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-s -o -m -M -z -l -L -w -a -t \ + -c -S -d -p -C -T -7 -8' -- $cur ) ) + return 0 + else + [ -n "$( command ls /etc/minirc.* 2>/dev/null)" ] && confdir=/etc + [ -n "$( command ls /etc/minicom/minirc.* 2>/dev/null)" ] && confdir=/etc/minicom + if [ -n "$confdir" ]; then + COMPREPLY=( $( compgen -W '$( command ls $confdir/minirc.* | \ + sed -e "s|$confdir/minirc.||")' -- $cur ) ) + return 0 + fi + fi +} && +complete -F _minicom $default minicom diff --git a/contrib/modules b/contrib/modules new file mode 100644 index 00000000..9218d0b8 --- /dev/null +++ b/contrib/modules @@ -0,0 +1,84 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# module completion by Ted Stern <stern@cray.com> +# +# Completion for Environment Modules `module' alias. +# +# See http://sourceforge.net/projects/modules/ +# http://modules.sourceforge.net/ +# +# There are several versions of modules that are commonly used. Older +# Cray UNICOS systems and many other sites use 2.2.2b. The latest GPL'd +# version is 3.1.6. But the module alias is somewhat self-documenting +# via the `module help' command, so use that to print the options. +# +# Programmable completion might be more difficult under tcsh since the +# module command is an alias, and the `module avail' command returns +# its output as stderr. + +type module &>/dev/null && { + +_module_list () +{ + local modules="$( echo $LOADEDMODULES | sed 's/:/ /g' | sort )" + compgen -W "$modules" -- $1 +} + +_module_path () +{ + local modules="$( echo $MODULEPATH | sed 's/:/ /g' | sort )" + compgen -W "$modules" -- $1 +} + +_module_avail () +{ + local modules="$( \ + module avail 2>&1 | \ + egrep -v '^(-|$)' | \ + xargs printf '%s\n' | sort )" + + compgen -W "$modules" -- $1 +} + +# A completion function for the module alias +_module () { + local cur prev options + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [ $COMP_CWORD -eq 1 ] ; then + # First parameter on line -- we expect it to be a mode selection + + options="$( module help 2>&1 | egrep '^[[:space:]]*\+' | \ + awk '{print $2}' | sed -e 's/|/ /g' | sort )" + + COMPREPLY=( $(compgen -W "$options" -- $cur) ) + + elif [ $COMP_CWORD -eq 2 ] ; then + + case "$prev" in + @(add|display|help|load|show|whatis)) + COMPREPLY=( $(_module_avail $cur) ) + ;; + + @(rm|switch|swap|unload|update)) + COMPREPLY=( $(_module_list $cur) ) + ;; + unuse) + COMPREPLY=( $(_module_path $cur) ) + ;; + esac + elif [ $COMP_CWORD -eq 3 ] ; then + case ${COMP_WORDS[1]} in + @(sw?(ap|itch))) + COMPREPLY=( $(_module_avail $cur) ) + ;; + esac + fi + return 0 +} +complete -o default -F _module module +} diff --git a/contrib/monodevelop b/contrib/monodevelop new file mode 100644 index 00000000..3d8430cb --- /dev/null +++ b/contrib/monodevelop @@ -0,0 +1,97 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# Monodevelop completion +# +have monodevelop && +_monodevelop() +{ + local cur + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-? -help \ + -help2 \ + -ipc-tcp \ + -newwindow \ + -nologo \ + -usage \ + -V -version' -- "$cur" ) ) + else + _filedir + fi + return 0 +} && +complete -F _monodevelop monodevelop + +have mdtool && +_mdtool() +{ + local cur prev command i + + COMPREPLY=() + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(build|generate-makefiles|setup) ]]; then + command=${COMP_WORDS[i]} + fi + done + + if [[ -n "$command" ]]; then + case $command in + "build") + COMPREPLY=( $( compgen -W '--f --buildfile --p --project' -S":" -- "$cur" ) ) + # TODO: This does not work :( + #if [[ "$prev" == *: ]]; then + # case "$prev" in + # @(--p:|--project:)) + # COMPREPLY=( $( compgen -f -G "*.mdp" -- "$cur" ) ) + # ;; + # @(--f:|--buildfile:)) + # COMPREPLY=( $( compgen -f -G "*.mdp" -G "*.mds" -- "$cur" ) ) + # ;; + # esac + #fi + return 0 + ;; + "generate-makefiles") + COMPREPLY=( $( compgen $filenames -G"*.mds" -- "$cur" ) ) + if [[ "$prev" == *mds ]]; then + COMPREPLY=( $( compgen -W '--simple-makefiles --s --d:' -- "$cur" ) ) + fi + return 0 + ;; + "setup") + # TODO: at least return filenames after these options. + COMPREPLY=( $( compgen -W 'install i \ + uninstall u \ + check-install ci \ + update up \ + list l \ + list-av la \ + list-update lu \ + rep-add ra \ + rep-remove rr \ + rep-update ru \ + rep-list rl \ + reg-update reg-build rgu \ + info \ + rep-build rb \ + pack p \ + help h \ + dump-file' -- "$cur" ) ) + return 0 + ;; + esac + fi + + COMPREPLY=( $( compgen -W 'gsetup build dbgen project-export \ + generate-makefiles gettext-update \ + setup -q' -- "$cur" ) ) + + return 0 +} && +complete -F _mdtool $filenames mdtool diff --git a/contrib/mtx b/contrib/mtx new file mode 100644 index 00000000..82652054 --- /dev/null +++ b/contrib/mtx @@ -0,0 +1,46 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# mtx completion by Jon Middleton <jjm@ixtab.org.uk> + +_mtx() +{ + local cur prev options tapes drives + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + options="-f nobarcode invert noattach --version inquiry noattach \ + inventory status load unload eepos first last next" + + tapes=$(mtx status | \ + awk '/Storage Element [0-9]+:Full/ { printf "%s ", $3 }') + tapes=${tapes//:Full} + + drives=$(mtx status | \ + awk '/Data Transfer Element [0-9]+:(Full|Empty)/ { printf "%s ", $4 }') + drives=${drives//:Full} + drives=${drives//:Empty} + + if [ $COMP_CWORD -gt 1 ]; then + case $prev in + load) + COMPREPLY=( $( compgen -W "$tapes" -- $cur ) ) + ;; + unload|first|last|next) + COMPREPLY=( $( compgen -W "$drives" -- $cur ) ) + ;; + -f) + true + ;; + *) + true + ;; + esac + else + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + fi + return 0 +} +complete -F _mtx mtx diff --git a/contrib/net-tools b/contrib/net-tools new file mode 100644 index 00000000..d926e084 --- /dev/null +++ b/contrib/net-tools @@ -0,0 +1,89 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for net tools + +have mii-tool && +_mii_tool() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # --name value style option + case $prev in + -F) + COMPREPLY=( $( compgen -W '100baseTx-FD 100baseTx-HD \ + 10baseT-FD 10baseT-HD' -- $cur ) ) + return 0 + ;; + -A) + COMPREPLY=( $( compgen -W '100baseT4 100baseTx-FD 100baseTx-HD \ + 10baseT-FD 10baseT-HD' -- $cur ) ) + return 0 + ;; + esac + + + # --name=value style option + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case "$prev" in + --force) + COMPREPLY=( $( compgen -W '100baseTx-FD \ + 100baseTx-HD 10baseT-FD \ + 10baseT-HD' -- $cur ) ) + return 0 + ;; + --advertise) + COMPREPLY=( $( compgen -W '100baseT4 \ + 100baseTx-FD 100baseTx-HD 10baseT-FD \ + 10baseT-HD' -- $cur ) ) + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-v --verbose -V --version -R \ + --reset -r --restart -w --watch -l --log -A \ + --advertise= -F --force=' -- $cur ) ) + else + _available_interfaces -a + fi +} && +complete -F _mii_tool $default mii-tool + +have mii-diag && +_mii_diag() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # --name value style option + case $prev in + -@(F|A|-advertise|-fixed-speed)) + COMPREPLY=( $( compgen -W '100baseT4 100baseTx \ + 100baseTx-FD 100baseTx-HD 10baseT 10baseT-FD \ + 10baseT-HD' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --advertise -F --fixed-speed -a \ + --all-interfaces -s --status -D --debug -g \ + --read-parameters -G --set-parameters -M --msg-level \ + -p --phy -r --restart -R --reset -v -V -w --watch \ + -? --help' -- $cur ) ) + else + _available_interfaces -a + fi +} && +complete -F _mii_diag $default mii-diag diff --git a/contrib/p4 b/contrib/p4 new file mode 100644 index 00000000..ada8a57f --- /dev/null +++ b/contrib/p4 @@ -0,0 +1,55 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# Perforce completion by Frank Cusack <frank@google.com> + +_p4() +{ + local cur prev prev2 p4commands p4filetypes + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # rename isn't really a command + p4commands="$( p4 help commands | awk 'NF>3 {print $1}' )" + p4filetypes="ctext cxtext ktext kxtext ltext tempobj ubinary \ + uresource uxbinary xbinary xltext xtempobj xtext \ + text binary resource" + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W "$p4commands" -- $cur ) ) + elif [ $COMP_CWORD -eq 2 ]; then + case "$prev" in + help) + COMPREPLY=( $( compgen -W "simple commands \ + environment filetypes jobview revisions \ + usage views $p4commands" -- $cur ) ) + ;; + admin) + COMPREPLY=( $( compgen -W "checkpoint stop" -- $cur ) ) + ;; + *) + ;; + esac + elif [ $COMP_CWORD -gt 2 ]; then + prev2=${COMP_WORDS[COMP_CWORD-2]} + case "$prev" in + -t) + case "$prev2" in + add|edit|reopen) + COMPREPLY=( $( compgen -W "$p4filetypes" \ + -- $cur) ) + ;; + *) + ;; + esac + ;; + *) + ;; + esac + fi + + return 0 +} +complete -F _p4 $default p4 g4 diff --git a/contrib/povray b/contrib/povray new file mode 100644 index 00000000..c69b0db4 --- /dev/null +++ b/contrib/povray @@ -0,0 +1,59 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# povray completion by "David Necas (Yeti)" <yeti@physics.muni.cz> + +_povray() +{ + local cur prev povcur pfx oext defoext + defoext=png # default output extension, if cannot be determined FIXME + + COMPREPLY=() + povcur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + _expand || return 0 + + case $povcur in + [-+]I*) + cur="${povcur#[-+]I}" # to confuse _filedir + pfx="${povcur%"$cur"}" + _filedir pov + COMPREPLY=( ${COMPREPLY[@]/#/$pfx} ) + return 0 + ;; + [-+]O*) + # guess what output file type user may want + case $( ( IFS=$'\n'; echo "${COMP_WORDS[*]}" | grep '^[-+]F' ) ) in + [-+]FN) oext=png ;; + [-+]FP) oext=ppm ;; + [-+]F[CT]) oext=tga ;; + *) oext=$defoext ;; + esac + # complete filename corresponding to previously specified +I + COMPREPLY=( $( ( IFS=$'\n'; echo "${COMP_WORDS[*]}" | grep '^[-+]I' ) ) ) + COMPREPLY=( ${COMPREPLY[@]#[-+]I} ) + COMPREPLY=( ${COMPREPLY[@]/%.pov/.$oext} ) + cur="${povcur#[-+]O}" # to confuse _filedir + pfx="${povcur%"$cur"}" + _filedir $oext + COMPREPLY=( ${COMPREPLY[@]/#/$pfx} ) + return 0 + ;; + *.ini\[|*.ini\[*[^]]) # sections in .ini files + cur="${povcur#*\[}" + pfx="${povcur%\["$cur"}" # prefix == filename + [ -r "$pfx" ] || return 0 + COMPREPLY=( $(sed -e 's/^[[:space:]]*\[\('"$cur"'[^]]*\]\).*$/\1/' -e 't' -e 'd' -- "$pfx") ) + # to prevent [bar] expand to nothing. can be done more easily? + COMPREPLY=( "${COMPREPLY[@]/#/$pfx[}" ) + return 0 + ;; + *) + cur="$povcur" + _filedir '?(ini|pov)' + return 0 + ;; + esac +} +complete -F _povray $filenames povray xpovray spovray diff --git a/contrib/qdbus b/contrib/qdbus new file mode 100644 index 00000000..ba749c6a --- /dev/null +++ b/contrib/qdbus @@ -0,0 +1,20 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# Qt qdbus completion +# +have qdbus && +_qdbus() +{ + local cur compstr + + COMPREPLY=() + cur=`_get_cword` + if [ -z "$cur" ]; then + compstr=${COMP_WORDS[*]} + else + compstr=$( command echo ${COMP_WORDS[*]} | sed "s/ ${cur/\//\\/}$//" ) + fi + COMPREPLY=( $( compgen -W '$( command $compstr | sed s/\(.*\)// )' -- "$cur" ) ) +} && +complete -F _qdbus qdbus diff --git a/contrib/qemu b/contrib/qemu new file mode 100644 index 00000000..7baeddf3 --- /dev/null +++ b/contrib/qemu @@ -0,0 +1,100 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for qemu + +have qemu && +_qemu() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -@(fd[ab]|hd[abcd]|cdrom|option-rom|kernel|initrd|bootp|pidfile|loadvm)) + _filedir + return 0 + ;; + -@(tftp|smb|L)) + _filedir -d + return 0 + ;; + -boot) + COMPREPLY=( $( compgen -W 'a c d n' -- $cur ) ) + return 0 + ;; + -k) + COMPREPLY=( $( compgen -W 'ar de-ch es fo fr-ca hu ja \ + mk no pt-br sv da en-gb et fr fr-ch is lt nl pl\ + ru th de en-us fi fr-be hr it lv nl-be pt sl \ + tr' -- $cur ) ) + return 0 + ;; + -soundhw) + COMPREPLY=( $( compgen -W "$( qemu -soundhw ? | awk \ + '/^[[:lower:]]/ {print $1}' ) all" -- $cur ) ) + return 0 + ;; + -M) + COMPREPLY=( $( compgen -W "$( qemu -M ? | awk \ + '/^[[:lower:]]/ {print $1}' )" -- $cur ) ) + return 0 + ;; + -cpu) + COMPREPLY=( $( compgen -W "$( qemu -cpu ? | awk \ + '{print $2}' )" -- $cur ) ) + return 0 + ;; + -usbdevice) + COMPREPLY=( $( compgen -W 'mouse tablet disk: host: \ + serial: braille net' -- $cur ) ) + return 0 + ;; + -net) + COMPREPLY=( $( compgen -W 'nic user tap socket vde none' \ + -- $cur ) ) + return 0 + ;; + -@(serial|parallel|monitor)) + COMPREPLY=( $( compgen -W 'vc pty none null /dev/ \ + file: stdio pipe: COM udp: tcp: telnet: unix: \ + mon: braille' -- $cur ) ) + return 0 + ;; + -redir) + COMPREPLY=( $( compgen -S":" -W 'tcp udp' -- $cur ) ) + return 0 + ;; + -bt) + COMPREPLY=( $( compgen -W 'hci vhci device' -- $cur ) ) + return 0 + ;; + -vga) + COMPREPLY=( $( compgen -W 'cirrus std vmware' -- $cur ) ) + return 0 + ;; + -drive) + COMPREPLY=( $( compgen -S"=" -W 'file if bus index media \ + cyls snapshot cache format' -- $cur ) ) + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-M -fda -fdb -hda -hdb -hdc -hdd \ + -cdrom -boot -snapshot -no-fd-bootchk -m -smp -nographic -vnc \ + -k -audio-help -soundhw -localtime -full-screen -pidfile \ + -daemonize -win2k-hacks -option-rom -usb -usbdevice -net -tftp \ + -smb -redir -kernel -append -initrd -serial -parallel -monitor \ + -s -p -S -d -hdachs -L -std-vga -no-acpi -no-reboot -loadvm \ + -semihosting -cpu -bt -vga -drive -startdate -name -curses \ + -no-frame -no-quit -bootp -echr -no-shutdown -icount -g \ + -prom-env' -- $cur ) ) + else + _filedir + fi +} && +complete -F _qemu $filenames qemu diff --git a/contrib/quota-tools b/contrib/quota-tools new file mode 100644 index 00000000..f77d1c35 --- /dev/null +++ b/contrib/quota-tools @@ -0,0 +1,309 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for quota-tools + +have quota && { +_user_or_group() +{ + local i + + # complete on groups if -g was given + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -g ]]; then + COMPREPLY=( $( compgen -g -- $cur ) ) + return 0 + fi + done + + # otherwise complete on users + COMPREPLY=( $( compgen -u -- $cur ) ) +} + +_quota_formats() +{ + COMPREPLY=( $( compgen -W 'vfsold vfsv0 rpc xfs' -- $cur ) ) +} + +_filesystems() +{ + # Only list filesystems starting with "/", otherwise we also get + #+ "binfmt_misc", "proc", "tmpfs", ... + COMPREPLY=( $( compgen -W "$(awk '/^\// {print $1}' /etc/mtab)" \ + -- $cur ) ) +} + +_quota() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -F) + _quota_formats + return 0 + ;; + esac + + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case $prev in + --format) + _quota_formats + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-F --format= -g --group -u --user -v --verbose \ + -s --human-readable -p --raw-grace -i --no-autofs -l --local-only \ + -A --all-nfs -m --no-mixed-pathnames -q --quiet -Q --quiet-refuse \ + -w --no-wrap' -- $cur ) ) + else + _user_or_group + fi +} +complete -F _quota $default quota + +_setquota() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -F) + _quota_formats + return 0 + ;; + esac + + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case $prev in + --format) + _quota_formats + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-r --remote -m --no-mixed-pathnames \ + -F --format= -g --group -u --user -p --prototype= -b --batch \ + -c --continue-batch -t --edit-period -T --edit-times -a --all' -- $cur ) ) + else + _count_args + + case $args in + 1) + _user_or_group + ;; + 2) + _filesystems + ;; + esac + + fi +} +complete -F _setquota $default setquota + +_edquota() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -F) + _quota_formats + return 0 + ;; + -@(f|-filesystem)) + _filesystems + return 0 + ;; + esac + + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case $prev in + --format) + _quota_formats + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-r --remote -m --no-mixed-pathnames \ + -g --group -u --user -p --prototype= -F --format= -f --filesystem \ + -t --edit-period -T --edit-times' -- $cur ) ) + else + _user_or_group + fi +} +complete -F _edquota $default edquota + +_quotacheck() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -F) + _quota_formats + return 0 + ;; + esac + + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case $prev in + --format) + _quota_formats + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b --backup -v --verbose -d --debug \ + -g --group -u --user -c --create-files -f --force -i \ + --interactive -n --use-first-dquot -M --try-remount -m \ + --no-remount -R --exclude-root -F --format= -a --all' \ + -- $cur ) ) + else + _filesystems + fi +} +complete -F _quotacheck $default quotacheck + +_repquota() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -F) + _quota_formats + return 0 + ;; + esac + + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case $prev in + --format) + _quota_formats + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --all -v --verbose -s --human-readable \ + -c --batch-translation -C --no-batch-translation -t \ + --truncate-names -n --no-names -p --raw-grace -i --no-autofs \ + -u --user -g --group -F --format=' -- $cur ) ) + else + _filesystems + fi +} +complete -F _repquota $default repquota + +_quotaon() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + echo --$cmd-- + case $prev in + -F) + _quota_formats + return 0 + ;; + esac + + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case $prev in + --format) + _quota_formats + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --all -v --verbose -u --user \ + -g --group -f --off -p --print-state -F --format=' -- $cur ) ) + else + _filesystems + fi +} +complete -F _quotaon $default quotaon + +_quotaoff() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -F) + _quota_formats + return 0 + ;; + -@(x|-xfs-command)) + COMPREPLY=( $( compgen -W 'delete enforce' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case $prev in + --format) + _quota_formats + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --all -v --verbose -u --user \ + -g --group -p --print-state -x --xfs-command -F --format=' \ + -- $cur ) ) + else + _filesystems + fi +} +complete -F _quotaoff $default quotaoff +} diff --git a/contrib/rdesktop b/contrib/rdesktop new file mode 100644 index 00000000..ba941eec --- /dev/null +++ b/contrib/rdesktop @@ -0,0 +1,53 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for rdesktop + +have rdesktop && +_rdesktop() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -k) + COMPREPLY=( $( command ls \ + /usr/share/rdesktop/keymaps 2>/dev/null | \ + egrep -v '(common|modifiers)' ) ) + COMPREPLY=( ${COMPREPLY[@]:-} $( command ls \ + $HOME/.rdesktop/keymaps 2>/dev/null ) ) + COMPREPLY=( ${COMPREPLY[@]:-} $( command ls \ + ./keymaps 2>/dev/null ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) ) + return 0 + ;; + -a) + COMPREPLY=( $( compgen -W '8 15 16 24' -- $cur ) ) + return 0 + ;; + -x) + COMPREPLY=( $( compgen -W 'b broadband m modem l lan' \ + -- $cur ) ) + return 0 + ;; + -r) + # FIXME: should do $nospace for the colon options + COMPREPLY=( $( compgen -W 'comport: disk: lptport: \ + printer: sound: lspci scard' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-u -d -s -c -p -n -k -g -f -b -L \ + -A -B -e -E -m -C -D -K -S -T -N -X -a -z -x -P -r \ + -0 -4 -5' -- $cur ) ) + else + _known_hosts + fi + +} && +complete -F _rdesktop rdesktop diff --git a/contrib/ri b/contrib/ri new file mode 100644 index 00000000..9ec520c0 --- /dev/null +++ b/contrib/ri @@ -0,0 +1,89 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# ri completion for Ruby documentation by Ian Macdonald <ian@caliban.org> + +ri_get_methods() +{ + local regex + + if [ "$ri_version" = integrated ]; then + if [ -z "$separator" ]; then + regex="(Instance|Class)" + elif [ "$separator" = "#" ]; then + regex=Instance + else + regex=Class + fi + + COMPREPLY=( ${COMPREPLY[@]} \ + "$( ri ${classes[@]} 2>/dev/null | \ + ruby -ane 'if /^'"$regex"' methods:/.../^------------------|^$/ and \ + /^ / then print $_.split(/, |,$/).grep(/^[^\[]*$/).join("\n"); \ + end' | sort -u )" ) + else + # older versions of ri didn't distinguish between class/module and + # instance methods + COMPREPLY=( ${COMPREPLY[@]} \ + "$( ruby -W0 $ri_path ${classes[@]} | ruby -ane 'if /^-/.../^-/ and \ + ! /^-/ and ! /^ +(class|module): / then \ + print $_.split(/, |,$| +/).grep(/^[^\[]*$/).join("\n"); \ + end' | sort -u )" ) + fi + COMPREPLY=( $( compgen $prefix -W '${COMPREPLY[@]}' -- $method ) ) +} + +# needs at least Ruby 1.8.0 in order to use -W0 +_ri() +{ + local cur class method prefix ri_path ri_version separator IFS + local -a classes + + COMPREPLY=() + cur=`_get_cword` + + ri_path=$(type -p ri) + # which version of ri are we using? + # -W0 is required here to stop warnings from older versions of ri + # from being captured when used with Ruby 1.8.1 and later + ri_version="$(ruby -W0 $ri_path -v 2>&1)" || ri_version=integrated + [ "$ri_version" != "${ri_version%200*}" ] && ri_version=integrated + + # need to also split on commas + IFS=$', \n\t' + if [[ "$cur" == [A-Z]*[#.]* ]]; then + [[ "$cur" == *#* ]] && separator=# || separator=. + # we're completing on class and method + class=${cur%$separator*} + method=${cur#*$separator} + classes=( $class ) + prefix="-P $class$separator" + ri_get_methods + return 0 + fi + + if [ "$ri_version" = integrated ]; then + # integrated ri from Ruby 1.9 + classes=( $( ri -c | ruby -ne 'if /^\s*$/..$stdin.eof then \ + if /, [A-Z]+/ then print; end; end' ) ) + elif [ "$ri_version" = "ri 1.8a" ]; then + classes=( $( ruby -W0 $ri_path | \ + ruby -ne 'if /^'"'"'ri'"'"' has/..$stdin.eof then \ + if /^ .*[A-Z]/ then print; end; end' )) + else + classes=( $( ruby -W0 $ri_path | \ + ruby -ne 'if /^I have/..$stdin.eof then \ + if /^ .*[A-Z]/ then print; end; end' )) + fi + + COMPREPLY=( $( compgen -W '${classes[@]}' -- $cur ) ) + if [[ "$cur" == [A-Z]* ]]; then + # we're completing on class or module alone + return 0 + fi + + # we're completing on methods + method=$cur + ri_get_methods +} +complete -F _ri ri diff --git a/contrib/sbcl b/contrib/sbcl new file mode 100644 index 00000000..1b14eea3 --- /dev/null +++ b/contrib/sbcl @@ -0,0 +1,25 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash programmable completion for various Common Lisp implementations by +# Nikodemus Siivola <nikodemus@random-state.net> + +_sbcl() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--core --noinform --help --version \ + --sysinit --userinit --eval --noprint --disable-debugger \ + --end-runtime-options --end-toplevel-options ' -- $cur ) ) + else + _filedir + fi + + return 0 +} +complete -F _sbcl $default sbcl sbcl-mt diff --git a/contrib/sitecopy b/contrib/sitecopy new file mode 100644 index 00000000..088951cd --- /dev/null +++ b/contrib/sitecopy @@ -0,0 +1,31 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# sitecopy(1) completion +# Copyright 2003 Eelco Lempsink <eelcolempsink@gmx.net> +# License: GNU GPL v2 or later + +_sitecopy() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + case "$cur" in + --*) + COMPREPLY=( $( compgen -W "$(sitecopy -h | grep -e '--\w' | awk '{sub (/=(FILE|PATH)/, "", $2); print $2}')" -- $cur ) ) + ;; + -*) + COMPREPLY=( $( compgen -W "$(sitecopy -h | grep -e '-\w' | awk '{sub (",", "", $1); print $1}')" -- $cur ) ) + ;; + *) + if [ -r ~/.sitecopyrc ]; then + COMPREPLY=( $( compgen -W "$(grep '^["$'\t '"]*site' ~/.sitecopyrc | awk '{print $2}')" -- $cur ) ) + fi + ;; + esac + + return 0 +} +complete -F _sitecopy $default sitecopy diff --git a/contrib/snownews b/contrib/snownews new file mode 100644 index 00000000..89007678 --- /dev/null +++ b/contrib/snownews @@ -0,0 +1,19 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# snownews completion by Guillaume Rousse <rousse@ccr.jussieu.fr> + +_snownews() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + # return list of available options + COMPREPLY=( $( compgen -W '--update --help --version \ + --disable-versioncheck -u -h -V' -- $cur)) + fi +} +complete -F _snownews snownews diff --git a/contrib/ssh b/contrib/ssh new file mode 100644 index 00000000..85325aa2 --- /dev/null +++ b/contrib/ssh @@ -0,0 +1,142 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# ssh(1) completion +# +have ssh && { +_ssh() +{ + local cur prev + local optconfigfile + local -a config + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -F) + _filedir + ;; + -*c) + COMPREPLY=( $( compgen -W 'blowfish 3des 3des-cbc blowfish-cbc \ + arcfour cast128-cbc' -- $cur ) ) + ;; + -*i) + _filedir + ;; + -*l) + COMPREPLY=( $( compgen -u -- $cur ) ) + ;; + *) + # Search COMP_WORDS for '-F configfile' argument + set -- "${COMP_WORDS[@]}" + while [ $# -gt 0 ]; do + if [ "${1:0:2}" = -F ]; then + if [ ${#1} -gt 2 ]; then + optconfigfile="$(dequote "$1")" + else + shift + [ "$1" ] && optconfigfile="$(dequote "-F$1")" + fi + break + fi + shift + done + + _known_hosts -a "$optconfigfile" + + [ $COMP_CWORD -eq 1 -o -n "$optconfigfile" ] || \ + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -c -- $cur ) ) + esac + + return 0 +} +shopt -u hostcomplete && complete -F _ssh ssh slogin sftp xhost autossh + +# scp(1) completion +# +_scp() +{ + local cur userhost path + local optconfigfile + + COMPREPLY=() + cur=`_get_cword ":"` + + _expand || return 0 + + if [[ "$cur" == *:* ]]; then + local IFS=$'\t\n' + # remove backslash escape from : + cur=${cur/\\:/:} + userhost=${cur%%?(\\):*} + path=${cur#*:} + # unescape spaces + path=${path//\\\\\\\\ / } + if [ -z "$path" ]; then + # default to home dir of specified user on remote host + path=$(ssh -o 'Batchmode yes' $userhost pwd 2>/dev/null) + fi + # escape spaces; remove executables, aliases, pipes and sockets; + # add space at end of file names + COMPREPLY=( $( ssh -o 'Batchmode yes' $userhost \ + command ls -aF1d "$path*" 2>/dev/null | \ + sed -e "s/[][(){}<>\",:;^&\!$=?\`|\\ ']/\\\\\\\\\\\\&/g" \ + -e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ) ) + return 0 + fi + + # Search COMP_WORDS for '-F configfile' argument + set -- "${COMP_WORDS[@]}" + while [ $# -gt 0 ]; do + if [ "${1:0:2}" = -F ]; then + if [ ${#1} -gt 2 ]; then + optconfigfile="$(dequote "$1")" + else + shift + [ "$1" ] && optconfigfile="$(dequote "-F$1")" + fi + break + fi + shift + done + + [[ "$cur" == */* ]] || _known_hosts -c -a "$optconfigfile" + + # This approach is used instead of _filedir to get a space appended + # after local file/dir completions, and $nospace retained for others. + local IFS=$'\t\n' + COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* \ + 2>/dev/null | sed \ + -e "s/[][(){}<>\",:;^&\!$=?\`|\\ ']/\\\\&/g" \ + -e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ) ) + + return 0 +} +complete -F _scp $nospace scp + +# ssh-copy-id(1) completion +# +_ssh_copy_id() { + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -*i) + _filedir + ;; + *) + _known_hosts -a + + [ $COMP_CWORD -eq 1 ] || \ + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -- $cur ) ) + esac + + return 0 +} +complete -F _ssh_copy_id $filenames ssh-copy-id +} diff --git a/contrib/svk b/contrib/svk new file mode 100644 index 00000000..e2d0fac7 --- /dev/null +++ b/contrib/svk @@ -0,0 +1,263 @@ +# -*- 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> + +_svk() +{ + local cur prev commands options command + + 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' + + 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 + + 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" + + 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 diff --git a/contrib/unace b/contrib/unace new file mode 100644 index 00000000..c6376742 --- /dev/null +++ b/contrib/unace @@ -0,0 +1,29 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# unace(1) completion by Guillaume Rousse <rousse@ccr.jussieu.fr> + +_unace() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W '-c -c- -f -f- -o -o- -p -y -y-' -- $cur ) ) + ;; + *) + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'e l t v x' -- $cur ) ) + else + _filedir '@(ace|ACE)' + fi + ;; + esac + + return 0 + +} +complete -F _unace $filenames unace diff --git a/contrib/unrar b/contrib/unrar new file mode 100644 index 00000000..9dcd2065 --- /dev/null +++ b/contrib/unrar @@ -0,0 +1,30 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# unrar(1) completion by Guillaume Rousse <rousse@ccr.jussieu.fr> + +_unrar() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W '-ad -ap -av- -c- -cfg- -cl -cu \ + -dh -ep -f -idp -ierr -inul -kb -o+ -o- -ow -p -p- -r -ta \ + -tb -tn -to -u -v -ver -vp -x -x@ -y' -- $cur ) ) + ;; + *) + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'e l lb lt p t v vb vt x' -- $cur ) ) + else + _filedir '@(rar|RAR)' + fi + ;; + esac + + return 0 +} +complete -F _unrar $filenames unrar diff --git a/contrib/vncviewer b/contrib/vncviewer new file mode 100644 index 00000000..933783a4 --- /dev/null +++ b/contrib/vncviewer @@ -0,0 +1,126 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for vncviewer + + +_vncviewer_bootstrap() { + local fname + case "$(_realcommand vncviewer)" in + # If `vncviewer' not installed, default file-dir completion + '') _filedir `_get_cword` ;; + *xvnc4viewer) fname=_xvnc4viewer ;; + *tightvncviewer|*) fname=_tightvncviewer ;; + esac + if [ $fname ]; then + # Install real completion for subsequent completions + complete -F $fname vncviewer + $fname # Generate completions once for now + unset -f _vncviewer_bootstrap + fi +} && +complete -F _vncviewer_bootstrap vncviewer + + +_tightvncviewer() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -passwd) + _filedir + return 0 + ;; + -encodings) + COMPREPLY=( $( compgen -W 'copyrect tight hextile zlib \ + corre rre raw' -- $cur ) ) + return 0 + ;; + -via) + _known_hosts + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-help -listen -via -shared -noshared\ + -viewonly -fullscreen -noraiseonbeep -passwd -encodings\ + -bgr233 -owncmap -truecolour -truecolor -depth \ + -compresslevel -quality -nojpeg -nocursorshape \ + -x11cursor' -- $cur ) ) + else + _known_hosts + fi +} && +complete -F _tightvncviewer tightvncviewer + + +# NOTE: - VNC Viewer options are case-insensivite. Preferred case is taken from -help. +# - Both single dash (-) and double dash (--) are allowed as option prefix +_xvnc4viewer() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # Convert double dash to single dash + case ${prev/#--/-} in + # -passwd, -PasswordFile + -[pP][aA][sS][sS][wW][dD]|-[pP][aA][sS][sS][wW][oO][rR][dD][fF][iI][lL][eE]) + _filedir + return 0 + ;; + # -PreferredEncoding + -[pP][rR][eE][fF][eE][rR][rR][eE][dD][eE][nN][cC][oO][dD][iI][nN][gG]) + COMPREPLY=( $( compgen -W 'zrle hextile raw' -- $cur ) ) + return 0 + ;; + # -via + -[vV][iI][aA]) + _known_hosts + return 0 + ;; + esac + + if [[ "$cur" == -* || "$cur" == --* ]]; then + # Default to vncviewer camelcase options, see `vncviewer -help' + local dash options=( \ + AcceptClipboard AutoSelect DebugDelay display \ + DotWhenNoCursor FullColor FullColour FullScreen \ + geometry help listen Log \ + LowColourLevel MenuKey name Parent \ + passwd PasswordFile PointerEventInterval PreferredEncoding \ + SendClipboard SendPrimary Shared UseLocalCursor \ + via ViewOnly WMDecorationHeight WMDecorationWidth \ + ZlibLevel \ + ) + [[ "$cur" == --* ]] && dash=-- || dash=- + # Is a `nocasematch' variable available (bash > v3.1)? + if shopt nocasematch 2> /dev/null | grep -q ^nocasematch; then + # Variable `nocasematch' is available + # Use vncviewer camelcase options + local option oldNoCaseMatch=$(shopt -p nocasematch) + shopt -s nocasematch + COMPREPLY=( $( for option in "${options[@]}"; do + [[ $dash$option == "$cur"* ]] && echo $dash$option + done ) ) + eval "$oldNoCaseMatch" 2> /dev/null + else + # Variable 'nocasematch' isn't available; + # Convert completions to lowercase + COMPREPLY=( $( compgen -W "$( + echo ${options[@]/#/$dash} | tr [:upper:] [:lower:] + )" -- "$(echo "$cur" | tr [:upper:] [:lower:])" ) ) + fi + else + _known_hosts + fi +} && +complete -F _xvnc4viewer xvnc4viewer |