summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Birchinger <joker@gentoo.org>2004-02-11 11:19:48 +0000
committerChristian Birchinger <joker@gentoo.org>2004-02-11 11:19:48 +0000
commitb0ac595d37e87f1a39e5a4adbb6dc3c7185bc961 (patch)
tree3591e40e4287e8b237e329c48edea5ac9c09a4b4 /app-shells
parentSee bug 41146 (diff)
downloadhistorical-b0ac595d37e87f1a39e5a4adbb6dc3c7185bc961.tar.gz
historical-b0ac595d37e87f1a39e5a4adbb6dc3c7185bc961.tar.bz2
historical-b0ac595d37e87f1a39e5a4adbb6dc3c7185bc961.zip
Version bump
Diffstat (limited to 'app-shells')
-rw-r--r--app-shells/bash-completion/ChangeLog8
-rw-r--r--app-shells/bash-completion/Manifest5
-rw-r--r--app-shells/bash-completion/bash-completion-20040210.ebuild64
-rw-r--r--app-shells/bash-completion/files/digest-bash-completion-200402101
-rw-r--r--app-shells/bash-completion/files/gentoo.completion-20040210614
5 files changed, 690 insertions, 2 deletions
diff --git a/app-shells/bash-completion/ChangeLog b/app-shells/bash-completion/ChangeLog
index 23854d3be23a..1dde1ec9c798 100644
--- a/app-shells/bash-completion/ChangeLog
+++ b/app-shells/bash-completion/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for app-shells/bash-completion
# Copyright 2002-2004 Gentoo Technologies, Inc.; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-shells/bash-completion/ChangeLog,v 1.54 2004/02/10 19:36:36 joker Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-shells/bash-completion/ChangeLog,v 1.55 2004/02/11 11:19:48 joker Exp $
+
+*bash-completion-20040210 (11 Feb 2004)
+
+ 11 Feb 2004; Christian Birchinger <joker@gentoo.org>
+ bash-completion-20040210.ebuild, files/gentoo.completion-20040210:
+ Version bump
10 Feb 2004; Christian Birchinger <joker@gentoo.org>
bash-completion-20040101-r1.ebuild:
diff --git a/app-shells/bash-completion/Manifest b/app-shells/bash-completion/Manifest
index 450fa1030966..9226aacf50d9 100644
--- a/app-shells/bash-completion/Manifest
+++ b/app-shells/bash-completion/Manifest
@@ -1,9 +1,12 @@
-MD5 e92ed3c2e8b6061ff46f38b8ac2dc54e ChangeLog 7531
+MD5 6767b1de8e24381f104873de7dcdabaf ChangeLog 7712
MD5 3b26efb4ac08deb0705efd9ef3b14471 bash-completion-20040101-r1.ebuild 1934
MD5 1dc8e7503e7e350f3382d37b612178cc metadata.xml 1023
MD5 6f59a4b230f83638535b81421cd1c01e bash-completion-20040101.ebuild 1470
+MD5 c6407ca44e1a2332905a135aadd87137 bash-completion-20040210.ebuild 1939
MD5 e64a9d70ece3d6edcde031cea71617bb files/digest-bash-completion-20040101-r1 76
MD5 38a707ba9274991e61239ce569e840ff files/bash-completion 623
MD5 e64a9d70ece3d6edcde031cea71617bb files/digest-bash-completion-20040101 76
MD5 68f23bc137b7a15a27a9dc5ee1b76c32 files/gentoo.completion-20040101-r1 16380
+MD5 d7efd8bcc60301eebedaa7b28b35d5bd files/digest-bash-completion-20040210 76
+MD5 68f23bc137b7a15a27a9dc5ee1b76c32 files/gentoo.completion-20040210 16380
MD5 07cfbd320ed881dcaeb8bd868cf5e06e files/gentoo.completion-20040101 16380
diff --git a/app-shells/bash-completion/bash-completion-20040210.ebuild b/app-shells/bash-completion/bash-completion-20040210.ebuild
new file mode 100644
index 000000000000..1f96846d9b8d
--- /dev/null
+++ b/app-shells/bash-completion/bash-completion-20040210.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2004 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-shells/bash-completion/bash-completion-20040210.ebuild,v 1.1 2004/02/11 11:19:48 joker Exp $
+
+S=${WORKDIR}/${PN/-/_}
+DESCRIPTION="Programmable Completion for bash (includes emerge and ebuild commands)."
+HOMEPAGE="http://www.caliban.org/bash/index.shtml#completion"
+SRC_URI="http://www.caliban.org/files/bash/${P}.tar.bz2"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="~x86 ~ppc ~sparc ~alpha ~mips ~hppa ~arm ~amd64"
+
+DEPEND="app-arch/tar
+ app-arch/bzip2"
+
+RDEPEND=">=app-shells/bash-2.05a"
+
+src_install() {
+ insinto /etc
+ doins bash_completion
+
+ insinto /usr/share/bash-completion
+ doins contrib/*
+
+ insinto /etc/bash_completion.d
+ newins ${FILESDIR}/gentoo.completion-${PVR/-r0/} gentoo
+
+ insinto /etc/profile.d
+ doins ${FILESDIR}/bash-completion
+
+ dodoc COPYING Changelog README
+}
+
+pkg_postinst() {
+ echo
+ einfo "Add the following line to your ~/.bashrc to"
+ einfo "activate completion support in your bash:"
+ einfo "[ -f /etc/profile.d/bash-completion ] && source /etc/profile.d/bash-completion"
+ einfo
+ einfo "Additional complete functions can be enabled by symlinking them from"
+ einfo "/usr/share/bash-completion to /etc/bash_completion.d"
+
+ if [ -f /etc/bash_completion.d/gentoo.completion ]
+ then
+ echo
+ ewarn "The file 'gentoo.completion' in '/etc/bash_completion.d/' has been"
+ ewarn "replaced with 'gentoo'. Remove gentoo.completion to avoid problems."
+ fi
+
+ for bcfile in /etc/bash_completion.d/{unrar,harbour,isql,larch,lilypond,p4,ri}
+ do
+ [ -f "${bcfile}" -a ! -L "${bcfile}" ] && moved="${bcfile##*/} ${moved}"
+ done
+ if [ -n "${moved}" ]
+ then
+ echo
+ ewarn "The contrib files: ${moved}"
+ ewarn "have been moved to /usr/share/bash-completion. Please DELETE"
+ ewarn "those old files in /etc/bash_completion.d and create symlinks."
+ fi
+ unset bcfile moved
+ echo
+}
diff --git a/app-shells/bash-completion/files/digest-bash-completion-20040210 b/app-shells/bash-completion/files/digest-bash-completion-20040210
new file mode 100644
index 000000000000..37c68ede8e9a
--- /dev/null
+++ b/app-shells/bash-completion/files/digest-bash-completion-20040210
@@ -0,0 +1 @@
+MD5 033cfc13bba2b45da2845a13752b370e bash-completion-20040210.tar.bz2 90307
diff --git a/app-shells/bash-completion/files/gentoo.completion-20040210 b/app-shells/bash-completion/files/gentoo.completion-20040210
new file mode 100644
index 000000000000..a6f588279851
--- /dev/null
+++ b/app-shells/bash-completion/files/gentoo.completion-20040210
@@ -0,0 +1,614 @@
+# -*- shell-script -*-
+#
+# Gentoo Linux command completion.
+#
+# Copyright 1999-2002 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
+#
+# Author: Geert Bevin <gbevin@theleaf.be>
+# Author: Zach Forrest <zach@disinformation.ca>
+#
+
+#
+# rc & rc-status completion command
+#
+_rc()
+{
+ local cur
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ if [ ${#COMP_WORDS[*]} -le 2 ]; then
+ COMPREPLY=( $( compgen -W "$(for i in /etc/runlevels/*; do echo ${i##*/}; done)" -- $cur ) )
+
+ fi
+ return 0
+}
+complete -F _rc rc
+
+_rcstatus()
+{
+ local cur opts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ if [ ${#COMP_WORDS[*]} -le 2 ]; then
+ opts="-a -all -l --list -u --unused"
+ COMPREPLY=( $( compgen -W "${opts} $(for i in /etc/runlevels/*; do echo ${i##*/}; done)" -- $cur ) )
+
+ fi
+ return 0
+}
+complete -F _rcstatus rc-status
+
+#
+# distcc-config completion command
+#
+_distccconfig()
+{
+ local cur curword numwords opts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ numwords=${#COMP_WORDS[*]}
+ curword=${COMP_CWORD}
+ if [ ${numwords} -gt 3 ]; then
+ return 0
+ fi
+ if [[ "${cur}" == -* ]] || [ ${curword} -eq 1 ]; then
+ if [ ${numwords} -le 2 ] && [ ${curword} -eq 1 ]; then
+ opts="--get-hosts \
+ --get-verbose \
+ --get-log \
+ --set-hosts \
+ --set-verbose \
+ --set-log \
+ --add-path \
+ --no-path"
+ else
+ opts=""
+ fi
+ else
+ opts=""
+ fi
+ COMPREPLY=($(compgen -W "${opts}" | grep ^$cur))
+ return 0
+}
+complete -F _distccconfig distcc-config
+
+#
+# simple completion for Gentoo style init
+#
+complete -W "start stop restart pause zap ineed needsme iuse usesme broken" \
+ $(for i in /etc/init.d/*; do echo ${i##*/}; done)
+
+#
+# emerge completion command
+#
+_emerge()
+{
+ local cur prev grepcmd sedcmd systemactions setsma setbig portagedir origdir
+ local mode words opts curword numwords pkgdbdir
+
+ origdir="${PWD}"
+ portagedir=/usr/portage
+ pkgdbdir=/var/db/pkg
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ words="${COMP_WORDS[*]}"
+ numwords=${#COMP_WORDS[*]}
+ curword=${COMP_CWORD}
+ mode='ALL'
+
+ # Determine which mode we're running in.
+
+ if [ ${curword} -eq 1 ] && [ ${numwords} -eq 2 ]; then
+ # This is set when we nothing but the command name has been given.
+ mode='ALL'
+ elif [[ " ${words} " == *" --unmerge "* ]]; then
+ mode='UNMERGE'
+ elif [[ " ${words} " == *" --safe "* ]]; then
+ mode='SAFE'
+ elif [[ " ${words} " == *" --search "* ]]; then
+ mode='SEARCH'
+ elif [[ " ${words} " == *" --world "* ]]; then
+ mode='WORLD'
+ elif [[ " ${words} " == *" --help "* ]]; then
+ mode='HELP'
+ elif [[ " ${words} " == *" --clean "* ]]; then
+ mode='CLEAN'
+ elif [[ " ${words} " == *" --pretend "* ]]; then
+ mode='PRETEND'
+ else
+ # All except '--clean'
+ mode='NOCLEAN'
+ fi
+
+ if [[ "${cur}" == -* ]]; then
+
+ # Process Options
+
+ case "${mode}" in
+ "ALL")
+ opts='--clean --help --verbose --debug --fetchonly \
+ --onlydeps --noreplace --usepkg --buildpkg \
+ --autoclean --pretend --unmerge --safe \
+ --search --world'
+ ;;
+
+ "UNMERGE")
+ opts='--clean --verbose --debug --pretend \
+ --unmerge --safe'
+ ;;
+
+ "SAFE")
+ opts='--unmerge --verbose --debug'
+ ;;
+
+ "SEARCH")
+ opts='--verbose --debug'
+ ;;
+
+ "WORLD")
+ opts='--verbose --debug --pretend --world'
+ ;;
+
+ "HELP")
+ opts=''
+ ;;
+
+ "CLEAN")
+ opts='--verbose --debug --clean'
+ ;;
+
+ "PRETEND")
+ opts='--verbose --debug --fetchonly --onlydeps \
+ --noreplace --usepkg --buildpkg \
+ --autoclean --pretend --unmerge --safe \
+ --world'
+ ;;
+
+ "NOCLEAN")
+ opts='--help --verbose --debug --fetchonly \
+ --onlydeps --noreplace --usepkg --buildpkg \
+ --autoclean --pretend --unmerge --safe \
+ --search --world'
+ ;;
+ *)
+ # Same as ALL
+ opts='--clean --help --verbose --debug --fetchonly \
+ --onlydeps --noreplace --usepkg --buildpkg \
+ --autoclean --pretend --unmerge --safe \
+ --search --world'
+ ;;
+
+ esac
+
+ # Generate the reply.
+ COMPREPLY=($(compgen -W "${opts}" | grep ^$cur))
+
+ elif [ "${mode}" == "CLEAN" ]; then
+ # "rsync" is the only option that can follow "--clean"
+ COMPREPLY=($(compgen -W 'rsync'))
+
+ elif [ "${mode}" == "WORLD" ]; then
+ # "update" is the only option that can follow "--world"
+ #COMPREPLY=($(compgen -W 'update'))
+ COMPREPLY=($(compgen -W 'update' | grep ^${cur}))
+
+ elif [ "${mode}" == "HELP" ]; then
+ if [[ ! " ${words} " == *" "@(system|rsync)" "* ]]; then
+ COMPREPLY=($(compgen -W 'rsync system' | grep ^${cur}))
+ else
+ COMPREPLY=''
+ fi
+
+ elif [ "${mode}" == "SEARCH" ]; then
+ # We don't need to interfere here as the search string is a
+ # regular expression. (But wouldn't intelligent, dynamic,
+ # commandline completion of regular expressions be great!)
+ COMPREPLY=''
+
+ elif [ "${mode}" == "UNMERGE" ]; then
+ # Ignore >, >=, <, <=, and = for the purpose of completion.
+ sedcmd="sed -e s:=:: -e s:>:: -e s:<::"
+ cur=$(echo "${cur}" | ${sedcmd})
+
+ # If the current completion (minus conditional characters)
+ # starts with one of the following characters, then complete
+ # on filenames (i.e. an ebuild file) rather than referencing
+ # the package database.
+ if [[ "${cur} " == @('/'|'.'|'~'|'$')* ]]; then
+ # Setting this to nothing with tell bash to use default
+ # completion (i.e. pathname completion).
+ COMPREPLY=''
+ else
+ cd "${pkgdbdir}"
+ grepcmd="grep -E ^$cur.*"
+
+ if [ "${cur}" ]; then
+ if [ $(echo "${cur}" | grep '/') ]; then
+ setbig=$(compgen -G "${cur}*")
+ COMPREPLY=($(echo "${setbig}" | ${grepcmd}))
+ else
+ setsma=$(compgen -S '/' -G "${cur}*")
+ if [ $(echo "${setsma}" | ${grepcmd} | grep '/' | wc -l) = 1 ]; then
+ setbig=$(compgen -G "*/*")
+ COMPREPLY=($(echo "${setbig}" | ${grepcmd}))
+ else
+ COMPREPLY=($(echo "${setsma}" | ${grepcmd}))
+ fi
+ fi
+ else
+ setsma=$(compgen -S '/' -G "${cur}*")
+ COMPREPLY=($(echo "${setsma}"))
+ fi
+
+ cd "${origdir}"
+ fi
+
+ elif [ "${mode}" == "SAFE" ]; then
+ COMPREPLY=($(compgen -W '--unmerge' | grep ^${cur}))
+
+ elif [[ " ${words} " == *" "@(update|system|rsync)" "* ]]; then
+ # syncing the portage tree is a lonely job
+ # updating should be done by itself (also lonely)
+ COMPREPLY=''
+
+ elif [[ " ${words} " == *" --usepkg "* ]] && [[ "${cur} " == @('/'|'.'|'~'|'$')* ]]; then
+ # In order to complete on a package file, the name must be
+ # an absolute or realative pathname (even if it is in the
+ # current directory). This allows completion on both package
+ # names in /usr/portage and on arbitrary *.tbz2 packages.
+ #
+ # I'm planning to come up with a more elegant solution, but
+ # that will have to wait for another update. (The only thing
+ # that is really annoying right now is when specifying a
+ # *.tbz2 file in or below the current directory, you have
+ # to prefix the path with "./".)
+ COMPREPLY=''
+
+ else
+ cd "${portagedir}"
+ grepcmd="grep -E ^${cur}.*"
+ sedcmd="sed -e /^[^-]*$/d"
+
+ if [ ${COMP_CWORD} -eq 1 ]; then
+ # If emerge hasn't been given any args yet, include "rsync"
+ # among the system actions. The case where the "--clean" flag
+ # has been specified is handled above.
+ systemactions=$'\n'"system"$'\n'"update"$'\n'"rsync"
+ else
+ # Only allow these actions if no packages have been specified.
+ if [[ ! " ${words} " == *" "*[/]*" "* ]]; then
+ systemactions=$'\n'"system"$'\n'"update"
+ else
+ systemactions=''
+ fi
+ fi
+
+ if [ "${cur}" ]; then
+ if [[ "${cur} " == @('/'|'.'|'~'|'$')* ]]; then
+ COMPREPLY=''
+ elif [ $(echo "${cur}" | grep '/') ]; then
+ setbig=$(compgen -G "${cur}*" | ${sedcmd})"${systemactions}"
+ COMPREPLY=($(echo "${setbig}" | $grepcmd))
+ else
+ setsma=$(compgen -S '/' -G "${cur}*" | ${sedcmd})"${systemactions}"
+ if [ $(echo "${setsma}" | ${grepcmd} | grep '/' | wc -l) = 1 ]; then
+ setbig=$(compgen -G "*/*" | ${sedcmd})"${systemactions}"
+ COMPREPLY=($(echo "${setbig}" | ${grepcmd}))
+ else
+ COMPREPLY=($(echo "${setsma}" | ${grepcmd}))
+ fi
+ fi
+ else
+ setsma=$(compgen -S '/' -G "${cur}*" | ${sedcmd})"${systemactions}"
+ COMPREPLY=($(echo "${setsma}"))
+ fi
+
+ cd "${origdir}"
+ fi
+
+ # (Adapted from bash_completion by Ian Macdonald <ian@caliban.org>)
+ # This removes any options from the list of completions that have
+ # already been specified on the command line.
+ COMPREPLY=($(echo "${COMP_WORDS[@]}" | \
+ (while read -d ' ' i; do
+ [ "${i}" == "" ] && continue
+ # flatten array with spaces on either side,
+ # otherwise we cannot grep on word boundaries of
+ # first and last word
+ COMPREPLY=" ${COMPREPLY[@]} "
+ # remove word from list of completions
+ COMPREPLY=(${COMPREPLY/ ${i%% *} / })
+ done
+ echo ${COMPREPLY[@]})))
+
+ return 0
+}
+complete -o default -F _emerge emerge
+
+#
+# ebuild completion command
+#
+_ebuild()
+{
+ local cur prev
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ if [ $COMP_CWORD -eq 1 ]; then
+ #COMPREPLY=( $( compgen -o filenames -X '!*.ebuild' $cur ) )
+ COMPREPLY=($(compgen -o filenames))
+ elif [ $COMP_CWORD -eq 2 ]; then
+ COMPREPLY=( $( compgen -W 'check \
+ clean compile config \
+ depend digest \
+ fetch \
+ help \
+ install \
+ merge \
+ package postinst postrm preinst prerm \
+ qmerge \
+ rcheck remerge rpm \
+ setup \
+ touch \
+ unmerge unpack' $cur ) )
+ fi
+ return 0
+}
+complete -o default -F _ebuild ebuild
+
+#
+# rc-update completion command
+#
+_rcupdate()
+{
+ local cur prev initdir runlvdir origdir
+ origdir=${PWD}
+ initdir=/etc/init.d
+ runlvdir=/etc/runlevels
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W 'add del' ${cur} ) )
+ elif [ $COMP_CWORD -eq 2 ]; then
+ cd ${initdir}
+ COMPREPLY=( $( compgen -G "${cur}*" ) )
+ cd ${origdir}
+ elif [ $COMP_CWORD -eq 3 ]; then
+ cd ${runlvdir}
+ COMPREPLY=( $( compgen -G "${cur}*" ) )
+ cd ${origdir}
+ fi
+ return 0
+}
+complete -F _rcupdate rc-update
+
+#
+# gcc-config completion command
+#
+_gccconfig()
+{
+ local cur curword numwords opts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ numwords=${#COMP_WORDS[*]}
+ curword=${COMP_CWORD}
+ if [ ${numwords} -gt 3 ]; then
+ return 0
+ fi
+ if [[ "${cur}" == -* ]] || [ ${curword} -eq 1 ]; then
+ if [ ${numwords} -le 2 ] && [ ${curword} -eq 1 ]; then
+ opts="--use-old \
+ --use-portage-chost \
+ --get-current-profile \
+ --list-profiles \
+ --print-environ \
+ --get-bin-path \
+ --get-lib-path \
+ --get-stdcxx-incdir"
+ else
+ opts=""
+ fi
+ elif [ ${numwords} -le 3 ] && [ ${curword} -eq 2 ]; then
+ case "${COMP_WORDS[1]}" in
+ "--print-environ"|"--get-bin-path"|"--get-lib-path"|"--get-stdcxx-incdir")
+ opts=$(gcc-config --list-profiles)
+ ;;
+ *)
+ opts=""
+ ;;
+ esac
+ else
+ opts=""
+ fi
+ COMPREPLY=($(compgen -W "${opts}" | grep ^$cur))
+ return 0
+}
+complete -F _gccconfig gcc-config
+
+_javaconfig()
+{
+ local cur curword numwords opts args arg spec flag sedcmd grepcmd
+ local multiplepkgs pkgs execopts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ numwords=${#COMP_WORDS[*]}
+ curword=${COMP_CWORD}
+ opts=""
+ args=""
+ pkgs=""
+ sedcmd="sed -r -e s/\[([^]]+)\].*/\1/"
+ vmsedcmd="sed -r -e s/\[([^]]+)\]/\1/"
+ grepcmd="egrep -o (--set-(system|user)-(classpath|vm)=)"
+ multiplepkgs=""
+ execopts="HtmlConverter JavaPluginControlPanel \
+ appletviewer awt_robot \
+ extcheck \
+ idlj \
+ j2sdk-config jar jarsigner \
+ java java-rmi.cgijava_vm javac javadoc javah javap jdb \
+ keytool kinit klist ktab \
+ native2ascii \
+ oldjava oldjavac oldjdb orbd \
+ policytool \
+ realpath rmic rmid rmiregistry \
+ serialver servertool \
+ tnameserv"
+ if [[ "${cur}" == -* ]] || [ ${curword} -eq 1 ]; then
+ case "${cur}" in
+ "--java")
+ opts="--java --javac --java-version"
+ ;;
+ --j@(a@(r|va@(c|-version))|@(dk|re)-home))
+ opts=""
+ ;;
+ --list-available-@(packages|vms))
+ opts=""
+ ;;
+ --@(exec|set-@(user|system)-@(classpath|vm)))
+ opts="${cur}="
+ ;;
+ --set-@(user|system)-@(classpath|vm)=)
+ if [[ "${cur}" == "--set-system-vm=" ]] || [[ "${cur}" == "--set-user-vm=" ]]; then
+ flag="--list-available-vms"
+ args=$(java-config "${flag}" | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
+ else
+ flag="--list-available-packages"
+ args=$(java-config "${flag}" | ${sedcmd})
+ fi
+ #echo "$(java-config ${flag})" >> output
+ #args=$(java-config "${flag}" | ${sedcmd})
+ for arg in ${args}
+ do
+ [ "${opts}" ] && opts="${opts} ${arg}" || opts="${arg}"
+ done
+ COMPREPLY=($(compgen -o nospace -W "${opts}"))
+ return 0
+ ;;
+ "--exec=")
+ COMPREPLY=($(compgen -o nospace -W "${execopts}"))
+ return 0
+ ;;
+ *)
+ if [[ "${cur}" == "--set-system-vm="* ]] || [[ "${cur}" == "--set-user-vm="* ]]; then
+ args=$(java-config --list-available-vms | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
+ # spec=$(echo "${cur}" | egrep -o "(--set-(system|user)-(classpath|vm)=)")
+ # spec=$(echo "${cur}" | ${grepcmd})
+ if [[ "${cur}" == "--set-system-vm="* ]]; then
+ spec=${cur##--set-system-vm=}
+ else
+ spec=${cur##--set-user-vm=}
+ fi
+ for arg in ${args}
+ do
+ if [[ "${arg:0:${#spec}}" == "${spec}" ]]; then
+ [ "${opts}" ] && opts="${opts} ${arg}" || opts="${arg}"
+ fi
+ done
+ [[ "${opts}" == "${spec}" ]] && opts=""
+ COMPREPLY=($(compgen -W "${opts}"))
+ return 0
+ elif [[ "${cur}" == "--set-system-classpath="* ]] || [[ "${cur}" == "--set-user-classpath="* ]]; then
+ args=$(java-config --list-available-packages | ${sedcmd})
+ [ $(echo "${cur}" | grep -c ",") -gt 0 ] && multiplepkgs="true"
+ # spec=$(echo "${cur}" | ${grepcmd})
+ if [[ "${cur}" == "--set-system-classpath="* ]]; then
+ spec="${cur##--set-system-classpath=}"
+ else
+ spec="${cur##--set-user-classpath=}"
+ fi
+ if [[ "${multiplepkgs}" ]]; then
+ pkgs="${spec%,*}"
+ spec="${spec##*,}"
+ fi
+ if [[ "${multiplepkgs}" ]]; then
+ for arg in ${args}
+ do
+ if [[ "${spec}" ]]; then
+ if [[ "${arg:0:${#spec}}" == "${spec}" ]] \
+ && [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]; then
+ [ "${opts}" ] && opts="${opts} ${pkgs},${arg}" || opts="${pkgs},${arg}"
+ fi
+ else
+ if [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]; then
+ [ "${opts}" ] && opts="${opts} ${pkgs},${arg}" || opts="${pkgs},${arg}"
+ fi
+ fi
+ done
+ [[ "${opts}" == "${pkgs},${spec}" ]] && opts=""
+ else
+ for arg in ${args}
+ do
+ if [[ "${spec}" ]] && [[ "${arg:0:${#spec}}" == "${spec}" ]]; then
+ [ "${opts}" ] && opts="${opts} ${arg}" || opts="${arg}"
+ fi
+ done
+ [[ "${opts}" == "${spec}" ]] && opts=""
+ fi
+ COMPREPLY=($(compgen -W "${opts}"))
+ return 0
+ elif [[ "${cur}" == "--exec="* ]]; then
+ spec=${cur##--exec=}
+ for arg in ${execopts}
+ do
+ if [[ "${arg:0:${#spec}}" == "${spec}" ]]; then
+ [ "${opts}" ] && opts="${opts} ${arg}" || opts="${arg}"
+ fi
+ done
+ [[ "${opts}" == "${spec}" ]] && opts=""
+ COMPREPLY=($(compgen -W "${opts}"))
+ return 0
+ else
+ opts="--javac \
+ --java \
+ --jar \
+ --jdk-home \
+ --jre-home \
+ --java-version \
+ --classpath \
+ --full-classpath \
+ --exec \
+ --list-available-packages \
+ --list-available-vms \
+ --set-system-vm \
+ --set-user-vm \
+ --set-system-classpath \
+ --set-user-classpath \
+ --clean-system-classpath"
+ fi
+ ;;
+ esac
+ else
+ opts=""
+ fi
+ COMPREPLY=($(compgen -o nospace -W "${opts}" | grep ^${cur}))
+ return 0
+}
+complete -o nospace -F _javaconfig java-config
+
+_openglupdate()
+{
+ local cur opts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ numwords=${#COMP_WORDS[*]}
+ if [ ${numwords} -gt 2 ]; then
+ return 0
+ fi
+ COMPREPLY=($(compgen -W 'nvidia xfree' $cur))
+ COMPREPLY=($(echo " ${COMP_WORDS[@]}" | \
+ (while read -d ' ' i; do
+ [ "$i" == "" ] && continue
+ # flatten array with spaces on either side,
+ # otherwise we cannot grep on word
+ # boundaries of first and last word
+ COMPREPLY=" ${COMPREPLY[@]} "
+ # remove word from list of completions
+ COMPREPLY=( ${COMPREPLY/ $i / })
+ done
+ echo ${COMPREPLY[@]})))
+ return 0
+}
+complete -F _openglupdate opengl-update