* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
2018-03-02 18:06 Michał Górny
@ 2014-08-31 21:19 ` Michał Górny
0 siblings, 0 replies; 34+ messages in thread
From: Michał Górny @ 2014-08-31 21:19 UTC (permalink / raw
To: gentoo-commits
commit: 1781d5b81021858db447d4c63f68e081e320fd00
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 31 19:18:57 2014 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Aug 31 19:18:57 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-bashcomp.git;a=commit;h=1781d5b8
Split completions by completed command.
---
completions/browser-config | 31 +
completions/distcc-config | 41 ++
completions/ebuild | 34 +
completions/ekeyword | 46 ++
completions/emerge | 410 +++++++++++
completions/epkginfo | 28 +
completions/epm | 48 ++
completions/equery | 280 ++++++++
completions/euse | 60 ++
completions/gcc-config | 45 ++
completions/gentoo | 1652 --------------------------------------------
completions/glsa-check | 33 +
completions/java-config | 158 +++++
completions/metagen | 30 +
completions/portageq | 87 +++
completions/rc | 21 +
completions/rc-service | 111 +++
completions/rc-status | 28 +
completions/rc-update | 40 ++
completions/revdep-rebuild | 55 ++
completions/splat | 33 +
completions/webapp-config | 169 +++++
22 files changed, 1788 insertions(+), 1652 deletions(-)
diff --git a/completions/browser-config b/completions/browser-config
new file mode 100644
index 0000000..158ca42
--- /dev/null
+++ b/completions/browser-config
@@ -0,0 +1,31 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# browser-config completion command
+#
+_browserconfig()
+{
+ local cur prev
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ if [[ ${COMP_CWORD} -eq 1 ]]; then
+ COMPREPLY=($(compgen -W '-b -h -m' -- ${cur}))
+ elif [[ "${prev}" == "-b" ]]; then
+ COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/usr/share/browser-config/*; do [ -f $i ] && echo ${i##*/}; done)" $cur))
+ elif [[ "${prev}" == "-m" ]]; then
+ COMPREPLY=($(compgen -W "same_window new_window new_tab new_browser" -- ${cur}))
+ if [[ -z "${COMPREPLY}" ]]; then
+ COMPREPLY=''
+ fi
+ else
+ unset COMPREPLY
+ fi
+ return 0
+} &&
+complete -F _browserconfig browser-config
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/distcc-config b/completions/distcc-config
new file mode 100644
index 0000000..41c315f
--- /dev/null
+++ b/completions/distcc-config
@@ -0,0 +1,41 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# 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
+ unset COMPREPLY
+ 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
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/ebuild b/completions/ebuild
new file mode 100644
index 0000000..cd6e17e
--- /dev/null
+++ b/completions/ebuild
@@ -0,0 +1,34 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# ebuild completion command
+#
+_ebuild()
+{
+ local cur opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+
+ opts="help setup clean fetch digest manifest unpack compile test preinst \
+ install postinst qmerge merge unmerge prerm postrm config package rpm \
+ configure prepare"
+
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ COMPREPLY=($(compgen -f -X "!*.ebuild" -- ${cur}) \
+ $(compgen -d -- ${cur}) \
+ $(compgen -W '--debug --force --help --ignore-default-opts --skip-manifest' -- ${cur}))
+
+ elif [[ $COMP_CWORD -eq 2 && "${COMP_WORDS[1]}" = "--debug --force --ignore-default-opts --skip-manifest" ]] ; then
+ COMPREPLY=($(compgen -f -X "!*.ebuild" -- ${cur}) $(compgen -d -- ${cur}))
+
+ elif [[ $COMP_CWORD -ge 2 ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ fi
+ return 0
+} &&
+complete -o filenames -F _ebuild ebuild
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/ekeyword b/completions/ekeyword
new file mode 100644
index 0000000..3bf3006
--- /dev/null
+++ b/completions/ekeyword
@@ -0,0 +1,46 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# ekeyword completion
+#
+
+_ekeyword()
+{
+ local cur portdir archl_s archl_u archl_r archl_m arch
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ portdir=$(_portdir)
+
+ [[ -f ${portdir}/profiles/arch.list ]] || return 0
+
+ for arch in all $(< ${portdir}/profiles/arch.list) ; do
+ archl_m="${archl_m} -${arch}"
+ archl_u="${archl_u} ~${arch}"
+ archl_r="${archl_r} ^${arch}"
+ archl_s="${archl_s} ${arch}"
+ done
+
+ case ${cur} in
+ -*)
+ COMPREPLY=($(compgen -W "${archl_m}" -- ${cur}))
+ ;;
+ ~*)
+ COMPREPLY=($(compgen -W "${archl_u}" -- ${cur}))
+ ;;
+ ^*)
+ COMPREPLY=($(compgen -W "${archl_r}" -- ${cur}))
+ ;;
+ *)
+ COMPREPLY=($(compgen -W "${archl_s}" -- ${cur}))
+ _filedir 'ebuild'
+ ;;
+ esac
+} &&
+complete -o filenames -F _ekeyword ekeyword
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/emerge b/completions/emerge
new file mode 100644
index 0000000..63c02b4
--- /dev/null
+++ b/completions/emerge
@@ -0,0 +1,410 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# emerge completion command
+#
+_emerge()
+{
+ local c cur prev curword numwords opts cond prepend
+ local words stophere i x
+ local action actionpos sysactions pkgpos
+ local portdir=$(_portdir -o)
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ numwords=${#COMP_WORDS[*]}
+ curword=${COMP_CWORD}
+ opts=''
+
+ if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
+ COMPREPLY=($(compgen -f -- ${cur}))
+ return 0
+ fi
+
+ # find action
+ for x in ${COMP_LINE} ; do
+ if [[ ${x} =~ ^(system|world)$ ]] || [[ ${x} =~ -[CPcs] ]] || \
+ [[ ${x} =~ --(clean|config|depclean|info|metadata|prune|regen|resume|search|sync|unmerge) ]]
+ then
+ action=${x}
+ break
+ fi
+ done
+
+ if [[ -n ${action} ]]; then
+ for ((i = 0; i < ${numwords}; i++ )); do
+ if [[ ${COMP_WORDS[${i}]} == "${action}" ]]; then
+ actionpos=${i}
+ pkgpos=$((actionpos + 1))
+ break
+ fi
+ done
+
+ if [[ ${action} == -* && ${action} != --* ]] ; then
+ case "${action}" in
+ -*C*) action='--unmerge' ;;
+ -*P*) action='--prune' ;;
+ -*c*) action='--clean' ;;
+ -*s*) action='--search' ;;
+ esac
+ fi
+ else
+ for ((i = 1; i < ${numwords}; i++ )); do
+ if [[ ! ${COMP_WORDS[$i]} == -* ]]; then
+ pkgpos=${i}
+ break
+ fi
+ done
+ [[ -z ${pkgpos} ]] && pkgpos=${numwords}
+ fi
+
+ # Handle special cases.
+ if [[ ${action} == "--search" ]] || [[ ${COMP_LINE} == *" "-@(S|-searchdesc)* ]] || \
+ [[ ${COMP_LINE} == *" "-@(V|-version)* ]] || [[ ${action} == "--metadata" ]]
+ then
+ unset COMPREPLY
+ return 0
+ elif [[ ${COMP_LINE} == *" "-@(h|-help)* ]] ; then
+ unset COMPREPLY
+ [[ ${curword} -eq 2 ]] && COMPREPLY=($(compgen -W 'system world --sync' -- ${cur}))
+ return 0
+ fi
+
+ # Complete on options.
+ if [[ ${cur} == -* ]]; then
+ # If a resume option was specified, it needs special handling.
+ if [[ ${COMP_LINE} =~ --(resume|skipfirst) ]] ; then
+ if [[ ${cur} == --* ]]; then
+ opts="--ask --pretend --resume --skipfirst"
+ elif [[ ${cur} == -* ]]; then
+ [[ ${COMP_LINE} =~ --(ask|pretend) ]] && opts="-a -p"
+ fi
+ elif [[ ${cur} == --* ]]; then
+ # Complete on long options.
+ opts="--alphabetical --ask \
+ --buildpkg --buildpkgonly \
+ --changelog --clean --color=y --color=n --columns --complete-graph --config \
+ --debug --deep --depclean \
+ --emptytree \
+ --fetch-all-uri --fetchonly \
+ --getbinpkg --getbinpkgonly \
+ --ignore-default-opts --info \
+ --jobs= \
+ --keep-going \
+ --metadata \
+ --newuse --noconfmem --nodeps --noreplace --nospinner \
+ --oneshot --onlydeps \
+ --pretend --prune \
+ --quiet \
+ --reinstall=changed-use --regen \
+ --search \
+ --sync \
+ --tree \
+ --unmerge --update --upgradeonly --usepkg --usepkgonly \
+ --verbose \
+ --with-bdeps=y --with-bdeps=n"
+ if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
+ opts="${opts} --help --resume --searchdesc --version"
+ fi
+ elif [[ ${cur} == -* ]]; then
+ # Complete on short options.
+ opts="-B -D -G -K -N -O -a -b -d -e -f -g -k -l -n -o -p -q -t -u -v"
+ if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
+ opts="${opts} -h -S -V"
+ fi
+ if [[ -z ${action} ]] && [[ ${curword} -eq $((pkgpos - 1)) ]] ; then
+ opts="${opts} -C -P -c -s"
+ fi
+ fi
+
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+
+ # NOTE: This slows things down!
+ # (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
+ [[ -z ${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
+ fi # options
+
+ # Stop completion if a special case is encountered.
+ if [[ ${action} =~ (system|world) ]] || \
+ [[ ${COMP_LINE} =~ --(depclean|metadata|regen|resume|skipfirst|sync) ]]
+ then
+ unset COMPREPLY
+ return 0
+ fi
+
+ # Complete on installed packages when unmerging.
+ if [[ "${action}" == '--unmerge' ]]; then
+ if [[ -n "${cur}" ]] ; then
+ if [[ "${cur}" == */* ]]; then
+ words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -G "${cur}*")
+ else
+ words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -S '/' -G "${cur}*")
+
+ local n=0
+ for i in ${words} ; do
+ [[ ${i} == ${cur}* ]] && n=$((n+1))
+ done
+
+ if [[ ${n} -eq 1 ]] ; then
+ words="$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -G "*-*/*")"
+ fi
+ fi
+ COMPREPLY=($(for i in ${words} ; do \
+ [[ ${i} == ${cur}* ]] && echo ${i} ; \
+ done))
+ else
+ COMPREPLY=($(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -S '/' -G "*-*"))
+ fi
+
+ [[ -z "${COMPREPLY}" ]] && _pkgname_only ${cur} @GENTOO_PORTAGE_EPREFIX@/var/db/pkg
+ return 0
+ fi
+
+ # Check for conditional.
+ cond="${cur%%[A-Za-z0-9]*}"
+ cur="${cur:${#cond}}"
+ if [[ ${cond:0:1} == "'" || ${cond:0:1} == '"' ]] ; then
+ prepend="-P ${cond:1}"
+ c="${cond:1}"
+ else
+ c="${cond}"
+ fi
+
+ # Handle cases where a conditional is specified.
+ if [[ -n "${cond}" ]]; then
+ if [[ -n "${cur}" ]]; then
+ if [[ ${cur} == */* ]]; then
+ if [[ ${cur} == *-[0-9]* ]] ; then
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ local cat="${cur%/*}" ; \
+ local pkg="$(echo ${cur%-[0-9]*})" ; \
+ pkg="${pkg##*/}" ; \
+ for x in ${cat}/${pkg}/*.ebuild ; do \
+ [[ -f ${x} ]] || continue ; \
+ x="${x/${pkg}\/}" ; \
+ echo "${x%*.ebuild}" ; \
+ done ; \
+ done)"
+ else
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd}; \
+ compgen -X "*metadata.xml" -G "${cur}*" -- ${cur} ; \
+ done)"
+ fi
+
+ local w
+ for x in $words ; do
+ w="${x}\n${w}"
+ done
+
+ words=$(echo -ne ${w} | sort | uniq)
+ COMPREPLY=( ${words} )
+
+ # Complete on the specific versions (if appropriate).
+ # TODO - see if we can use _pkgname
+ if [[ ${#COMPREPLY[@]} -le 1 ]]; then
+ COMPREPLY=($(
+ for pd in ${portdir}; do
+ if [[ -d ${pd}/metadata/md5-cache ]]; then
+ builtin cd ${pd}/metadata/md5-cache
+ compgen ${prepend} -G "${cur}*" -- "${cur}"
+ elif [[ -d ${pd}/metadata/cache ]]; then
+ builtin cd ${pd}/metadata/cache
+ compgen ${prepend} -G "${cur}*" -- "${cur}"
+ else
+ builtin cd ${pd}
+ local cat="${cur%/*}"
+ local pkg="$(echo ${cur%-[0-9]*}*)"
+ pkg="${pkg##*/}"
+ for x in ${cat}/${pkg}/*.ebuild; do
+ [[ -f "${x}" ]] || continue
+ x="${x/${pkg}\/}"
+ if [[ ${cond:0:1} == "'" ]] || [[ ${cond:0:1} == '"' ]]; then
+ echo "${c}${x%*.ebuild}"
+ else
+ echo "${x%*.ebuild}"
+ fi
+ done
+ fi
+ done
+ ))
+ else
+ COMPREPLY=($(compgen ${prepend} -W "${words}" -- $cur))
+ fi
+ else
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ compgen ${prepend} -S '/' -G "${cur}*" -- "${cur}" ; \
+ done)"
+
+ local w
+ for x in words ; do
+ w="${x}\n${w}"
+ done
+
+ COMPREPLY=($(echo -e ${w} | uniq))
+ [[ ${#COMPREPLY[@]} = 1 ]] && \
+ COMPREPLY=($(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ compgen ${prepend} -G "${cur}*/*" -- "${cur}" ; \
+ done))
+ fi
+ else
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd}; \
+ compgen -G "*-*"; \
+ done)"
+ COMPREPLY=($(compgen -W "${words}" -- "${cur}"))
+ fi
+
+ # If all else fails, try to complete on package names without the
+ # category being specified.
+ if [[ -z "${COMPREPLY}" ]]; then
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd}; \
+ for i in *-*/${cur}*; do \
+ [[ -d $i ]] && echo ${i##*/}; \
+ done ; \
+ done)"
+
+ COMPREPLY=($(compgen ${prepend} -W "${words}" -- ${cur}))
+
+ if [[ ${#COMPREPLY[@]} -le 1 ]]; then
+ # Now complete on the specific versions.
+ words="$(
+ for pd in ${portdir}; do
+ if [[ -d ${pd}/metadata/md5-cache ]]; then
+ builtin cd ${pd}/metadata/md5-cache
+ for i in */${cur}*; do
+ [[ -f $i ]] && echo ${i##*/}
+ done
+ elif [[ -d ${pd}/metadata/cache ]]; then
+ builtin cd ${pd}/metadata/cache
+ for i in */${cur}*; do
+ [[ -f $i ]] && echo ${i##*/}
+ done
+ fi
+ done
+ )"
+ COMPREPLY=($(compgen ${prepend} -W "${words}" -- "${cur}"))
+ fi
+ fi
+ return 0
+ fi
+
+ # Complete on packages.
+ #
+ # Only allow these actions if no packages have been specified.
+ #
+ # TODO: This doesn't block these actions if no categories are
+ # specified. Please fix me.
+ #
+ # e.g. emerge -a gentoo-dev-sources
+ #
+ # will still allow system and world actions to be specified,
+ # as opposed to
+ #
+ # emerge -a sys-kernel/gentoo-dev-sources
+ #
+ if [[ ${COMP_CWORD} -eq 1 ]] || [[ ! " ${COMP_LINE} " == *" "*[/]*" "* ]] ; then
+ sysactions=$'\n'"system"$'\n'"world"
+ else
+ sysactions=''
+ fi
+
+ if [[ -n "${cur}" ]] ; then
+ if [[ ${cur} == */* ]] ; then
+ words=$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd}; \
+ compgen -X "*metadata.xml" -G "${cur}*" ; \
+ done)"${sysactions}"
+ else
+ local ww=$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ compgen -X "!@(*-*|virtual)" -S '/' -G "${cur}*"; \
+ done)"${sysactions}"
+ # complete on virtuals
+ ww="${ww} $(\
+ for pd in ${portdir} ; do \
+ if [[ -d ${pd}/profiles ]] ; then
+ find ${pd}/profiles -name virtuals -exec \
+ sed -n -e 's|^\(virtual/[[:alnum:]]\+\).*$|\1|p' {} \; | \
+ sort -u
+ fi ; \
+ done)"
+
+ local w
+ for x in ${ww} ; do w="${x}\n${w}" ; done
+
+ words=$(echo -e ${w} | sort -u)
+
+ local n=0
+ for i in ${words} ; do
+ [[ ${i} == ${cur}* ]] && n=$((n+1))
+ done
+
+ if [[ ${n} -eq 1 ]] ; then
+ words=$(for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ compgen -G "*-*/*" ; \
+ done)"${sysactions}"
+ fi
+ fi
+ COMPREPLY=($(for i in ${words} ; do \
+ [[ ${i} == ${cur}* ]] && echo ${i} ; \
+ done))
+ else
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ compgen -S '/' -G "*-*" ; \
+ done)""${sysactions}"
+ COMPREPLY=($(compgen -W "${words}" -- ${cur}))
+ fi
+
+ # If all else fails, try to complete on package names without the
+ # category being specified.
+ if [[ -z "${COMPREPLY}" ]]; then
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd}; \
+ for i in [a-z]*-[a-z0-9]*/${cur}*; do \
+ [[ -d $i ]] && echo ${i##*/}; \
+ done ; \
+ done)"
+ COMPREPLY=($(compgen -W "${words}" -- ${cur}))
+ fi
+
+ return 0
+} &&
+complete -o filenames -F _emerge emerge
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/epkginfo b/completions/epkginfo
new file mode 100644
index 0000000..34c81f3
--- /dev/null
+++ b/completions/epkginfo
@@ -0,0 +1,28 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# epkginfo completion
+#
+
+_epkginfo()
+{
+ local cur prev
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${COMP_CWORD} -eq 1 || ${prev:0:1} == "-" ]]; then
+ _equery_meta $cur
+ fi
+
+ return 0
+} &&
+complete -F _epkginfo epkginfo
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/epm b/completions/epm
new file mode 100644
index 0000000..e8a8caa
--- /dev/null
+++ b/completions/epm
@@ -0,0 +1,48 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+_epm() {
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD]}"
+ opts="-q --query -V -y --verify -e --erase --help"
+
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ return 0
+ fi
+
+ case "${prev}" in
+ --help)
+ COMPREPLY=()
+ ;;
+ -q|--query)
+ _pkgname -I ${cur}
+ COMPREPLY=($(compgen -W "${COMPREPLY[@]} -l -f -G -a" -- ${cur}))
+ ;;
+ *)
+ local x all=0 file=0
+ for x in ${COMP_WORDS[@]} ; do
+ [[ ${x} == -* ]] || continue
+ [[ ${x} == *f* ]] && file=1
+ [[ ${x} == *a* ]] && all=1
+ done
+
+ if [[ ${file} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -f -- ${cur}))
+ elif [[ ${all} -eq 1 ]] ; then
+ COMPREPLY=()
+ else
+ _pkgname -I ${cur}
+ fi
+ ;;
+ esac
+} &&
+complete -o filenames -F _epm epm
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/equery b/completions/equery
new file mode 100644
index 0000000..a8aa829
--- /dev/null
+++ b/completions/equery
@@ -0,0 +1,280 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# Bash completion for the Gentoo 'equery' command
+#
+_equery()
+{
+ local cur prev mode portdir i j
+ portdir=$(_portdir)
+ mode="GLOBAL"
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ # Find out what we're currently doing here.
+ j=0
+ for i in "${COMP_WORDS[@]}"; do
+ if [[ $j -lt $COMP_CWORD ]]; then
+ j=$((j + 1))
+ case $i in
+ @(belongs|ch@(anges|eck)|dep@(ends|graph)|files|has?(use)|keywords|list|meta|size|uses|which|b|c|k|d|g|f|a|h|y|l|m|s|u|w))
+ mode=$i
+ ;;
+ esac
+ fi
+ done
+ # Now get to work.
+ case $mode in
+ GLOBAL)
+ # Complete commands and global options.
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-q --quiet -C --nocolor -h --help -V --version" -- $cur))
+ ;;
+ *)
+ COMPREPLY=($(compgen -W "belongs changes check depends depgraph files has hasuse keywords list meta size uses which" -- $cur))
+ ;;
+ esac
+ ;;
+ c?(hanges))
+ # Complete package name only if it is not yet supplied.
+ if [[ ${prev} == ${mode} ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help" -- $cur))
+ ;;
+ *)
+ _pkgname -A $cur
+ ;;
+ esac
+ else
+ case $cur in
+ *)
+ COMPREPLY=($(compgen -W "-h --help -l --latest -f --full --limit --from --to" -- $cur))
+ ;;
+ esac
+ fi
+ ;;
+ f?(iles))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ # --filter=<list>: completion of the files types list
+ if [[ ${prev} == "-f" || "${cur}" == "--filter="* ]] ; then
+ COMPREPLY=($(_list_compgen "${cur#--filter=}" , \
+ dir,obj,sym,dev,fifo,path,conf,cmd,doc,man,info))
+ return 0
+ fi
+ case $cur in
+ --f*)
+ # don't handle --filter= with others to avoid space after the "="
+ COMPREPLY=($(compgen -P "--filter=" \
+ -W "dir obj sym dev fifo path conf cmd doc man info"))
+ ;;
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -m --md5sum -s --timestamp -t
+ --type --tree -f --filter=" -- $cur))
+ ;;
+ *)
+ # Only installed packages can have their files listed.
+ _pkgname -I $cur
+ ;;
+ esac
+ fi
+ ;;
+ a|has)
+ COMPREPLY=($(compgen -W "-h --help -I --exclude-installed -o \
+ --overlay-tree -p --portage-tree -F --format" -- $cur))
+ ;;
+ y|keywords)
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case "${cur}" in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -v --version -a --arch -A
+ --align -T --top-position -B --bold -C --color -O --overlays
+ -P --prefix -S --ignore-slot" -- $cur))
+ ;;
+ *)
+ _pkgname -A $cur
+ ;;
+ esac
+ fi
+ ;;
+ l?(ist))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case "${cur}" in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -d --duplicates -b
+ --binpkgs-missing -f --full-regex -m --mask-reason -I
+ --exclude-installed -o --overlay-tree -p --portage-tree -F
+ --format" -- $cur))
+ ;;
+ *)
+ if [[ ${COMP_WORDS[@]} =~ -(p|o) || ${COMP_WORDS[@]} =~ --(portage|overlay)-tree ]]; then
+ _pkgname -A $cur
+ else
+ _pkgname -I $cur
+ fi
+ ;;
+ esac
+ fi
+ ;;
+ b?(elongs))
+ # Only complete if the previous entry on the command line is not
+ # a file name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -f --full-regex -e
+ --early-out -n --name-only" -- $cur))
+ ;;
+ *)
+ COMPREPLY=($(compgen -f -- $cur) \
+ $(compgen -d -S '/' -- $cur))
+ ;;
+ esac
+ fi
+ ;;
+ u?(ses))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -a --all" -- $cur))
+ ;;
+ *)
+ # Complete on all package names.
+ _pkgname -A $cur
+ ;;
+ esac
+ fi
+ ;;
+ w?(hich))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -m --include-masked" -- $cur))
+ ;;
+ *)
+ # Complete on all package names.
+ _pkgname -A $cur
+ ;;
+ esac
+ fi
+ ;;
+ g|depgraph)
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -A --no-atom -M --no-mask -U
+ --no-useflags -l --linear --depth" -- $cur))
+ ;;
+ *)
+ # Complete on all package names.
+ _pkgname -A $cur
+ ;;
+ esac
+ fi
+ ;;
+ d?(epends))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -a --all-packages -D
+ --indirect --depth" -- $cur))
+ ;;
+ *)
+ case $prev in
+ -a|--all-packages)
+ # Complete on all package names.
+ _pkgname -A $cur
+ ;;
+ *)
+ # Complete on installed package names.
+ _pkgname -I $cur
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ ;;
+ m?(eta))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ _equery_meta $cur
+ fi
+ ;;
+ k|check)
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "${COMPREPLY[@]} -h --help -f
+ --full-regex -o --only-failures" -- ${cur}))
+ ;;
+ *)
+ # Only installed packages can have their integrity verified.
+ _pkgname -I $cur
+ ;;
+ esac
+ fi
+ ;;
+ s?(ize))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -b --bytes -f
+ --full-regex" -- $cur))
+ ;;
+ *)
+ # Only installed packages can have their size calculated.
+ _pkgname -I $cur
+ ;;
+ esac
+ fi
+ ;;
+ h?(asuse))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "--help -i --installed -I --exclude-installed -p --portage-tree -o --overlay" -- $cur))
+ ;;
+ *)
+ local glob loc
+ [[ -f ${portdir}/profiles/use.desc ]] || return 0
+ [[ -f ${portdir}/profiles/use.local.desc ]] || return 0
+ glob=$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc)
+ loc=$(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)
+ COMPREPLY=($(compgen -W "$glob $loc" -- $cur))
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ return 0
+} &&
+complete -F _equery equery
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/euse b/completions/euse
new file mode 100644
index 0000000..e7bed0a
--- /dev/null
+++ b/completions/euse
@@ -0,0 +1,60 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+_euse() {
+ local cur prev opts sopts use portdir
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ opts="-h --help -v --version -i --info -I --info-installed -a --active
+ -E --enable -D --disable -P --prune"
+ sopts="-g --global -l --local"
+
+ if [[ ${cur} == -* ]] && [[ ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ return 0
+ fi
+
+ case "${prev}" in
+ -h|--help|-v|--version)
+ COMPREPLY=()
+ ;;
+ -a|--active)
+ COMPREPLY=($(compgen -W "${sopts}" -- ${cur}))
+ ;;
+ -i|--info|-I|--info-installed|-E|--enable|-D|--disable|-P|--prune)
+ portdir=$(_portdir)
+ use="$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc) \
+ $(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)"
+ COMPREPLY=($(compgen -W "${use} ${sopts}" -- ${cur}))
+ ;;
+ *)
+ local l=0 g=0
+
+ if [[ ${COMP_LINE} == *" "@(-l|--local)* ]] ; then
+ l=1
+ elif [[ ${COMP_LINE} == *" "@(-g|--global)* ]] ; then
+ g=1
+ fi
+
+ if [[ ${COMP_LINE} == *" "@(-i|--info|-I|--info-installed|-E|--enable|-D|--disable|-P|--prune)* ]]
+ then
+ portdir=$(_portdir)
+
+ if [[ ${l} -eq 1 ]] ; then
+ use=$(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)
+ elif [[ ${g} -eq 1 ]] ; then
+ use=$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc)
+ fi
+
+ COMPREPLY=($(compgen -W "${use}" -- ${cur}))
+ fi
+ esac
+} &&
+complete -F _euse euse
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/gcc-config b/completions/gcc-config
new file mode 100644
index 0000000..80e95c3
--- /dev/null
+++ b/completions/gcc-config
@@ -0,0 +1,45 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# gcc-config completion command
+#
+_gcc_config() {
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ opts="-O --use-old \
+ -P --use-portage-chost \
+ -c --get-current-profile \
+ -l --list-profiles \
+ -E --print-environ \
+ -B --get-bin-path \
+ -L --get-lib-path \
+ -X --get-stdcxx-incdir"
+
+ if [[ "${cur}" == -* ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ elif [[ ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) \
+ $(compgen -W "$(gcc-config -l | sed -r -e 's/(\[([^]]*)\]) //g')" \
+ -- ${cur}) )
+ return 0
+ fi
+
+ case "${prev}" in
+ -O|--use-old|-P|--use-portage-chost|-c|--get-current-profile|-l|--list-profiles)
+ COMPREPLY=()
+ ;;
+ *)
+ COMPREPLY=( $(compgen -W "\
+ $(gcc-config -l | sed -r -e 's/(\[([^]]*)\]) //g')" -- ${cur}) )
+ ;;
+ esac
+} &&
+complete -F _gcc_config gcc-config
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/gentoo b/completions/gentoo
deleted file mode 100644
index 30a1eb1..0000000
--- a/completions/gentoo
+++ /dev/null
@@ -1,1652 +0,0 @@
-# Gentoo Linux Bash Shell Command Completion
-#
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-
-source "@helpersdir@/gentoo-common.sh"
-
-#
-# emerge completion command
-#
-_emerge()
-{
- local c cur prev curword numwords opts cond prepend
- local words stophere i x
- local action actionpos sysactions pkgpos
- local portdir=$(_portdir -o)
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- numwords=${#COMP_WORDS[*]}
- curword=${COMP_CWORD}
- opts=''
-
- if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
- COMPREPLY=($(compgen -f -- ${cur}))
- return 0
- fi
-
- # find action
- for x in ${COMP_LINE} ; do
- if [[ ${x} =~ ^(system|world)$ ]] || [[ ${x} =~ -[CPcs] ]] || \
- [[ ${x} =~ --(clean|config|depclean|info|metadata|prune|regen|resume|search|sync|unmerge) ]]
- then
- action=${x}
- break
- fi
- done
-
- if [[ -n ${action} ]]; then
- for ((i = 0; i < ${numwords}; i++ )); do
- if [[ ${COMP_WORDS[${i}]} == "${action}" ]]; then
- actionpos=${i}
- pkgpos=$((actionpos + 1))
- break
- fi
- done
-
- if [[ ${action} == -* && ${action} != --* ]] ; then
- case "${action}" in
- -*C*) action='--unmerge' ;;
- -*P*) action='--prune' ;;
- -*c*) action='--clean' ;;
- -*s*) action='--search' ;;
- esac
- fi
- else
- for ((i = 1; i < ${numwords}; i++ )); do
- if [[ ! ${COMP_WORDS[$i]} == -* ]]; then
- pkgpos=${i}
- break
- fi
- done
- [[ -z ${pkgpos} ]] && pkgpos=${numwords}
- fi
-
- # Handle special cases.
- if [[ ${action} == "--search" ]] || [[ ${COMP_LINE} == *" "-@(S|-searchdesc)* ]] || \
- [[ ${COMP_LINE} == *" "-@(V|-version)* ]] || [[ ${action} == "--metadata" ]]
- then
- unset COMPREPLY
- return 0
- elif [[ ${COMP_LINE} == *" "-@(h|-help)* ]] ; then
- unset COMPREPLY
- [[ ${curword} -eq 2 ]] && COMPREPLY=($(compgen -W 'system world --sync' -- ${cur}))
- return 0
- fi
-
- # Complete on options.
- if [[ ${cur} == -* ]]; then
- # If a resume option was specified, it needs special handling.
- if [[ ${COMP_LINE} =~ --(resume|skipfirst) ]] ; then
- if [[ ${cur} == --* ]]; then
- opts="--ask --pretend --resume --skipfirst"
- elif [[ ${cur} == -* ]]; then
- [[ ${COMP_LINE} =~ --(ask|pretend) ]] && opts="-a -p"
- fi
- elif [[ ${cur} == --* ]]; then
- # Complete on long options.
- opts="--alphabetical --ask \
- --buildpkg --buildpkgonly \
- --changelog --clean --color=y --color=n --columns --complete-graph --config \
- --debug --deep --depclean \
- --emptytree \
- --fetch-all-uri --fetchonly \
- --getbinpkg --getbinpkgonly \
- --ignore-default-opts --info \
- --jobs= \
- --keep-going \
- --metadata \
- --newuse --noconfmem --nodeps --noreplace --nospinner \
- --oneshot --onlydeps \
- --pretend --prune \
- --quiet \
- --reinstall=changed-use --regen \
- --search \
- --sync \
- --tree \
- --unmerge --update --upgradeonly --usepkg --usepkgonly \
- --verbose \
- --with-bdeps=y --with-bdeps=n"
- if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
- opts="${opts} --help --resume --searchdesc --version"
- fi
- elif [[ ${cur} == -* ]]; then
- # Complete on short options.
- opts="-B -D -G -K -N -O -a -b -d -e -f -g -k -l -n -o -p -q -t -u -v"
- if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
- opts="${opts} -h -S -V"
- fi
- if [[ -z ${action} ]] && [[ ${curword} -eq $((pkgpos - 1)) ]] ; then
- opts="${opts} -C -P -c -s"
- fi
- fi
-
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
-
- # NOTE: This slows things down!
- # (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
- [[ -z ${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
- fi # options
-
- # Stop completion if a special case is encountered.
- if [[ ${action} =~ (system|world) ]] || \
- [[ ${COMP_LINE} =~ --(depclean|metadata|regen|resume|skipfirst|sync) ]]
- then
- unset COMPREPLY
- return 0
- fi
-
- # Complete on installed packages when unmerging.
- if [[ "${action}" == '--unmerge' ]]; then
- if [[ -n "${cur}" ]] ; then
- if [[ "${cur}" == */* ]]; then
- words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -G "${cur}*")
- else
- words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -S '/' -G "${cur}*")
-
- local n=0
- for i in ${words} ; do
- [[ ${i} == ${cur}* ]] && n=$((n+1))
- done
-
- if [[ ${n} -eq 1 ]] ; then
- words="$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -G "*-*/*")"
- fi
- fi
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- else
- COMPREPLY=($(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -S '/' -G "*-*"))
- fi
-
- [[ -z "${COMPREPLY}" ]] && _pkgname_only ${cur} @GENTOO_PORTAGE_EPREFIX@/var/db/pkg
- return 0
- fi
-
- # Check for conditional.
- cond="${cur%%[A-Za-z0-9]*}"
- cur="${cur:${#cond}}"
- if [[ ${cond:0:1} == "'" || ${cond:0:1} == '"' ]] ; then
- prepend="-P ${cond:1}"
- c="${cond:1}"
- else
- c="${cond}"
- fi
-
- # Handle cases where a conditional is specified.
- if [[ -n "${cond}" ]]; then
- if [[ -n "${cur}" ]]; then
- if [[ ${cur} == */* ]]; then
- if [[ ${cur} == *-[0-9]* ]] ; then
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- local cat="${cur%/*}" ; \
- local pkg="$(echo ${cur%-[0-9]*})" ; \
- pkg="${pkg##*/}" ; \
- for x in ${cat}/${pkg}/*.ebuild ; do \
- [[ -f ${x} ]] || continue ; \
- x="${x/${pkg}\/}" ; \
- echo "${x%*.ebuild}" ; \
- done ; \
- done)"
- else
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd}; \
- compgen -X "*metadata.xml" -G "${cur}*" -- ${cur} ; \
- done)"
- fi
-
- local w
- for x in $words ; do
- w="${x}\n${w}"
- done
-
- words=$(echo -ne ${w} | sort | uniq)
- COMPREPLY=( ${words} )
-
- # Complete on the specific versions (if appropriate).
- # TODO - see if we can use _pkgname
- if [[ ${#COMPREPLY[@]} -le 1 ]]; then
- COMPREPLY=($(
- for pd in ${portdir}; do
- if [[ -d ${pd}/metadata/md5-cache ]]; then
- builtin cd ${pd}/metadata/md5-cache
- compgen ${prepend} -G "${cur}*" -- "${cur}"
- elif [[ -d ${pd}/metadata/cache ]]; then
- builtin cd ${pd}/metadata/cache
- compgen ${prepend} -G "${cur}*" -- "${cur}"
- else
- builtin cd ${pd}
- local cat="${cur%/*}"
- local pkg="$(echo ${cur%-[0-9]*}*)"
- pkg="${pkg##*/}"
- for x in ${cat}/${pkg}/*.ebuild; do
- [[ -f "${x}" ]] || continue
- x="${x/${pkg}\/}"
- if [[ ${cond:0:1} == "'" ]] || [[ ${cond:0:1} == '"' ]]; then
- echo "${c}${x%*.ebuild}"
- else
- echo "${x%*.ebuild}"
- fi
- done
- fi
- done
- ))
- else
- COMPREPLY=($(compgen ${prepend} -W "${words}" -- $cur))
- fi
- else
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- compgen ${prepend} -S '/' -G "${cur}*" -- "${cur}" ; \
- done)"
-
- local w
- for x in words ; do
- w="${x}\n${w}"
- done
-
- COMPREPLY=($(echo -e ${w} | uniq))
- [[ ${#COMPREPLY[@]} = 1 ]] && \
- COMPREPLY=($(\
- for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- compgen ${prepend} -G "${cur}*/*" -- "${cur}" ; \
- done))
- fi
- else
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd}; \
- compgen -G "*-*"; \
- done)"
- COMPREPLY=($(compgen -W "${words}" -- "${cur}"))
- fi
-
- # If all else fails, try to complete on package names without the
- # category being specified.
- if [[ -z "${COMPREPLY}" ]]; then
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd}; \
- for i in *-*/${cur}*; do \
- [[ -d $i ]] && echo ${i##*/}; \
- done ; \
- done)"
-
- COMPREPLY=($(compgen ${prepend} -W "${words}" -- ${cur}))
-
- if [[ ${#COMPREPLY[@]} -le 1 ]]; then
- # Now complete on the specific versions.
- words="$(
- for pd in ${portdir}; do
- if [[ -d ${pd}/metadata/md5-cache ]]; then
- builtin cd ${pd}/metadata/md5-cache
- for i in */${cur}*; do
- [[ -f $i ]] && echo ${i##*/}
- done
- elif [[ -d ${pd}/metadata/cache ]]; then
- builtin cd ${pd}/metadata/cache
- for i in */${cur}*; do
- [[ -f $i ]] && echo ${i##*/}
- done
- fi
- done
- )"
- COMPREPLY=($(compgen ${prepend} -W "${words}" -- "${cur}"))
- fi
- fi
- return 0
- fi
-
- # Complete on packages.
- #
- # Only allow these actions if no packages have been specified.
- #
- # TODO: This doesn't block these actions if no categories are
- # specified. Please fix me.
- #
- # e.g. emerge -a gentoo-dev-sources
- #
- # will still allow system and world actions to be specified,
- # as opposed to
- #
- # emerge -a sys-kernel/gentoo-dev-sources
- #
- if [[ ${COMP_CWORD} -eq 1 ]] || [[ ! " ${COMP_LINE} " == *" "*[/]*" "* ]] ; then
- sysactions=$'\n'"system"$'\n'"world"
- else
- sysactions=''
- fi
-
- if [[ -n "${cur}" ]] ; then
- if [[ ${cur} == */* ]] ; then
- words=$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd}; \
- compgen -X "*metadata.xml" -G "${cur}*" ; \
- done)"${sysactions}"
- else
- local ww=$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- compgen -X "!@(*-*|virtual)" -S '/' -G "${cur}*"; \
- done)"${sysactions}"
- # complete on virtuals
- ww="${ww} $(\
- for pd in ${portdir} ; do \
- if [[ -d ${pd}/profiles ]] ; then
- find ${pd}/profiles -name virtuals -exec \
- sed -n -e 's|^\(virtual/[[:alnum:]]\+\).*$|\1|p' {} \; | \
- sort -u
- fi ; \
- done)"
-
- local w
- for x in ${ww} ; do w="${x}\n${w}" ; done
-
- words=$(echo -e ${w} | sort -u)
-
- local n=0
- for i in ${words} ; do
- [[ ${i} == ${cur}* ]] && n=$((n+1))
- done
-
- if [[ ${n} -eq 1 ]] ; then
- words=$(for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- compgen -G "*-*/*" ; \
- done)"${sysactions}"
- fi
- fi
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- else
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- compgen -S '/' -G "*-*" ; \
- done)""${sysactions}"
- COMPREPLY=($(compgen -W "${words}" -- ${cur}))
- fi
-
- # If all else fails, try to complete on package names without the
- # category being specified.
- if [[ -z "${COMPREPLY}" ]]; then
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd}; \
- for i in [a-z]*-[a-z0-9]*/${cur}*; do \
- [[ -d $i ]] && echo ${i##*/}; \
- done ; \
- done)"
- COMPREPLY=($(compgen -W "${words}" -- ${cur}))
- fi
-
- return 0
-} &&
-complete -o filenames -F _emerge emerge
-
-#
-# ebuild completion command
-#
-_ebuild()
-{
- local cur opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
-
- opts="help setup clean fetch digest manifest unpack compile test preinst \
- install postinst qmerge merge unmerge prerm postrm config package rpm \
- configure prepare"
-
- if [[ $COMP_CWORD -eq 1 ]] ; then
- COMPREPLY=($(compgen -f -X "!*.ebuild" -- ${cur}) \
- $(compgen -d -- ${cur}) \
- $(compgen -W '--debug --force --help --ignore-default-opts --skip-manifest' -- ${cur}))
-
- elif [[ $COMP_CWORD -eq 2 && "${COMP_WORDS[1]}" = "--debug --force --ignore-default-opts --skip-manifest" ]] ; then
- COMPREPLY=($(compgen -f -X "!*.ebuild" -- ${cur}) $(compgen -d -- ${cur}))
-
- elif [[ $COMP_CWORD -ge 2 ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- fi
- return 0
-} &&
-complete -o filenames -F _ebuild ebuild
-
-#
-# rc completion command
-#
-_rc()
-{
- local cur
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- if [[ ${#COMP_WORDS[*]} -le 2 ]]; then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
- fi
- return 0
-} &&
-complete -F _rc rc
-
-#
-# rc-status completion command
-#
-_rcstatus()
-{
- local cur
- cur="${COMP_WORDS[COMP_CWORD]}"
- if [[ $COMP_CWORD -eq 1 ]]; then
- if [[ "${cur}" == --* ]]; then
- COMPREPLY=($(compgen -W '--all --list --unused' -- ${cur}))
- elif [[ "${cur}" == -* ]]; then
- COMPREPLY=($(compgen -W '-a -l -u' -- ${cur}))
- else
- COMPREPLY=($(compgen -W "$(rc-status --list)" -- ${cur}))
- fi
- else
- unset COMPREPLY
- fi
- return 0
-} &&
-complete -F _rcstatus rc-status
-
-#
-# rc-update completion command
-#
-_rcupdate()
-{
- local cur show
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- if [[ $COMP_CWORD -eq 1 ]]; then
- if [[ "${cur}" == -* ]]; then
- COMPREPLY=($(compgen -W '-a -d -s' -- ${cur}))
- else
- COMPREPLY=($(compgen -W 'add del show' ${cur}))
- fi
- else
- if [[ "${COMP_WORDS[1]}" == "show" ]] || [[ "${COMP_WORDS[1]}" == "-s" ]]; then
- show="TRUE"
- fi
- if ([[ $COMP_CWORD -eq 3 ]] && [[ -z "$show" ]]) || \
- ([[ $COMP_CWORD -eq 2 ]] && [[ -n "$show" ]])
- then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
- elif [[ $COMP_CWORD -eq 2 ]]; then
- COMPREPLY=($(compgen -X "*.@(c|sh|test)" -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/init.d/*; do echo ${i##*/}; done)" $cur))
- elif [[ ${#COMP_WORDS[*]} -gt 2 ]] ; then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
- else
- unset COMPREPLY
- fi
- fi
- return 0
-} &&
-complete -F _rcupdate rc-update
-
-#
-# gcc-config completion command
-#
-_gcc_config() {
- local cur prev opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- opts="-O --use-old \
- -P --use-portage-chost \
- -c --get-current-profile \
- -l --list-profiles \
- -E --print-environ \
- -B --get-bin-path \
- -L --get-lib-path \
- -X --get-stdcxx-incdir"
-
- if [[ "${cur}" == -* ]] ; then
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- elif [[ ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) \
- $(compgen -W "$(gcc-config -l | sed -r -e 's/(\[([^]]*)\]) //g')" \
- -- ${cur}) )
- return 0
- fi
-
- case "${prev}" in
- -O|--use-old|-P|--use-portage-chost|-c|--get-current-profile|-l|--list-profiles)
- COMPREPLY=()
- ;;
- *)
- COMPREPLY=( $(compgen -W "\
- $(gcc-config -l | sed -r -e 's/(\[([^]]*)\]) //g')" -- ${cur}) )
- ;;
- esac
-} &&
-complete -F _gcc_config gcc-config
-
-#
-# 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
- unset COMPREPLY
- 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
-
-#
-# java-config completion command
-#
-_javaconfig()
-{
- local cur prev curword numwords opts args arg spec flag sedcmd grepcmd
- local multiplepkgs pkgs execopts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- 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.cgi java_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 --nocolor "${flag}" | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
- else
- flag="--list-available-packages"
- args=$(java-config --nocolor "${flag}" | ${sedcmd})
- fi
- for arg in ${args}; do
- [[ -n "${opts}" ]] && opts="${opts} ${arg}" || opts="${arg}"
- done
- COMPREPLY=($(compgen $nospace -W "${opts}"))
- return 0
- ;;
- --exec=)
- COMPREPLY=($(compgen $nospace -W "${execopts}"))
- return 0
- ;;
- *)
- if [[ "${cur}" == "--set-system-vm="* ]] || [[ "${cur}" == "--set-user-vm="* ]]; then
- args=$(java-config --nocolor --list-available-vms | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
- 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
- [[ -n "${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 --nocolor --list-available-packages | ${sedcmd})
- [[ $(echo "${cur}" | grep -c ",") -gt 0 ]] && multiplepkgs="true"
- if [[ "${cur}" == "--set-system-classpath="* ]]; then
- spec="${cur##--set-system-classpath=}"
- else
- spec="${cur##--set-user-classpath=}"
- fi
- if [[ -n "${multiplepkgs}" ]]; then
- pkgs="${spec%,*}"
- spec="${spec##*,}"
- fi
- if [[ -n "${multiplepkgs}" ]]; then
- for arg in ${args}; do
- if [[ "${spec}" ]]; then
- if [[ "${arg:0:${#spec}}" == "${spec}" ]] \
- && [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]
- then
- [[ -n "${opts}" ]] && opts="${opts} ${pkgs},${arg}" || opts="${pkgs},${arg}"
- fi
- else
- if [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]; then
- [[ -n "${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
- [[ -n "${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
- [[ -n "${opts}" ]] && opts="${opts} ${arg}" || opts="${arg}"
- fi
- done
- [[ "${opts}" == "${spec}" ]] && opts=""
- COMPREPLY=($(compgen -W "${opts}"))
- return 0
- else
- opts="--classpath --clean-system-classpath --clean-user-classpath \
- --exec \
- --full-classpath \
- --jar --java --javac --java-version --jdk-home --jre-home \
- --list-available-packages --list-available-vms \
- --nocolor \
- --set-system-classpath --set-system-vm --set-user-classpath --set-user-vm"
- [[ "$prev" == "--nocolor" ]] && opts="${opts/--nocolor}"
- fi
- ;;
- esac
- elif [[ "$prev" == "--nocolor" ]] && [ ${curword} -eq 2 ] && [ $numwords -le 3 ]; then
- opts="--classpath --clean-system-classpath --clean-user-classpath \
- --exec \
- --full-classpath \
- --jar --java --javac --java-version --jdk-home --jre-home \
- --list-available-packages --list-available-vms \
- --set-system-classpath --set-system-vm --set-user-classpath --set-user-vm"
- fi
- COMPREPLY=($(compgen $nospace -W "${opts}" -- ${cur}))
- return 0
-} &&
-complete $nospace -F _javaconfig java-config
-
-#
-# browser-config completion command
-#
-_browserconfig()
-{
- local cur prev
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- if [[ ${COMP_CWORD} -eq 1 ]]; then
- COMPREPLY=($(compgen -W '-b -h -m' -- ${cur}))
- elif [[ "${prev}" == "-b" ]]; then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/usr/share/browser-config/*; do [ -f $i ] && echo ${i##*/}; done)" $cur))
- elif [[ "${prev}" == "-m" ]]; then
- COMPREPLY=($(compgen -W "same_window new_window new_tab new_browser" -- ${cur}))
- if [[ -z "${COMPREPLY}" ]]; then
- COMPREPLY=''
- fi
- else
- unset COMPREPLY
- fi
- return 0
-} &&
-complete -F _browserconfig browser-config
-
-#
-# Bash completion for the Gentoo 'equery' command
-#
-_equery()
-{
- local cur prev mode portdir i j
- portdir=$(_portdir)
- mode="GLOBAL"
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- # Find out what we're currently doing here.
- j=0
- for i in "${COMP_WORDS[@]}"; do
- if [[ $j -lt $COMP_CWORD ]]; then
- j=$((j + 1))
- case $i in
- @(belongs|ch@(anges|eck)|dep@(ends|graph)|files|has?(use)|keywords|list|meta|size|uses|which|b|c|k|d|g|f|a|h|y|l|m|s|u|w))
- mode=$i
- ;;
- esac
- fi
- done
- # Now get to work.
- case $mode in
- GLOBAL)
- # Complete commands and global options.
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-q --quiet -C --nocolor -h --help -V --version" -- $cur))
- ;;
- *)
- COMPREPLY=($(compgen -W "belongs changes check depends depgraph files has hasuse keywords list meta size uses which" -- $cur))
- ;;
- esac
- ;;
- c?(hanges))
- # Complete package name only if it is not yet supplied.
- if [[ ${prev} == ${mode} ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help" -- $cur))
- ;;
- *)
- _pkgname -A $cur
- ;;
- esac
- else
- case $cur in
- *)
- COMPREPLY=($(compgen -W "-h --help -l --latest -f --full --limit --from --to" -- $cur))
- ;;
- esac
- fi
- ;;
- f?(iles))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- # --filter=<list>: completion of the files types list
- if [[ ${prev} == "-f" || "${cur}" == "--filter="* ]] ; then
- COMPREPLY=($(_list_compgen "${cur#--filter=}" , \
- dir,obj,sym,dev,fifo,path,conf,cmd,doc,man,info))
- return 0
- fi
- case $cur in
- --f*)
- # don't handle --filter= with others to avoid space after the "="
- COMPREPLY=($(compgen -P "--filter=" \
- -W "dir obj sym dev fifo path conf cmd doc man info"))
- ;;
- -*)
- COMPREPLY=($(compgen -W "-h --help -m --md5sum -s --timestamp -t
- --type --tree -f --filter=" -- $cur))
- ;;
- *)
- # Only installed packages can have their files listed.
- _pkgname -I $cur
- ;;
- esac
- fi
- ;;
- a|has)
- COMPREPLY=($(compgen -W "-h --help -I --exclude-installed -o \
- --overlay-tree -p --portage-tree -F --format" -- $cur))
- ;;
- y|keywords)
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case "${cur}" in
- -*)
- COMPREPLY=($(compgen -W "-h --help -v --version -a --arch -A
- --align -T --top-position -B --bold -C --color -O --overlays
- -P --prefix -S --ignore-slot" -- $cur))
- ;;
- *)
- _pkgname -A $cur
- ;;
- esac
- fi
- ;;
- l?(ist))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case "${cur}" in
- -*)
- COMPREPLY=($(compgen -W "-h --help -d --duplicates -b
- --binpkgs-missing -f --full-regex -m --mask-reason -I
- --exclude-installed -o --overlay-tree -p --portage-tree -F
- --format" -- $cur))
- ;;
- *)
- if [[ ${COMP_WORDS[@]} =~ -(p|o) || ${COMP_WORDS[@]} =~ --(portage|overlay)-tree ]]; then
- _pkgname -A $cur
- else
- _pkgname -I $cur
- fi
- ;;
- esac
- fi
- ;;
- b?(elongs))
- # Only complete if the previous entry on the command line is not
- # a file name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -f --full-regex -e
- --early-out -n --name-only" -- $cur))
- ;;
- *)
- COMPREPLY=($(compgen -f -- $cur) \
- $(compgen -d -S '/' -- $cur))
- ;;
- esac
- fi
- ;;
- u?(ses))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -a --all" -- $cur))
- ;;
- *)
- # Complete on all package names.
- _pkgname -A $cur
- ;;
- esac
- fi
- ;;
- w?(hich))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -m --include-masked" -- $cur))
- ;;
- *)
- # Complete on all package names.
- _pkgname -A $cur
- ;;
- esac
- fi
- ;;
- g|depgraph)
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -A --no-atom -M --no-mask -U
- --no-useflags -l --linear --depth" -- $cur))
- ;;
- *)
- # Complete on all package names.
- _pkgname -A $cur
- ;;
- esac
- fi
- ;;
- d?(epends))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -a --all-packages -D
- --indirect --depth" -- $cur))
- ;;
- *)
- case $prev in
- -a|--all-packages)
- # Complete on all package names.
- _pkgname -A $cur
- ;;
- *)
- # Complete on installed package names.
- _pkgname -I $cur
- ;;
- esac
- ;;
- esac
- fi
- ;;
- m?(eta))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- _equery_meta $cur
- fi
- ;;
- k|check)
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "${COMPREPLY[@]} -h --help -f
- --full-regex -o --only-failures" -- ${cur}))
- ;;
- *)
- # Only installed packages can have their integrity verified.
- _pkgname -I $cur
- ;;
- esac
- fi
- ;;
- s?(ize))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -b --bytes -f
- --full-regex" -- $cur))
- ;;
- *)
- # Only installed packages can have their size calculated.
- _pkgname -I $cur
- ;;
- esac
- fi
- ;;
- h?(asuse))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "--help -i --installed -I --exclude-installed -p --portage-tree -o --overlay" -- $cur))
- ;;
- *)
- local glob loc
- [[ -f ${portdir}/profiles/use.desc ]] || return 0
- [[ -f ${portdir}/profiles/use.local.desc ]] || return 0
- glob=$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc)
- loc=$(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)
- COMPREPLY=($(compgen -W "$glob $loc" -- $cur))
- ;;
- esac
- fi
- ;;
- esac
- return 0
-} &&
-complete -F _equery equery
-
-#
-# epkginfo completion
-#
-
-_epkginfo()
-{
- local cur prev
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
-
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${COMP_CWORD} -eq 1 || ${prev:0:1} == "-" ]]; then
- _equery_meta $cur
- fi
-
- return 0
-} &&
-complete -F _epkginfo epkginfo
-
-#
-# ekeyword completion
-#
-
-_ekeyword()
-{
- local cur portdir archl_s archl_u archl_r archl_m arch
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- portdir=$(_portdir)
-
- [[ -f ${portdir}/profiles/arch.list ]] || return 0
-
- for arch in all $(< ${portdir}/profiles/arch.list) ; do
- archl_m="${archl_m} -${arch}"
- archl_u="${archl_u} ~${arch}"
- archl_r="${archl_r} ^${arch}"
- archl_s="${archl_s} ${arch}"
- done
-
- case ${cur} in
- -*)
- COMPREPLY=($(compgen -W "${archl_m}" -- ${cur}))
- ;;
- ~*)
- COMPREPLY=($(compgen -W "${archl_u}" -- ${cur}))
- ;;
- ^*)
- COMPREPLY=($(compgen -W "${archl_r}" -- ${cur}))
- ;;
- *)
- COMPREPLY=($(compgen -W "${archl_s}" -- ${cur}))
- _filedir 'ebuild'
- ;;
- esac
-} &&
-complete -o filenames -F _ekeyword ekeyword
-
-#
-# portageq completion
-#
-
-_portageq() {
- local cur prev opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
-
- opts="config_protect_mask \
- config_protect \
- vdb_path \
- gentoo_mirrors \
- all_best_visible \
- match \
- best_visible \
- mass_best_visible \
- has_version \
- portdir \
- envvar \
- mass_best_version \
- best_version \
- pkgdir \
- portdir_overlay \
- distdir"
-
- if [[ $COMP_CWORD -eq 1 ]] ; then
- # would always be correct, but it's pretty slow...
- #COMPREPLY=($(compgen -W "$(portageq | grep '^ [[:lower:]]' | \
- # sed -e 's/^.*[[:space:]]\([[:lower:]_]\+\)[[:space:]].*$/\1/')" \
- # -- ${cur}))
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- fi
-
- case "${prev}" in
- config*|vdb_path|gentoo_mirrors|*dir*)
- COMPREPLY=()
- ;;
-
- # this also isn't the fastest, but I welcome an alternative method
- envvar)
- COMPREPLY=($(compgen -W "$(env -i emerge -v --info | \
- sed -n -e '/^[[:upper:]].*=".*"/s/^\(.*\)=".*$/\1/p')" -- ${cur}))
- ;;
-
- *v@(isible|ersion)|match)
- COMPREPLY=($(compgen $nospace -W '/' -- $cur))
- ;;
-
- # $prev is a path, so complete on category/package
- */*)
- local x a=0
- for x in ${COMP_WORDS[@]} ; do
- # This is the only one
- if [[ "${x}" == "all_best_visible" ]] ; then
- a=1
- break
- fi
- done
-
- if [[ ${a} -eq 1 ]] ; then
- COMPREPLY=()
- else
- # Check for conditional.
-# cond="${cur%%[A-Za-z0-9]*}"
-# cur="${cur:${#cond}}"
-
-# if [[ -n "${cond}" ]] ; then
-# _pkgname -A $cur
-# else
- _pkgname -A $cur
-# fi
- fi
- ;;
- esac
-} &&
-complete -F _portageq portageq
-
-#
-# webapp-config completion
-#
-
-_webapp_complete_appver()
-{
- local x proot ibase cur="$2"
- eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
- echo proot="${MY_PERSISTROOT:-@GENTOO_PORTAGE_EPREFIX@/var/db/webapps}" ; \
- echo ibase="${WA_INSTALLSBASE:-installs}")
-
- case "$1" in
- # complete on installed
- installed)
- COMPREPLY=($(compgen -W "$(\
- for x in ${proot}/*/*/installs ; do \
- if [[ -f "${x}" ]] ; then \
- local y="${x%/*}" ; \
- y="${y%/*}" ; \
- echo "${y##*/}" ; \
- fi ; \
- done)" -- ${cur}))
- ;;
-
- # complete on uninstalled
- uninstalled)
- COMPREPLY=($(compgen -W "$(\
- for x in ${proot}/*/* ; do \
- if [[ ! -f "${x}/${ibase}" ]] ; then \
- local y="${x%/*}" ; \
- echo "${y##*/}" ; \
- fi ; \
- done)" -- ${cur}))
- ;;
-
- # all
- all)
- COMPREPLY=($(compgen -W "$(\
- for x in ${proot}/* ; do \
- [[ -d "${x}" ]] && echo "${x##*/}" ; \
- done)" -- ${cur}))
- ;;
-
- # complete on version
- *)
- [[ -d "${proot}/$1" ]] || return 1
- COMPREPLY=($(compgen -W "$(\
- for x in ${proot}/$1/* ; do \
- [[ -d "${x}" ]] && echo "${x##*/}" ; \
- done)" -- ${cur}))
- ;;
- esac
-}
-
-_webapp_config()
-{
- local cur prev actions opts hostroot
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
-
- actions="-I --install -U --upgrade -C --clean --list-installs \
- --list-unused-installs --show-installed --show-postinst \
- --help -v --version"
- opts="--bug-report --pretend -p -u --user -g --group \
- -d --dir -h --host -V --verbose --soft --secure --virtual-dirs \
- --virtual-files --force-virtual"
-
- eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
- echo hostroot="${VHOST_ROOT:-@GENTOO_PORTAGE_EPREFIX@/var/www}")
-
- # --bug-report, --pretend, and -p can only be used as first arg
- if [[ ${COMP_CWORD} -gt 1 ]] ; then
- opts="${opts/--bug-report --pretend -p}"
- fi
-
- if [[ "${cur}" == -* ]] || [[ ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=($(compgen -W "${opts} ${actions}" -- ${cur}))
- return 0
- fi
-
- case "${prev}" in
- --bug-report|-p|--pretend)
- COMPREPLY=($(compgen -W "${opts} ${actions}" -- ${cur}))
- ;;
-
- -I|--install)
- _webapp_complete_appver all ${cur}
- ;;
-
- -U|--upgrade)
- _webapp_complete_appver installed ${cur}
- ;;
-
- # only complete on -d since it is required if -C is specified
- -C|--clean)
- COMPREPLY=($(compgen -W "-d" -- ${cur}))
- ;;
-
- --list-unused-installs)
- _webapp_complete_appver uninstalled ${cur}
- ;;
-
- --list-installs|--show-postinst)
- _webapp_complete_appver all ${cur}
- ;;
-
- # hrm... anyone know a better way to reliably do this?
- -h|--host)
- local x
- COMPREPLY=($(compgen -W "$(\
- for x in ${hostroot}/* ; do \
- [[ -d "${x}" ]] && echo "${x##*/}" ; \
- done)" -- ${cur}))
- ;;
-
- --virtual*)
- COMPREPLY=($(compgen -W "server-owned config-owned virtual" \
- -- ${cur}))
- ;;
-
- -d|--dir)
- local host x i=0
- # see if --host has been specified, and if so, get the value
- # that was passed to it.
- for x in ${COMP_WORDS[@]} ; do
- if [[ "${x}" == "-h" || "${x}" == "--host" ]] ; then
- host="${COMP_WORDS[((i+1))]}"
- break
- fi
- i=$((i+1))
- done
-
- # otherwise, use the default host
- if [[ "${host}" == "" ]] ; then
- eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
- echo host="${VHOST_HOSTNAME:-localhost}")
- fi
-
- COMPREPLY=($(compgen -W "$(\
- for x in ${hostroot}${host}/* ; do \
- [[ -d "${x}" ]] && echo "${x}" ; \
- done)" -- ${cur}))
- ;;
- -u|--user)
- COMPREPLY=($(compgen -u -- ${cur}))
- ;;
- -g|--group)
- COMPREPLY=($(compgen -g -- ${cur}))
- ;;
-
- # we haven't recognized it yet, so more than likely ${prev}
- # is a 'app-name' ; assuming it is indeed a valid 'app-name'
- # (_webapp_complete_appver does the check), complete on available
- # 'app-version's
- *)
- _webapp_complete_appver ${prev} ${cur} || \
- _webapp_complete_appver all ${cur}
- ;;
- esac
-} &&
-complete -F _webapp_config webapp-config
-
-_revdep_rebuild() {
- local cur prev numwords opts
- local words i x
- local action actionpos
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- numwords=${#COMP_WORDS[*]}
-
- if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
- COMPREPLY=($(compgen -f -- ${cur}))
- return 0
- fi
-
- # find action
- for ((i = 0; i < ${numwords}; i++ )); do
- case ${COMP_WORDS[${i}]} in
- --library|-L)
- action=${COMP_WORDS[${i}]}
- actionpos=${i}
- ;;
- --help|-h)
- action=${COMP_WORDS[${i}]}
- actionpos=${i}
- ;;
- esac
- done
-
- if [[ ${cur} == -* ]]; then
- if [[ ${cur} == --* ]]; then
- opts="--exact --help --ignore --keep-temp --library --nocolor --no-ld-path --no-order --no-progress --no-util --pretend --quiet --verbose"
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- else
- opts="-e -h -i -k -L -l -o -p -P -q -u -v"
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- fi
- return 0
- fi
- if [[ ${action} == '--library' ]] || [[ ${action} == '-L' ]] ; then
- if [[ "${cur}" == */* ]]; then
- COMPREPLY=( $(builtin cd @GENTOO_PORTAGE_EPREFIX@/lib; compgen -f -- "${cur}") )
- else
- COMPREPLY=( $(builtin cd @GENTOO_PORTAGE_EPREFIX@/lib; compgen -X '/' -f -- "${cur}") )
- fi
- fi
- return 0
-} &&
-complete -F _revdep_rebuild revdep-rebuild
-
-_splat() {
- local cur prev opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- opts="-h --help -v --verbose -s --summary -f --logfile -c --colored -l
- --list -u --count -p --package -t --sort -r --reverse"
-
- if [[ ${cur} == -* ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- return 0
- fi
-
- case "${prev}" in
- -f|--logfile)
- COMPREPLY=($(compgen -f -- ${cur}))
- ;;
- *)
- _pkgname -A ${cur}
- COMPREPLY=($(compgen -W "${COMPREPLY[@]} ${opts}" -- ${cur}))
- ;;
- esac
-} &&
-complete -o filenames -F _splat splat
-
-_euse() {
- local cur prev opts sopts use portdir
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- opts="-h --help -v --version -i --info -I --info-installed -a --active
- -E --enable -D --disable -P --prune"
- sopts="-g --global -l --local"
-
- if [[ ${cur} == -* ]] && [[ ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- return 0
- fi
-
- case "${prev}" in
- -h|--help|-v|--version)
- COMPREPLY=()
- ;;
- -a|--active)
- COMPREPLY=($(compgen -W "${sopts}" -- ${cur}))
- ;;
- -i|--info|-I|--info-installed|-E|--enable|-D|--disable|-P|--prune)
- portdir=$(_portdir)
- use="$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc) \
- $(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)"
- COMPREPLY=($(compgen -W "${use} ${sopts}" -- ${cur}))
- ;;
- *)
- local l=0 g=0
-
- if [[ ${COMP_LINE} == *" "@(-l|--local)* ]] ; then
- l=1
- elif [[ ${COMP_LINE} == *" "@(-g|--global)* ]] ; then
- g=1
- fi
-
- if [[ ${COMP_LINE} == *" "@(-i|--info|-I|--info-installed|-E|--enable|-D|--disable|-P|--prune)* ]]
- then
- portdir=$(_portdir)
-
- if [[ ${l} -eq 1 ]] ; then
- use=$(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)
- elif [[ ${g} -eq 1 ]] ; then
- use=$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc)
- fi
-
- COMPREPLY=($(compgen -W "${use}" -- ${cur}))
- fi
- esac
-} &&
-complete -F _euse euse
-
-_glsa_check() {
- local cur opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- opts="-l --list -d --dump --print -t --test -p --pretend -f --fix -i
- --inject -n --nocolor -e --emergelike -h --help -V --version -v --verbose
- -c --cve -m --mail"
-
- if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- return 0
- fi
-
- # too slow otherwise
- if [[ ! -f ${ROOT}/tmp/gc.out ]] || \
- [[ $(stat ${ROOT}/tmp/gc.out | \
- sed -n -e 's/^Modify: \([[:digit:]]\+-[[:digit:]]\+-[[:digit:]]\+\).*$/\1/p') != "$(date +%F)" ]]
- then
- glsa-check -nl 2>/dev/null | \
- sed -n -e 's/^\([[:digit:]]\+-[[:digit:]]\+\) .*$/\1/p' > \
- ${ROOT}/tmp/gc.out
- fi
-
- COMPREPLY=($(compgen -W "${opts} $(< ${ROOT}/tmp/gc.out)" -- ${cur}))
-} &&
-complete -F _glsa_check glsa-check
-
-_epm() {
- local cur prev opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD]}"
- opts="-q --query -V -y --verify -e --erase --help"
-
- if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- return 0
- fi
-
- case "${prev}" in
- --help)
- COMPREPLY=()
- ;;
- -q|--query)
- _pkgname -I ${cur}
- COMPREPLY=($(compgen -W "${COMPREPLY[@]} -l -f -G -a" -- ${cur}))
- ;;
- *)
- local x all=0 file=0
- for x in ${COMP_WORDS[@]} ; do
- [[ ${x} == -* ]] || continue
- [[ ${x} == *f* ]] && file=1
- [[ ${x} == *a* ]] && all=1
- done
-
- if [[ ${file} -eq 1 ]] ; then
- COMPREPLY=($(compgen -f -- ${cur}))
- elif [[ ${all} -eq 1 ]] ; then
- COMPREPLY=()
- else
- _pkgname -I ${cur}
- fi
- ;;
- esac
-} &&
-complete -o filenames -F _epm epm
-
-_metagen() {
- local cur prev opts
- COMPREPLY=()
- _get_comp_words_by_ref cur prev
- opts="$(_parse_help ${COMP_WORDS[0]})"
-
- case $prev in
- -h|--help|--version)
- return 0
- ;;
- -H|-e|-n|-d|-l)
- return 0
- ;;
- -o)
- _filedir
- return 0
- ;;
- esac
-
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
-} &&
-complete -F _metagen metagen
-
-_rc_service() {
- local cur prev numwords opts
- local words i x filename
- local action actionpos
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- numwords=${#COMP_WORDS[*]}
-
- if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
- COMPREPLY=($(compgen -f -- ${cur}))
- return 0
- fi
-
- # find action
- for x in ${COMP_LINE} ; do
- if [[ ${x} =~ --(list|exists|resolve) ]] || \
- [[ ${x} =~ -(l|e|r) ]]
- then
- action=${x}
- break
- fi
- done
- if [[ -n ${action} ]]; then
- for ((i = 0; i < ${numwords}; i++ )); do
- if [[ ${COMP_WORDS[${i}]} == "${action}" ]]; then
- actionpos=${i}
- break
- fi
- done
-
- for ((i = 1; i < ${numwords}; i++ )); do
- if [[ ! ${COMP_WORDS[$i]} == -* ]]; then
- break
- fi
- done
- fi
-
- if [[ ${COMP_CWORD} -eq 3 ]]; then
- return 1
- fi
-
- # check if an option was typed
- if [[ ${cur} == -* ]]; then
- if [[ ${cur} == --* ]]; then
- opts="--list --exists --resolve"
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- elif [[ ${cur} == -* ]]; then
- opts="-l -e -r"
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- fi
-
-
- # NOTE: This slows things down!
- # (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
- [[ -z ${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
- # if no option typed
- else
- if [[ ${COMP_CWORD} -eq 1 ]]; then # if first word typed
- words="`rc-service -l | grep ^${cur}`" # complete for init scripts
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- return 0
- elif [[ ${COMP_CWORD} -eq 2 ]] && [[ ${prev} != -* ]]; then # if second word typed and we didn't type in a function
- filename=`rc-service -r ${prev}`
- opts=`cat ${filename} | grep "^\w*()" | sed "s/().*$//"` # Greps the functions included in the init script
- if [[ "x${opts}" == "x" ]] ; then # if no options found loosen the grep algorhythm
- opts=`cat ${filename} | grep "\w*()" | sed "s/().*$//"`
- fi
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- fi
- fi
- if [[ ${action} == '--exists' ]] || [[ ${action} == '-e' ]] || \
- [[ ${action} == '--resolve' ]] || [[ ${action} == '-r' ]]; then
- words="`rc-service -l | grep ^${cur}`"
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- return 0
- fi
-
- return 0
-} &&
-complete -F _rc_service rc-service
-
-# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/glsa-check b/completions/glsa-check
new file mode 100644
index 0000000..76f6466
--- /dev/null
+++ b/completions/glsa-check
@@ -0,0 +1,33 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+_glsa_check() {
+ local cur opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ opts="-l --list -d --dump --print -t --test -p --pretend -f --fix -i
+ --inject -n --nocolor -e --emergelike -h --help -V --version -v --verbose
+ -c --cve -m --mail"
+
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ return 0
+ fi
+
+ # too slow otherwise
+ if [[ ! -f ${ROOT}/tmp/gc.out ]] || \
+ [[ $(stat ${ROOT}/tmp/gc.out | \
+ sed -n -e 's/^Modify: \([[:digit:]]\+-[[:digit:]]\+-[[:digit:]]\+\).*$/\1/p') != "$(date +%F)" ]]
+ then
+ glsa-check -nl 2>/dev/null | \
+ sed -n -e 's/^\([[:digit:]]\+-[[:digit:]]\+\) .*$/\1/p' > \
+ ${ROOT}/tmp/gc.out
+ fi
+
+ COMPREPLY=($(compgen -W "${opts} $(< ${ROOT}/tmp/gc.out)" -- ${cur}))
+} &&
+complete -F _glsa_check glsa-check
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/java-config b/completions/java-config
new file mode 100644
index 0000000..42bf11e
--- /dev/null
+++ b/completions/java-config
@@ -0,0 +1,158 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# java-config completion command
+#
+_javaconfig()
+{
+ local cur prev curword numwords opts args arg spec flag sedcmd grepcmd
+ local multiplepkgs pkgs execopts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ 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.cgi java_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 --nocolor "${flag}" | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
+ else
+ flag="--list-available-packages"
+ args=$(java-config --nocolor "${flag}" | ${sedcmd})
+ fi
+ for arg in ${args}; do
+ [[ -n "${opts}" ]] && opts="${opts} ${arg}" || opts="${arg}"
+ done
+ COMPREPLY=($(compgen $nospace -W "${opts}"))
+ return 0
+ ;;
+ --exec=)
+ COMPREPLY=($(compgen $nospace -W "${execopts}"))
+ return 0
+ ;;
+ *)
+ if [[ "${cur}" == "--set-system-vm="* ]] || [[ "${cur}" == "--set-user-vm="* ]]; then
+ args=$(java-config --nocolor --list-available-vms | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
+ 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
+ [[ -n "${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 --nocolor --list-available-packages | ${sedcmd})
+ [[ $(echo "${cur}" | grep -c ",") -gt 0 ]] && multiplepkgs="true"
+ if [[ "${cur}" == "--set-system-classpath="* ]]; then
+ spec="${cur##--set-system-classpath=}"
+ else
+ spec="${cur##--set-user-classpath=}"
+ fi
+ if [[ -n "${multiplepkgs}" ]]; then
+ pkgs="${spec%,*}"
+ spec="${spec##*,}"
+ fi
+ if [[ -n "${multiplepkgs}" ]]; then
+ for arg in ${args}; do
+ if [[ "${spec}" ]]; then
+ if [[ "${arg:0:${#spec}}" == "${spec}" ]] \
+ && [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]
+ then
+ [[ -n "${opts}" ]] && opts="${opts} ${pkgs},${arg}" || opts="${pkgs},${arg}"
+ fi
+ else
+ if [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]; then
+ [[ -n "${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
+ [[ -n "${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
+ [[ -n "${opts}" ]] && opts="${opts} ${arg}" || opts="${arg}"
+ fi
+ done
+ [[ "${opts}" == "${spec}" ]] && opts=""
+ COMPREPLY=($(compgen -W "${opts}"))
+ return 0
+ else
+ opts="--classpath --clean-system-classpath --clean-user-classpath \
+ --exec \
+ --full-classpath \
+ --jar --java --javac --java-version --jdk-home --jre-home \
+ --list-available-packages --list-available-vms \
+ --nocolor \
+ --set-system-classpath --set-system-vm --set-user-classpath --set-user-vm"
+ [[ "$prev" == "--nocolor" ]] && opts="${opts/--nocolor}"
+ fi
+ ;;
+ esac
+ elif [[ "$prev" == "--nocolor" ]] && [ ${curword} -eq 2 ] && [ $numwords -le 3 ]; then
+ opts="--classpath --clean-system-classpath --clean-user-classpath \
+ --exec \
+ --full-classpath \
+ --jar --java --javac --java-version --jdk-home --jre-home \
+ --list-available-packages --list-available-vms \
+ --set-system-classpath --set-system-vm --set-user-classpath --set-user-vm"
+ fi
+ COMPREPLY=($(compgen $nospace -W "${opts}" -- ${cur}))
+ return 0
+} &&
+complete $nospace -F _javaconfig java-config
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/metagen b/completions/metagen
new file mode 100644
index 0000000..3ba0dc9
--- /dev/null
+++ b/completions/metagen
@@ -0,0 +1,30 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+_metagen() {
+ local cur prev opts
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+ opts="$(_parse_help ${COMP_WORDS[0]})"
+
+ case $prev in
+ -h|--help|--version)
+ return 0
+ ;;
+ -H|-e|-n|-d|-l)
+ return 0
+ ;;
+ -o)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+} &&
+complete -F _metagen metagen
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/portageq b/completions/portageq
new file mode 100644
index 0000000..7922e59
--- /dev/null
+++ b/completions/portageq
@@ -0,0 +1,87 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# portageq completion
+#
+
+_portageq() {
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ opts="config_protect_mask \
+ config_protect \
+ vdb_path \
+ gentoo_mirrors \
+ all_best_visible \
+ match \
+ best_visible \
+ mass_best_visible \
+ has_version \
+ portdir \
+ envvar \
+ mass_best_version \
+ best_version \
+ pkgdir \
+ portdir_overlay \
+ distdir"
+
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ # would always be correct, but it's pretty slow...
+ #COMPREPLY=($(compgen -W "$(portageq | grep '^ [[:lower:]]' | \
+ # sed -e 's/^.*[[:space:]]\([[:lower:]_]\+\)[[:space:]].*$/\1/')" \
+ # -- ${cur}))
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ fi
+
+ case "${prev}" in
+ config*|vdb_path|gentoo_mirrors|*dir*)
+ COMPREPLY=()
+ ;;
+
+ # this also isn't the fastest, but I welcome an alternative method
+ envvar)
+ COMPREPLY=($(compgen -W "$(env -i emerge -v --info | \
+ sed -n -e '/^[[:upper:]].*=".*"/s/^\(.*\)=".*$/\1/p')" -- ${cur}))
+ ;;
+
+ *v@(isible|ersion)|match)
+ COMPREPLY=($(compgen $nospace -W '/' -- $cur))
+ ;;
+
+ # $prev is a path, so complete on category/package
+ */*)
+ local x a=0
+ for x in ${COMP_WORDS[@]} ; do
+ # This is the only one
+ if [[ "${x}" == "all_best_visible" ]] ; then
+ a=1
+ break
+ fi
+ done
+
+ if [[ ${a} -eq 1 ]] ; then
+ COMPREPLY=()
+ else
+ # Check for conditional.
+# cond="${cur%%[A-Za-z0-9]*}"
+# cur="${cur:${#cond}}"
+
+# if [[ -n "${cond}" ]] ; then
+# _pkgname -A $cur
+# else
+ _pkgname -A $cur
+# fi
+ fi
+ ;;
+ esac
+} &&
+complete -F _portageq portageq
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc b/completions/rc
new file mode 100644
index 0000000..7453ed4
--- /dev/null
+++ b/completions/rc
@@ -0,0 +1,21 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# rc completion command
+#
+_rc()
+{
+ local cur
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ if [[ ${#COMP_WORDS[*]} -le 2 ]]; then
+ COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
+ fi
+ return 0
+} &&
+complete -F _rc rc
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc-service b/completions/rc-service
new file mode 100644
index 0000000..9ad2ce1
--- /dev/null
+++ b/completions/rc-service
@@ -0,0 +1,111 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+_rc_service() {
+ local cur prev numwords opts
+ local words i x filename
+ local action actionpos
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ numwords=${#COMP_WORDS[*]}
+
+ if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
+ COMPREPLY=($(compgen -f -- ${cur}))
+ return 0
+ fi
+
+ # find action
+ for x in ${COMP_LINE} ; do
+ if [[ ${x} =~ --(list|exists|resolve) ]] || \
+ [[ ${x} =~ -(l|e|r) ]]
+ then
+ action=${x}
+ break
+ fi
+ done
+ if [[ -n ${action} ]]; then
+ for ((i = 0; i < ${numwords}; i++ )); do
+ if [[ ${COMP_WORDS[${i}]} == "${action}" ]]; then
+ actionpos=${i}
+ break
+ fi
+ done
+
+ for ((i = 1; i < ${numwords}; i++ )); do
+ if [[ ! ${COMP_WORDS[$i]} == -* ]]; then
+ break
+ fi
+ done
+ fi
+
+ if [[ ${COMP_CWORD} -eq 3 ]]; then
+ return 1
+ fi
+
+ # check if an option was typed
+ if [[ ${cur} == -* ]]; then
+ if [[ ${cur} == --* ]]; then
+ opts="--list --exists --resolve"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ elif [[ ${cur} == -* ]]; then
+ opts="-l -e -r"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ fi
+
+
+ # NOTE: This slows things down!
+ # (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
+ [[ -z ${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
+ # if no option typed
+ else
+ if [[ ${COMP_CWORD} -eq 1 ]]; then # if first word typed
+ words="`rc-service -l | grep ^${cur}`" # complete for init scripts
+ COMPREPLY=($(for i in ${words} ; do \
+ [[ ${i} == ${cur}* ]] && echo ${i} ; \
+ done))
+ return 0
+ elif [[ ${COMP_CWORD} -eq 2 ]] && [[ ${prev} != -* ]]; then # if second word typed and we didn't type in a function
+ filename=`rc-service -r ${prev}`
+ opts=`cat ${filename} | grep "^\w*()" | sed "s/().*$//"` # Greps the functions included in the init script
+ if [[ "x${opts}" == "x" ]] ; then # if no options found loosen the grep algorhythm
+ opts=`cat ${filename} | grep "\w*()" | sed "s/().*$//"`
+ fi
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ fi
+ fi
+ if [[ ${action} == '--exists' ]] || [[ ${action} == '-e' ]] || \
+ [[ ${action} == '--resolve' ]] || [[ ${action} == '-r' ]]; then
+ words="`rc-service -l | grep ^${cur}`"
+ COMPREPLY=($(for i in ${words} ; do \
+ [[ ${i} == ${cur}* ]] && echo ${i} ; \
+ done))
+ return 0
+ fi
+
+ return 0
+} &&
+complete -F _rc_service rc-service
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc-status b/completions/rc-status
new file mode 100644
index 0000000..794067f
--- /dev/null
+++ b/completions/rc-status
@@ -0,0 +1,28 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# rc-status completion command
+#
+_rcstatus()
+{
+ local cur
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ if [[ $COMP_CWORD -eq 1 ]]; then
+ if [[ "${cur}" == --* ]]; then
+ COMPREPLY=($(compgen -W '--all --list --unused' -- ${cur}))
+ elif [[ "${cur}" == -* ]]; then
+ COMPREPLY=($(compgen -W '-a -l -u' -- ${cur}))
+ else
+ COMPREPLY=($(compgen -W "$(rc-status --list)" -- ${cur}))
+ fi
+ else
+ unset COMPREPLY
+ fi
+ return 0
+} &&
+complete -F _rcstatus rc-status
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc-update b/completions/rc-update
new file mode 100644
index 0000000..ae45744
--- /dev/null
+++ b/completions/rc-update
@@ -0,0 +1,40 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# rc-update completion command
+#
+_rcupdate()
+{
+ local cur show
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ if [[ $COMP_CWORD -eq 1 ]]; then
+ if [[ "${cur}" == -* ]]; then
+ COMPREPLY=($(compgen -W '-a -d -s' -- ${cur}))
+ else
+ COMPREPLY=($(compgen -W 'add del show' ${cur}))
+ fi
+ else
+ if [[ "${COMP_WORDS[1]}" == "show" ]] || [[ "${COMP_WORDS[1]}" == "-s" ]]; then
+ show="TRUE"
+ fi
+ if ([[ $COMP_CWORD -eq 3 ]] && [[ -z "$show" ]]) || \
+ ([[ $COMP_CWORD -eq 2 ]] && [[ -n "$show" ]])
+ then
+ COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
+ elif [[ $COMP_CWORD -eq 2 ]]; then
+ COMPREPLY=($(compgen -X "*.@(c|sh|test)" -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/init.d/*; do echo ${i##*/}; done)" $cur))
+ elif [[ ${#COMP_WORDS[*]} -gt 2 ]] ; then
+ COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
+ else
+ unset COMPREPLY
+ fi
+ fi
+ return 0
+} &&
+complete -F _rcupdate rc-update
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/revdep-rebuild b/completions/revdep-rebuild
new file mode 100644
index 0000000..cb0efe7
--- /dev/null
+++ b/completions/revdep-rebuild
@@ -0,0 +1,55 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+_revdep_rebuild() {
+ local cur prev numwords opts
+ local words i x
+ local action actionpos
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ numwords=${#COMP_WORDS[*]}
+
+ if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
+ COMPREPLY=($(compgen -f -- ${cur}))
+ return 0
+ fi
+
+ # find action
+ for ((i = 0; i < ${numwords}; i++ )); do
+ case ${COMP_WORDS[${i}]} in
+ --library|-L)
+ action=${COMP_WORDS[${i}]}
+ actionpos=${i}
+ ;;
+ --help|-h)
+ action=${COMP_WORDS[${i}]}
+ actionpos=${i}
+ ;;
+ esac
+ done
+
+ if [[ ${cur} == -* ]]; then
+ if [[ ${cur} == --* ]]; then
+ opts="--exact --help --ignore --keep-temp --library --nocolor --no-ld-path --no-order --no-progress --no-util --pretend --quiet --verbose"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ else
+ opts="-e -h -i -k -L -l -o -p -P -q -u -v"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ fi
+ return 0
+ fi
+ if [[ ${action} == '--library' ]] || [[ ${action} == '-L' ]] ; then
+ if [[ "${cur}" == */* ]]; then
+ COMPREPLY=( $(builtin cd @GENTOO_PORTAGE_EPREFIX@/lib; compgen -f -- "${cur}") )
+ else
+ COMPREPLY=( $(builtin cd @GENTOO_PORTAGE_EPREFIX@/lib; compgen -X '/' -f -- "${cur}") )
+ fi
+ fi
+ return 0
+} &&
+complete -F _revdep_rebuild revdep-rebuild
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/splat b/completions/splat
new file mode 100644
index 0000000..ddae6a0
--- /dev/null
+++ b/completions/splat
@@ -0,0 +1,33 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+_splat() {
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ opts="-h --help -v --verbose -s --summary -f --logfile -c --colored -l
+ --list -u --count -p --package -t --sort -r --reverse"
+
+ if [[ ${cur} == -* ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ return 0
+ fi
+
+ case "${prev}" in
+ -f|--logfile)
+ COMPREPLY=($(compgen -f -- ${cur}))
+ ;;
+ *)
+ _pkgname -A ${cur}
+ COMPREPLY=($(compgen -W "${COMPREPLY[@]} ${opts}" -- ${cur}))
+ ;;
+ esac
+} &&
+complete -o filenames -F _splat splat
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/webapp-config b/completions/webapp-config
new file mode 100644
index 0000000..01679b5
--- /dev/null
+++ b/completions/webapp-config
@@ -0,0 +1,169 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# webapp-config completion
+#
+
+_webapp_complete_appver()
+{
+ local x proot ibase cur="$2"
+ eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
+ echo proot="${MY_PERSISTROOT:-@GENTOO_PORTAGE_EPREFIX@/var/db/webapps}" ; \
+ echo ibase="${WA_INSTALLSBASE:-installs}")
+
+ case "$1" in
+ # complete on installed
+ installed)
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${proot}/*/*/installs ; do \
+ if [[ -f "${x}" ]] ; then \
+ local y="${x%/*}" ; \
+ y="${y%/*}" ; \
+ echo "${y##*/}" ; \
+ fi ; \
+ done)" -- ${cur}))
+ ;;
+
+ # complete on uninstalled
+ uninstalled)
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${proot}/*/* ; do \
+ if [[ ! -f "${x}/${ibase}" ]] ; then \
+ local y="${x%/*}" ; \
+ echo "${y##*/}" ; \
+ fi ; \
+ done)" -- ${cur}))
+ ;;
+
+ # all
+ all)
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${proot}/* ; do \
+ [[ -d "${x}" ]] && echo "${x##*/}" ; \
+ done)" -- ${cur}))
+ ;;
+
+ # complete on version
+ *)
+ [[ -d "${proot}/$1" ]] || return 1
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${proot}/$1/* ; do \
+ [[ -d "${x}" ]] && echo "${x##*/}" ; \
+ done)" -- ${cur}))
+ ;;
+ esac
+}
+
+_webapp_config()
+{
+ local cur prev actions opts hostroot
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ actions="-I --install -U --upgrade -C --clean --list-installs \
+ --list-unused-installs --show-installed --show-postinst \
+ --help -v --version"
+ opts="--bug-report --pretend -p -u --user -g --group \
+ -d --dir -h --host -V --verbose --soft --secure --virtual-dirs \
+ --virtual-files --force-virtual"
+
+ eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
+ echo hostroot="${VHOST_ROOT:-@GENTOO_PORTAGE_EPREFIX@/var/www}")
+
+ # --bug-report, --pretend, and -p can only be used as first arg
+ if [[ ${COMP_CWORD} -gt 1 ]] ; then
+ opts="${opts/--bug-report --pretend -p}"
+ fi
+
+ if [[ "${cur}" == -* ]] || [[ ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -W "${opts} ${actions}" -- ${cur}))
+ return 0
+ fi
+
+ case "${prev}" in
+ --bug-report|-p|--pretend)
+ COMPREPLY=($(compgen -W "${opts} ${actions}" -- ${cur}))
+ ;;
+
+ -I|--install)
+ _webapp_complete_appver all ${cur}
+ ;;
+
+ -U|--upgrade)
+ _webapp_complete_appver installed ${cur}
+ ;;
+
+ # only complete on -d since it is required if -C is specified
+ -C|--clean)
+ COMPREPLY=($(compgen -W "-d" -- ${cur}))
+ ;;
+
+ --list-unused-installs)
+ _webapp_complete_appver uninstalled ${cur}
+ ;;
+
+ --list-installs|--show-postinst)
+ _webapp_complete_appver all ${cur}
+ ;;
+
+ # hrm... anyone know a better way to reliably do this?
+ -h|--host)
+ local x
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${hostroot}/* ; do \
+ [[ -d "${x}" ]] && echo "${x##*/}" ; \
+ done)" -- ${cur}))
+ ;;
+
+ --virtual*)
+ COMPREPLY=($(compgen -W "server-owned config-owned virtual" \
+ -- ${cur}))
+ ;;
+
+ -d|--dir)
+ local host x i=0
+ # see if --host has been specified, and if so, get the value
+ # that was passed to it.
+ for x in ${COMP_WORDS[@]} ; do
+ if [[ "${x}" == "-h" || "${x}" == "--host" ]] ; then
+ host="${COMP_WORDS[((i+1))]}"
+ break
+ fi
+ i=$((i+1))
+ done
+
+ # otherwise, use the default host
+ if [[ "${host}" == "" ]] ; then
+ eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
+ echo host="${VHOST_HOSTNAME:-localhost}")
+ fi
+
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${hostroot}${host}/* ; do \
+ [[ -d "${x}" ]] && echo "${x}" ; \
+ done)" -- ${cur}))
+ ;;
+ -u|--user)
+ COMPREPLY=($(compgen -u -- ${cur}))
+ ;;
+ -g|--group)
+ COMPREPLY=($(compgen -g -- ${cur}))
+ ;;
+
+ # we haven't recognized it yet, so more than likely ${prev}
+ # is a 'app-name' ; assuming it is indeed a valid 'app-name'
+ # (_webapp_complete_appver does the check), complete on available
+ # 'app-version's
+ *)
+ _webapp_complete_appver ${prev} ${cur} || \
+ _webapp_complete_appver all ${cur}
+ ;;
+ esac
+} &&
+complete -F _webapp_config webapp-config
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2018-03-02 18:06 Michał Górny
2014-08-31 21:19 ` Michał Górny
0 siblings, 1 reply; 34+ messages in thread
From: Michał Górny @ 2018-03-02 18:06 UTC (permalink / raw
To: gentoo-commits
commit: 1781d5b81021858db447d4c63f68e081e320fd00
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 31 19:18:57 2014 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Aug 31 19:18:57 2014 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=1781d5b8
Split completions by completed command.
completions/browser-config | 31 +
completions/distcc-config | 41 ++
completions/ebuild | 34 +
completions/ekeyword | 46 ++
completions/emerge | 410 +++++++++++
completions/epkginfo | 28 +
completions/epm | 48 ++
completions/equery | 280 ++++++++
completions/euse | 60 ++
completions/gcc-config | 45 ++
completions/gentoo | 1652 --------------------------------------------
completions/glsa-check | 33 +
completions/java-config | 158 +++++
completions/metagen | 30 +
completions/portageq | 87 +++
completions/rc | 21 +
completions/rc-service | 111 +++
completions/rc-status | 28 +
completions/rc-update | 40 ++
completions/revdep-rebuild | 55 ++
completions/splat | 33 +
completions/webapp-config | 169 +++++
22 files changed, 1788 insertions(+), 1652 deletions(-)
diff --git a/completions/browser-config b/completions/browser-config
new file mode 100644
index 0000000..158ca42
--- /dev/null
+++ b/completions/browser-config
@@ -0,0 +1,31 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# browser-config completion command
+#
+_browserconfig()
+{
+ local cur prev
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ if [[ ${COMP_CWORD} -eq 1 ]]; then
+ COMPREPLY=($(compgen -W '-b -h -m' -- ${cur}))
+ elif [[ "${prev}" == "-b" ]]; then
+ COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/usr/share/browser-config/*; do [ -f $i ] && echo ${i##*/}; done)" $cur))
+ elif [[ "${prev}" == "-m" ]]; then
+ COMPREPLY=($(compgen -W "same_window new_window new_tab new_browser" -- ${cur}))
+ if [[ -z "${COMPREPLY}" ]]; then
+ COMPREPLY=''
+ fi
+ else
+ unset COMPREPLY
+ fi
+ return 0
+} &&
+complete -F _browserconfig browser-config
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/distcc-config b/completions/distcc-config
new file mode 100644
index 0000000..41c315f
--- /dev/null
+++ b/completions/distcc-config
@@ -0,0 +1,41 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# 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
+ unset COMPREPLY
+ 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
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/ebuild b/completions/ebuild
new file mode 100644
index 0000000..cd6e17e
--- /dev/null
+++ b/completions/ebuild
@@ -0,0 +1,34 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# ebuild completion command
+#
+_ebuild()
+{
+ local cur opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+
+ opts="help setup clean fetch digest manifest unpack compile test preinst \
+ install postinst qmerge merge unmerge prerm postrm config package rpm \
+ configure prepare"
+
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ COMPREPLY=($(compgen -f -X "!*.ebuild" -- ${cur}) \
+ $(compgen -d -- ${cur}) \
+ $(compgen -W '--debug --force --help --ignore-default-opts --skip-manifest' -- ${cur}))
+
+ elif [[ $COMP_CWORD -eq 2 && "${COMP_WORDS[1]}" = "--debug --force --ignore-default-opts --skip-manifest" ]] ; then
+ COMPREPLY=($(compgen -f -X "!*.ebuild" -- ${cur}) $(compgen -d -- ${cur}))
+
+ elif [[ $COMP_CWORD -ge 2 ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ fi
+ return 0
+} &&
+complete -o filenames -F _ebuild ebuild
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/ekeyword b/completions/ekeyword
new file mode 100644
index 0000000..3bf3006
--- /dev/null
+++ b/completions/ekeyword
@@ -0,0 +1,46 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# ekeyword completion
+#
+
+_ekeyword()
+{
+ local cur portdir archl_s archl_u archl_r archl_m arch
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ portdir=$(_portdir)
+
+ [[ -f ${portdir}/profiles/arch.list ]] || return 0
+
+ for arch in all $(< ${portdir}/profiles/arch.list) ; do
+ archl_m="${archl_m} -${arch}"
+ archl_u="${archl_u} ~${arch}"
+ archl_r="${archl_r} ^${arch}"
+ archl_s="${archl_s} ${arch}"
+ done
+
+ case ${cur} in
+ -*)
+ COMPREPLY=($(compgen -W "${archl_m}" -- ${cur}))
+ ;;
+ ~*)
+ COMPREPLY=($(compgen -W "${archl_u}" -- ${cur}))
+ ;;
+ ^*)
+ COMPREPLY=($(compgen -W "${archl_r}" -- ${cur}))
+ ;;
+ *)
+ COMPREPLY=($(compgen -W "${archl_s}" -- ${cur}))
+ _filedir 'ebuild'
+ ;;
+ esac
+} &&
+complete -o filenames -F _ekeyword ekeyword
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/emerge b/completions/emerge
new file mode 100644
index 0000000..63c02b4
--- /dev/null
+++ b/completions/emerge
@@ -0,0 +1,410 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# emerge completion command
+#
+_emerge()
+{
+ local c cur prev curword numwords opts cond prepend
+ local words stophere i x
+ local action actionpos sysactions pkgpos
+ local portdir=$(_portdir -o)
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ numwords=${#COMP_WORDS[*]}
+ curword=${COMP_CWORD}
+ opts=''
+
+ if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
+ COMPREPLY=($(compgen -f -- ${cur}))
+ return 0
+ fi
+
+ # find action
+ for x in ${COMP_LINE} ; do
+ if [[ ${x} =~ ^(system|world)$ ]] || [[ ${x} =~ -[CPcs] ]] || \
+ [[ ${x} =~ --(clean|config|depclean|info|metadata|prune|regen|resume|search|sync|unmerge) ]]
+ then
+ action=${x}
+ break
+ fi
+ done
+
+ if [[ -n ${action} ]]; then
+ for ((i = 0; i < ${numwords}; i++ )); do
+ if [[ ${COMP_WORDS[${i}]} == "${action}" ]]; then
+ actionpos=${i}
+ pkgpos=$((actionpos + 1))
+ break
+ fi
+ done
+
+ if [[ ${action} == -* && ${action} != --* ]] ; then
+ case "${action}" in
+ -*C*) action='--unmerge' ;;
+ -*P*) action='--prune' ;;
+ -*c*) action='--clean' ;;
+ -*s*) action='--search' ;;
+ esac
+ fi
+ else
+ for ((i = 1; i < ${numwords}; i++ )); do
+ if [[ ! ${COMP_WORDS[$i]} == -* ]]; then
+ pkgpos=${i}
+ break
+ fi
+ done
+ [[ -z ${pkgpos} ]] && pkgpos=${numwords}
+ fi
+
+ # Handle special cases.
+ if [[ ${action} == "--search" ]] || [[ ${COMP_LINE} == *" "-@(S|-searchdesc)* ]] || \
+ [[ ${COMP_LINE} == *" "-@(V|-version)* ]] || [[ ${action} == "--metadata" ]]
+ then
+ unset COMPREPLY
+ return 0
+ elif [[ ${COMP_LINE} == *" "-@(h|-help)* ]] ; then
+ unset COMPREPLY
+ [[ ${curword} -eq 2 ]] && COMPREPLY=($(compgen -W 'system world --sync' -- ${cur}))
+ return 0
+ fi
+
+ # Complete on options.
+ if [[ ${cur} == -* ]]; then
+ # If a resume option was specified, it needs special handling.
+ if [[ ${COMP_LINE} =~ --(resume|skipfirst) ]] ; then
+ if [[ ${cur} == --* ]]; then
+ opts="--ask --pretend --resume --skipfirst"
+ elif [[ ${cur} == -* ]]; then
+ [[ ${COMP_LINE} =~ --(ask|pretend) ]] && opts="-a -p"
+ fi
+ elif [[ ${cur} == --* ]]; then
+ # Complete on long options.
+ opts="--alphabetical --ask \
+ --buildpkg --buildpkgonly \
+ --changelog --clean --color=y --color=n --columns --complete-graph --config \
+ --debug --deep --depclean \
+ --emptytree \
+ --fetch-all-uri --fetchonly \
+ --getbinpkg --getbinpkgonly \
+ --ignore-default-opts --info \
+ --jobs= \
+ --keep-going \
+ --metadata \
+ --newuse --noconfmem --nodeps --noreplace --nospinner \
+ --oneshot --onlydeps \
+ --pretend --prune \
+ --quiet \
+ --reinstall=changed-use --regen \
+ --search \
+ --sync \
+ --tree \
+ --unmerge --update --upgradeonly --usepkg --usepkgonly \
+ --verbose \
+ --with-bdeps=y --with-bdeps=n"
+ if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
+ opts="${opts} --help --resume --searchdesc --version"
+ fi
+ elif [[ ${cur} == -* ]]; then
+ # Complete on short options.
+ opts="-B -D -G -K -N -O -a -b -d -e -f -g -k -l -n -o -p -q -t -u -v"
+ if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
+ opts="${opts} -h -S -V"
+ fi
+ if [[ -z ${action} ]] && [[ ${curword} -eq $((pkgpos - 1)) ]] ; then
+ opts="${opts} -C -P -c -s"
+ fi
+ fi
+
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+
+ # NOTE: This slows things down!
+ # (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
+ [[ -z ${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
+ fi # options
+
+ # Stop completion if a special case is encountered.
+ if [[ ${action} =~ (system|world) ]] || \
+ [[ ${COMP_LINE} =~ --(depclean|metadata|regen|resume|skipfirst|sync) ]]
+ then
+ unset COMPREPLY
+ return 0
+ fi
+
+ # Complete on installed packages when unmerging.
+ if [[ "${action}" == '--unmerge' ]]; then
+ if [[ -n "${cur}" ]] ; then
+ if [[ "${cur}" == */* ]]; then
+ words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -G "${cur}*")
+ else
+ words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -S '/' -G "${cur}*")
+
+ local n=0
+ for i in ${words} ; do
+ [[ ${i} == ${cur}* ]] && n=$((n+1))
+ done
+
+ if [[ ${n} -eq 1 ]] ; then
+ words="$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -G "*-*/*")"
+ fi
+ fi
+ COMPREPLY=($(for i in ${words} ; do \
+ [[ ${i} == ${cur}* ]] && echo ${i} ; \
+ done))
+ else
+ COMPREPLY=($(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -S '/' -G "*-*"))
+ fi
+
+ [[ -z "${COMPREPLY}" ]] && _pkgname_only ${cur} @GENTOO_PORTAGE_EPREFIX@/var/db/pkg
+ return 0
+ fi
+
+ # Check for conditional.
+ cond="${cur%%[A-Za-z0-9]*}"
+ cur="${cur:${#cond}}"
+ if [[ ${cond:0:1} == "'" || ${cond:0:1} == '"' ]] ; then
+ prepend="-P ${cond:1}"
+ c="${cond:1}"
+ else
+ c="${cond}"
+ fi
+
+ # Handle cases where a conditional is specified.
+ if [[ -n "${cond}" ]]; then
+ if [[ -n "${cur}" ]]; then
+ if [[ ${cur} == */* ]]; then
+ if [[ ${cur} == *-[0-9]* ]] ; then
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ local cat="${cur%/*}" ; \
+ local pkg="$(echo ${cur%-[0-9]*})" ; \
+ pkg="${pkg##*/}" ; \
+ for x in ${cat}/${pkg}/*.ebuild ; do \
+ [[ -f ${x} ]] || continue ; \
+ x="${x/${pkg}\/}" ; \
+ echo "${x%*.ebuild}" ; \
+ done ; \
+ done)"
+ else
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd}; \
+ compgen -X "*metadata.xml" -G "${cur}*" -- ${cur} ; \
+ done)"
+ fi
+
+ local w
+ for x in $words ; do
+ w="${x}\n${w}"
+ done
+
+ words=$(echo -ne ${w} | sort | uniq)
+ COMPREPLY=( ${words} )
+
+ # Complete on the specific versions (if appropriate).
+ # TODO - see if we can use _pkgname
+ if [[ ${#COMPREPLY[@]} -le 1 ]]; then
+ COMPREPLY=($(
+ for pd in ${portdir}; do
+ if [[ -d ${pd}/metadata/md5-cache ]]; then
+ builtin cd ${pd}/metadata/md5-cache
+ compgen ${prepend} -G "${cur}*" -- "${cur}"
+ elif [[ -d ${pd}/metadata/cache ]]; then
+ builtin cd ${pd}/metadata/cache
+ compgen ${prepend} -G "${cur}*" -- "${cur}"
+ else
+ builtin cd ${pd}
+ local cat="${cur%/*}"
+ local pkg="$(echo ${cur%-[0-9]*}*)"
+ pkg="${pkg##*/}"
+ for x in ${cat}/${pkg}/*.ebuild; do
+ [[ -f "${x}" ]] || continue
+ x="${x/${pkg}\/}"
+ if [[ ${cond:0:1} == "'" ]] || [[ ${cond:0:1} == '"' ]]; then
+ echo "${c}${x%*.ebuild}"
+ else
+ echo "${x%*.ebuild}"
+ fi
+ done
+ fi
+ done
+ ))
+ else
+ COMPREPLY=($(compgen ${prepend} -W "${words}" -- $cur))
+ fi
+ else
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ compgen ${prepend} -S '/' -G "${cur}*" -- "${cur}" ; \
+ done)"
+
+ local w
+ for x in words ; do
+ w="${x}\n${w}"
+ done
+
+ COMPREPLY=($(echo -e ${w} | uniq))
+ [[ ${#COMPREPLY[@]} = 1 ]] && \
+ COMPREPLY=($(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ compgen ${prepend} -G "${cur}*/*" -- "${cur}" ; \
+ done))
+ fi
+ else
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd}; \
+ compgen -G "*-*"; \
+ done)"
+ COMPREPLY=($(compgen -W "${words}" -- "${cur}"))
+ fi
+
+ # If all else fails, try to complete on package names without the
+ # category being specified.
+ if [[ -z "${COMPREPLY}" ]]; then
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd}; \
+ for i in *-*/${cur}*; do \
+ [[ -d $i ]] && echo ${i##*/}; \
+ done ; \
+ done)"
+
+ COMPREPLY=($(compgen ${prepend} -W "${words}" -- ${cur}))
+
+ if [[ ${#COMPREPLY[@]} -le 1 ]]; then
+ # Now complete on the specific versions.
+ words="$(
+ for pd in ${portdir}; do
+ if [[ -d ${pd}/metadata/md5-cache ]]; then
+ builtin cd ${pd}/metadata/md5-cache
+ for i in */${cur}*; do
+ [[ -f $i ]] && echo ${i##*/}
+ done
+ elif [[ -d ${pd}/metadata/cache ]]; then
+ builtin cd ${pd}/metadata/cache
+ for i in */${cur}*; do
+ [[ -f $i ]] && echo ${i##*/}
+ done
+ fi
+ done
+ )"
+ COMPREPLY=($(compgen ${prepend} -W "${words}" -- "${cur}"))
+ fi
+ fi
+ return 0
+ fi
+
+ # Complete on packages.
+ #
+ # Only allow these actions if no packages have been specified.
+ #
+ # TODO: This doesn't block these actions if no categories are
+ # specified. Please fix me.
+ #
+ # e.g. emerge -a gentoo-dev-sources
+ #
+ # will still allow system and world actions to be specified,
+ # as opposed to
+ #
+ # emerge -a sys-kernel/gentoo-dev-sources
+ #
+ if [[ ${COMP_CWORD} -eq 1 ]] || [[ ! " ${COMP_LINE} " == *" "*[/]*" "* ]] ; then
+ sysactions=$'\n'"system"$'\n'"world"
+ else
+ sysactions=''
+ fi
+
+ if [[ -n "${cur}" ]] ; then
+ if [[ ${cur} == */* ]] ; then
+ words=$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd}; \
+ compgen -X "*metadata.xml" -G "${cur}*" ; \
+ done)"${sysactions}"
+ else
+ local ww=$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ compgen -X "!@(*-*|virtual)" -S '/' -G "${cur}*"; \
+ done)"${sysactions}"
+ # complete on virtuals
+ ww="${ww} $(\
+ for pd in ${portdir} ; do \
+ if [[ -d ${pd}/profiles ]] ; then
+ find ${pd}/profiles -name virtuals -exec \
+ sed -n -e 's|^\(virtual/[[:alnum:]]\+\).*$|\1|p' {} \; | \
+ sort -u
+ fi ; \
+ done)"
+
+ local w
+ for x in ${ww} ; do w="${x}\n${w}" ; done
+
+ words=$(echo -e ${w} | sort -u)
+
+ local n=0
+ for i in ${words} ; do
+ [[ ${i} == ${cur}* ]] && n=$((n+1))
+ done
+
+ if [[ ${n} -eq 1 ]] ; then
+ words=$(for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ compgen -G "*-*/*" ; \
+ done)"${sysactions}"
+ fi
+ fi
+ COMPREPLY=($(for i in ${words} ; do \
+ [[ ${i} == ${cur}* ]] && echo ${i} ; \
+ done))
+ else
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd} ; \
+ compgen -S '/' -G "*-*" ; \
+ done)""${sysactions}"
+ COMPREPLY=($(compgen -W "${words}" -- ${cur}))
+ fi
+
+ # If all else fails, try to complete on package names without the
+ # category being specified.
+ if [[ -z "${COMPREPLY}" ]]; then
+ words="$(\
+ for pd in ${portdir} ; do \
+ builtin cd ${pd}; \
+ for i in [a-z]*-[a-z0-9]*/${cur}*; do \
+ [[ -d $i ]] && echo ${i##*/}; \
+ done ; \
+ done)"
+ COMPREPLY=($(compgen -W "${words}" -- ${cur}))
+ fi
+
+ return 0
+} &&
+complete -o filenames -F _emerge emerge
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/epkginfo b/completions/epkginfo
new file mode 100644
index 0000000..34c81f3
--- /dev/null
+++ b/completions/epkginfo
@@ -0,0 +1,28 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# epkginfo completion
+#
+
+_epkginfo()
+{
+ local cur prev
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${COMP_CWORD} -eq 1 || ${prev:0:1} == "-" ]]; then
+ _equery_meta $cur
+ fi
+
+ return 0
+} &&
+complete -F _epkginfo epkginfo
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/epm b/completions/epm
new file mode 100644
index 0000000..e8a8caa
--- /dev/null
+++ b/completions/epm
@@ -0,0 +1,48 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+_epm() {
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD]}"
+ opts="-q --query -V -y --verify -e --erase --help"
+
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ return 0
+ fi
+
+ case "${prev}" in
+ --help)
+ COMPREPLY=()
+ ;;
+ -q|--query)
+ _pkgname -I ${cur}
+ COMPREPLY=($(compgen -W "${COMPREPLY[@]} -l -f -G -a" -- ${cur}))
+ ;;
+ *)
+ local x all=0 file=0
+ for x in ${COMP_WORDS[@]} ; do
+ [[ ${x} == -* ]] || continue
+ [[ ${x} == *f* ]] && file=1
+ [[ ${x} == *a* ]] && all=1
+ done
+
+ if [[ ${file} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -f -- ${cur}))
+ elif [[ ${all} -eq 1 ]] ; then
+ COMPREPLY=()
+ else
+ _pkgname -I ${cur}
+ fi
+ ;;
+ esac
+} &&
+complete -o filenames -F _epm epm
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/equery b/completions/equery
new file mode 100644
index 0000000..a8aa829
--- /dev/null
+++ b/completions/equery
@@ -0,0 +1,280 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# Bash completion for the Gentoo 'equery' command
+#
+_equery()
+{
+ local cur prev mode portdir i j
+ portdir=$(_portdir)
+ mode="GLOBAL"
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ # Find out what we're currently doing here.
+ j=0
+ for i in "${COMP_WORDS[@]}"; do
+ if [[ $j -lt $COMP_CWORD ]]; then
+ j=$((j + 1))
+ case $i in
+ @(belongs|ch@(anges|eck)|dep@(ends|graph)|files|has?(use)|keywords|list|meta|size|uses|which|b|c|k|d|g|f|a|h|y|l|m|s|u|w))
+ mode=$i
+ ;;
+ esac
+ fi
+ done
+ # Now get to work.
+ case $mode in
+ GLOBAL)
+ # Complete commands and global options.
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-q --quiet -C --nocolor -h --help -V --version" -- $cur))
+ ;;
+ *)
+ COMPREPLY=($(compgen -W "belongs changes check depends depgraph files has hasuse keywords list meta size uses which" -- $cur))
+ ;;
+ esac
+ ;;
+ c?(hanges))
+ # Complete package name only if it is not yet supplied.
+ if [[ ${prev} == ${mode} ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help" -- $cur))
+ ;;
+ *)
+ _pkgname -A $cur
+ ;;
+ esac
+ else
+ case $cur in
+ *)
+ COMPREPLY=($(compgen -W "-h --help -l --latest -f --full --limit --from --to" -- $cur))
+ ;;
+ esac
+ fi
+ ;;
+ f?(iles))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ # --filter=<list>: completion of the files types list
+ if [[ ${prev} == "-f" || "${cur}" == "--filter="* ]] ; then
+ COMPREPLY=($(_list_compgen "${cur#--filter=}" , \
+ dir,obj,sym,dev,fifo,path,conf,cmd,doc,man,info))
+ return 0
+ fi
+ case $cur in
+ --f*)
+ # don't handle --filter= with others to avoid space after the "="
+ COMPREPLY=($(compgen -P "--filter=" \
+ -W "dir obj sym dev fifo path conf cmd doc man info"))
+ ;;
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -m --md5sum -s --timestamp -t
+ --type --tree -f --filter=" -- $cur))
+ ;;
+ *)
+ # Only installed packages can have their files listed.
+ _pkgname -I $cur
+ ;;
+ esac
+ fi
+ ;;
+ a|has)
+ COMPREPLY=($(compgen -W "-h --help -I --exclude-installed -o \
+ --overlay-tree -p --portage-tree -F --format" -- $cur))
+ ;;
+ y|keywords)
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case "${cur}" in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -v --version -a --arch -A
+ --align -T --top-position -B --bold -C --color -O --overlays
+ -P --prefix -S --ignore-slot" -- $cur))
+ ;;
+ *)
+ _pkgname -A $cur
+ ;;
+ esac
+ fi
+ ;;
+ l?(ist))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case "${cur}" in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -d --duplicates -b
+ --binpkgs-missing -f --full-regex -m --mask-reason -I
+ --exclude-installed -o --overlay-tree -p --portage-tree -F
+ --format" -- $cur))
+ ;;
+ *)
+ if [[ ${COMP_WORDS[@]} =~ -(p|o) || ${COMP_WORDS[@]} =~ --(portage|overlay)-tree ]]; then
+ _pkgname -A $cur
+ else
+ _pkgname -I $cur
+ fi
+ ;;
+ esac
+ fi
+ ;;
+ b?(elongs))
+ # Only complete if the previous entry on the command line is not
+ # a file name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -f --full-regex -e
+ --early-out -n --name-only" -- $cur))
+ ;;
+ *)
+ COMPREPLY=($(compgen -f -- $cur) \
+ $(compgen -d -S '/' -- $cur))
+ ;;
+ esac
+ fi
+ ;;
+ u?(ses))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -a --all" -- $cur))
+ ;;
+ *)
+ # Complete on all package names.
+ _pkgname -A $cur
+ ;;
+ esac
+ fi
+ ;;
+ w?(hich))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -m --include-masked" -- $cur))
+ ;;
+ *)
+ # Complete on all package names.
+ _pkgname -A $cur
+ ;;
+ esac
+ fi
+ ;;
+ g|depgraph)
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -A --no-atom -M --no-mask -U
+ --no-useflags -l --linear --depth" -- $cur))
+ ;;
+ *)
+ # Complete on all package names.
+ _pkgname -A $cur
+ ;;
+ esac
+ fi
+ ;;
+ d?(epends))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -a --all-packages -D
+ --indirect --depth" -- $cur))
+ ;;
+ *)
+ case $prev in
+ -a|--all-packages)
+ # Complete on all package names.
+ _pkgname -A $cur
+ ;;
+ *)
+ # Complete on installed package names.
+ _pkgname -I $cur
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ ;;
+ m?(eta))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ _equery_meta $cur
+ fi
+ ;;
+ k|check)
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "${COMPREPLY[@]} -h --help -f
+ --full-regex -o --only-failures" -- ${cur}))
+ ;;
+ *)
+ # Only installed packages can have their integrity verified.
+ _pkgname -I $cur
+ ;;
+ esac
+ fi
+ ;;
+ s?(ize))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "-h --help -b --bytes -f
+ --full-regex" -- $cur))
+ ;;
+ *)
+ # Only installed packages can have their size calculated.
+ _pkgname -I $cur
+ ;;
+ esac
+ fi
+ ;;
+ h?(asuse))
+ # Only complete if the previous entry on the command line is not
+ # a package name.
+ if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W "--help -i --installed -I --exclude-installed -p --portage-tree -o --overlay" -- $cur))
+ ;;
+ *)
+ local glob loc
+ [[ -f ${portdir}/profiles/use.desc ]] || return 0
+ [[ -f ${portdir}/profiles/use.local.desc ]] || return 0
+ glob=$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc)
+ loc=$(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)
+ COMPREPLY=($(compgen -W "$glob $loc" -- $cur))
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ return 0
+} &&
+complete -F _equery equery
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/euse b/completions/euse
new file mode 100644
index 0000000..e7bed0a
--- /dev/null
+++ b/completions/euse
@@ -0,0 +1,60 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+_euse() {
+ local cur prev opts sopts use portdir
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ opts="-h --help -v --version -i --info -I --info-installed -a --active
+ -E --enable -D --disable -P --prune"
+ sopts="-g --global -l --local"
+
+ if [[ ${cur} == -* ]] && [[ ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ return 0
+ fi
+
+ case "${prev}" in
+ -h|--help|-v|--version)
+ COMPREPLY=()
+ ;;
+ -a|--active)
+ COMPREPLY=($(compgen -W "${sopts}" -- ${cur}))
+ ;;
+ -i|--info|-I|--info-installed|-E|--enable|-D|--disable|-P|--prune)
+ portdir=$(_portdir)
+ use="$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc) \
+ $(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)"
+ COMPREPLY=($(compgen -W "${use} ${sopts}" -- ${cur}))
+ ;;
+ *)
+ local l=0 g=0
+
+ if [[ ${COMP_LINE} == *" "@(-l|--local)* ]] ; then
+ l=1
+ elif [[ ${COMP_LINE} == *" "@(-g|--global)* ]] ; then
+ g=1
+ fi
+
+ if [[ ${COMP_LINE} == *" "@(-i|--info|-I|--info-installed|-E|--enable|-D|--disable|-P|--prune)* ]]
+ then
+ portdir=$(_portdir)
+
+ if [[ ${l} -eq 1 ]] ; then
+ use=$(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)
+ elif [[ ${g} -eq 1 ]] ; then
+ use=$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc)
+ fi
+
+ COMPREPLY=($(compgen -W "${use}" -- ${cur}))
+ fi
+ esac
+} &&
+complete -F _euse euse
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/gcc-config b/completions/gcc-config
new file mode 100644
index 0000000..80e95c3
--- /dev/null
+++ b/completions/gcc-config
@@ -0,0 +1,45 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# gcc-config completion command
+#
+_gcc_config() {
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ opts="-O --use-old \
+ -P --use-portage-chost \
+ -c --get-current-profile \
+ -l --list-profiles \
+ -E --print-environ \
+ -B --get-bin-path \
+ -L --get-lib-path \
+ -X --get-stdcxx-incdir"
+
+ if [[ "${cur}" == -* ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ elif [[ ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) \
+ $(compgen -W "$(gcc-config -l | sed -r -e 's/(\[([^]]*)\]) //g')" \
+ -- ${cur}) )
+ return 0
+ fi
+
+ case "${prev}" in
+ -O|--use-old|-P|--use-portage-chost|-c|--get-current-profile|-l|--list-profiles)
+ COMPREPLY=()
+ ;;
+ *)
+ COMPREPLY=( $(compgen -W "\
+ $(gcc-config -l | sed -r -e 's/(\[([^]]*)\]) //g')" -- ${cur}) )
+ ;;
+ esac
+} &&
+complete -F _gcc_config gcc-config
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/gentoo b/completions/gentoo
deleted file mode 100644
index 30a1eb1..0000000
--- a/completions/gentoo
+++ /dev/null
@@ -1,1652 +0,0 @@
-# Gentoo Linux Bash Shell Command Completion
-#
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-
-source "@helpersdir@/gentoo-common.sh"
-
-#
-# emerge completion command
-#
-_emerge()
-{
- local c cur prev curword numwords opts cond prepend
- local words stophere i x
- local action actionpos sysactions pkgpos
- local portdir=$(_portdir -o)
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- numwords=${#COMP_WORDS[*]}
- curword=${COMP_CWORD}
- opts=''
-
- if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
- COMPREPLY=($(compgen -f -- ${cur}))
- return 0
- fi
-
- # find action
- for x in ${COMP_LINE} ; do
- if [[ ${x} =~ ^(system|world)$ ]] || [[ ${x} =~ -[CPcs] ]] || \
- [[ ${x} =~ --(clean|config|depclean|info|metadata|prune|regen|resume|search|sync|unmerge) ]]
- then
- action=${x}
- break
- fi
- done
-
- if [[ -n ${action} ]]; then
- for ((i = 0; i < ${numwords}; i++ )); do
- if [[ ${COMP_WORDS[${i}]} == "${action}" ]]; then
- actionpos=${i}
- pkgpos=$((actionpos + 1))
- break
- fi
- done
-
- if [[ ${action} == -* && ${action} != --* ]] ; then
- case "${action}" in
- -*C*) action='--unmerge' ;;
- -*P*) action='--prune' ;;
- -*c*) action='--clean' ;;
- -*s*) action='--search' ;;
- esac
- fi
- else
- for ((i = 1; i < ${numwords}; i++ )); do
- if [[ ! ${COMP_WORDS[$i]} == -* ]]; then
- pkgpos=${i}
- break
- fi
- done
- [[ -z ${pkgpos} ]] && pkgpos=${numwords}
- fi
-
- # Handle special cases.
- if [[ ${action} == "--search" ]] || [[ ${COMP_LINE} == *" "-@(S|-searchdesc)* ]] || \
- [[ ${COMP_LINE} == *" "-@(V|-version)* ]] || [[ ${action} == "--metadata" ]]
- then
- unset COMPREPLY
- return 0
- elif [[ ${COMP_LINE} == *" "-@(h|-help)* ]] ; then
- unset COMPREPLY
- [[ ${curword} -eq 2 ]] && COMPREPLY=($(compgen -W 'system world --sync' -- ${cur}))
- return 0
- fi
-
- # Complete on options.
- if [[ ${cur} == -* ]]; then
- # If a resume option was specified, it needs special handling.
- if [[ ${COMP_LINE} =~ --(resume|skipfirst) ]] ; then
- if [[ ${cur} == --* ]]; then
- opts="--ask --pretend --resume --skipfirst"
- elif [[ ${cur} == -* ]]; then
- [[ ${COMP_LINE} =~ --(ask|pretend) ]] && opts="-a -p"
- fi
- elif [[ ${cur} == --* ]]; then
- # Complete on long options.
- opts="--alphabetical --ask \
- --buildpkg --buildpkgonly \
- --changelog --clean --color=y --color=n --columns --complete-graph --config \
- --debug --deep --depclean \
- --emptytree \
- --fetch-all-uri --fetchonly \
- --getbinpkg --getbinpkgonly \
- --ignore-default-opts --info \
- --jobs= \
- --keep-going \
- --metadata \
- --newuse --noconfmem --nodeps --noreplace --nospinner \
- --oneshot --onlydeps \
- --pretend --prune \
- --quiet \
- --reinstall=changed-use --regen \
- --search \
- --sync \
- --tree \
- --unmerge --update --upgradeonly --usepkg --usepkgonly \
- --verbose \
- --with-bdeps=y --with-bdeps=n"
- if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
- opts="${opts} --help --resume --searchdesc --version"
- fi
- elif [[ ${cur} == -* ]]; then
- # Complete on short options.
- opts="-B -D -G -K -N -O -a -b -d -e -f -g -k -l -n -o -p -q -t -u -v"
- if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
- opts="${opts} -h -S -V"
- fi
- if [[ -z ${action} ]] && [[ ${curword} -eq $((pkgpos - 1)) ]] ; then
- opts="${opts} -C -P -c -s"
- fi
- fi
-
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
-
- # NOTE: This slows things down!
- # (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
- [[ -z ${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
- fi # options
-
- # Stop completion if a special case is encountered.
- if [[ ${action} =~ (system|world) ]] || \
- [[ ${COMP_LINE} =~ --(depclean|metadata|regen|resume|skipfirst|sync) ]]
- then
- unset COMPREPLY
- return 0
- fi
-
- # Complete on installed packages when unmerging.
- if [[ "${action}" == '--unmerge' ]]; then
- if [[ -n "${cur}" ]] ; then
- if [[ "${cur}" == */* ]]; then
- words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -G "${cur}*")
- else
- words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -S '/' -G "${cur}*")
-
- local n=0
- for i in ${words} ; do
- [[ ${i} == ${cur}* ]] && n=$((n+1))
- done
-
- if [[ ${n} -eq 1 ]] ; then
- words="$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -G "*-*/*")"
- fi
- fi
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- else
- COMPREPLY=($(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -S '/' -G "*-*"))
- fi
-
- [[ -z "${COMPREPLY}" ]] && _pkgname_only ${cur} @GENTOO_PORTAGE_EPREFIX@/var/db/pkg
- return 0
- fi
-
- # Check for conditional.
- cond="${cur%%[A-Za-z0-9]*}"
- cur="${cur:${#cond}}"
- if [[ ${cond:0:1} == "'" || ${cond:0:1} == '"' ]] ; then
- prepend="-P ${cond:1}"
- c="${cond:1}"
- else
- c="${cond}"
- fi
-
- # Handle cases where a conditional is specified.
- if [[ -n "${cond}" ]]; then
- if [[ -n "${cur}" ]]; then
- if [[ ${cur} == */* ]]; then
- if [[ ${cur} == *-[0-9]* ]] ; then
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- local cat="${cur%/*}" ; \
- local pkg="$(echo ${cur%-[0-9]*})" ; \
- pkg="${pkg##*/}" ; \
- for x in ${cat}/${pkg}/*.ebuild ; do \
- [[ -f ${x} ]] || continue ; \
- x="${x/${pkg}\/}" ; \
- echo "${x%*.ebuild}" ; \
- done ; \
- done)"
- else
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd}; \
- compgen -X "*metadata.xml" -G "${cur}*" -- ${cur} ; \
- done)"
- fi
-
- local w
- for x in $words ; do
- w="${x}\n${w}"
- done
-
- words=$(echo -ne ${w} | sort | uniq)
- COMPREPLY=( ${words} )
-
- # Complete on the specific versions (if appropriate).
- # TODO - see if we can use _pkgname
- if [[ ${#COMPREPLY[@]} -le 1 ]]; then
- COMPREPLY=($(
- for pd in ${portdir}; do
- if [[ -d ${pd}/metadata/md5-cache ]]; then
- builtin cd ${pd}/metadata/md5-cache
- compgen ${prepend} -G "${cur}*" -- "${cur}"
- elif [[ -d ${pd}/metadata/cache ]]; then
- builtin cd ${pd}/metadata/cache
- compgen ${prepend} -G "${cur}*" -- "${cur}"
- else
- builtin cd ${pd}
- local cat="${cur%/*}"
- local pkg="$(echo ${cur%-[0-9]*}*)"
- pkg="${pkg##*/}"
- for x in ${cat}/${pkg}/*.ebuild; do
- [[ -f "${x}" ]] || continue
- x="${x/${pkg}\/}"
- if [[ ${cond:0:1} == "'" ]] || [[ ${cond:0:1} == '"' ]]; then
- echo "${c}${x%*.ebuild}"
- else
- echo "${x%*.ebuild}"
- fi
- done
- fi
- done
- ))
- else
- COMPREPLY=($(compgen ${prepend} -W "${words}" -- $cur))
- fi
- else
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- compgen ${prepend} -S '/' -G "${cur}*" -- "${cur}" ; \
- done)"
-
- local w
- for x in words ; do
- w="${x}\n${w}"
- done
-
- COMPREPLY=($(echo -e ${w} | uniq))
- [[ ${#COMPREPLY[@]} = 1 ]] && \
- COMPREPLY=($(\
- for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- compgen ${prepend} -G "${cur}*/*" -- "${cur}" ; \
- done))
- fi
- else
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd}; \
- compgen -G "*-*"; \
- done)"
- COMPREPLY=($(compgen -W "${words}" -- "${cur}"))
- fi
-
- # If all else fails, try to complete on package names without the
- # category being specified.
- if [[ -z "${COMPREPLY}" ]]; then
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd}; \
- for i in *-*/${cur}*; do \
- [[ -d $i ]] && echo ${i##*/}; \
- done ; \
- done)"
-
- COMPREPLY=($(compgen ${prepend} -W "${words}" -- ${cur}))
-
- if [[ ${#COMPREPLY[@]} -le 1 ]]; then
- # Now complete on the specific versions.
- words="$(
- for pd in ${portdir}; do
- if [[ -d ${pd}/metadata/md5-cache ]]; then
- builtin cd ${pd}/metadata/md5-cache
- for i in */${cur}*; do
- [[ -f $i ]] && echo ${i##*/}
- done
- elif [[ -d ${pd}/metadata/cache ]]; then
- builtin cd ${pd}/metadata/cache
- for i in */${cur}*; do
- [[ -f $i ]] && echo ${i##*/}
- done
- fi
- done
- )"
- COMPREPLY=($(compgen ${prepend} -W "${words}" -- "${cur}"))
- fi
- fi
- return 0
- fi
-
- # Complete on packages.
- #
- # Only allow these actions if no packages have been specified.
- #
- # TODO: This doesn't block these actions if no categories are
- # specified. Please fix me.
- #
- # e.g. emerge -a gentoo-dev-sources
- #
- # will still allow system and world actions to be specified,
- # as opposed to
- #
- # emerge -a sys-kernel/gentoo-dev-sources
- #
- if [[ ${COMP_CWORD} -eq 1 ]] || [[ ! " ${COMP_LINE} " == *" "*[/]*" "* ]] ; then
- sysactions=$'\n'"system"$'\n'"world"
- else
- sysactions=''
- fi
-
- if [[ -n "${cur}" ]] ; then
- if [[ ${cur} == */* ]] ; then
- words=$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd}; \
- compgen -X "*metadata.xml" -G "${cur}*" ; \
- done)"${sysactions}"
- else
- local ww=$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- compgen -X "!@(*-*|virtual)" -S '/' -G "${cur}*"; \
- done)"${sysactions}"
- # complete on virtuals
- ww="${ww} $(\
- for pd in ${portdir} ; do \
- if [[ -d ${pd}/profiles ]] ; then
- find ${pd}/profiles -name virtuals -exec \
- sed -n -e 's|^\(virtual/[[:alnum:]]\+\).*$|\1|p' {} \; | \
- sort -u
- fi ; \
- done)"
-
- local w
- for x in ${ww} ; do w="${x}\n${w}" ; done
-
- words=$(echo -e ${w} | sort -u)
-
- local n=0
- for i in ${words} ; do
- [[ ${i} == ${cur}* ]] && n=$((n+1))
- done
-
- if [[ ${n} -eq 1 ]] ; then
- words=$(for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- compgen -G "*-*/*" ; \
- done)"${sysactions}"
- fi
- fi
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- else
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd} ; \
- compgen -S '/' -G "*-*" ; \
- done)""${sysactions}"
- COMPREPLY=($(compgen -W "${words}" -- ${cur}))
- fi
-
- # If all else fails, try to complete on package names without the
- # category being specified.
- if [[ -z "${COMPREPLY}" ]]; then
- words="$(\
- for pd in ${portdir} ; do \
- builtin cd ${pd}; \
- for i in [a-z]*-[a-z0-9]*/${cur}*; do \
- [[ -d $i ]] && echo ${i##*/}; \
- done ; \
- done)"
- COMPREPLY=($(compgen -W "${words}" -- ${cur}))
- fi
-
- return 0
-} &&
-complete -o filenames -F _emerge emerge
-
-#
-# ebuild completion command
-#
-_ebuild()
-{
- local cur opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
-
- opts="help setup clean fetch digest manifest unpack compile test preinst \
- install postinst qmerge merge unmerge prerm postrm config package rpm \
- configure prepare"
-
- if [[ $COMP_CWORD -eq 1 ]] ; then
- COMPREPLY=($(compgen -f -X "!*.ebuild" -- ${cur}) \
- $(compgen -d -- ${cur}) \
- $(compgen -W '--debug --force --help --ignore-default-opts --skip-manifest' -- ${cur}))
-
- elif [[ $COMP_CWORD -eq 2 && "${COMP_WORDS[1]}" = "--debug --force --ignore-default-opts --skip-manifest" ]] ; then
- COMPREPLY=($(compgen -f -X "!*.ebuild" -- ${cur}) $(compgen -d -- ${cur}))
-
- elif [[ $COMP_CWORD -ge 2 ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- fi
- return 0
-} &&
-complete -o filenames -F _ebuild ebuild
-
-#
-# rc completion command
-#
-_rc()
-{
- local cur
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- if [[ ${#COMP_WORDS[*]} -le 2 ]]; then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
- fi
- return 0
-} &&
-complete -F _rc rc
-
-#
-# rc-status completion command
-#
-_rcstatus()
-{
- local cur
- cur="${COMP_WORDS[COMP_CWORD]}"
- if [[ $COMP_CWORD -eq 1 ]]; then
- if [[ "${cur}" == --* ]]; then
- COMPREPLY=($(compgen -W '--all --list --unused' -- ${cur}))
- elif [[ "${cur}" == -* ]]; then
- COMPREPLY=($(compgen -W '-a -l -u' -- ${cur}))
- else
- COMPREPLY=($(compgen -W "$(rc-status --list)" -- ${cur}))
- fi
- else
- unset COMPREPLY
- fi
- return 0
-} &&
-complete -F _rcstatus rc-status
-
-#
-# rc-update completion command
-#
-_rcupdate()
-{
- local cur show
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- if [[ $COMP_CWORD -eq 1 ]]; then
- if [[ "${cur}" == -* ]]; then
- COMPREPLY=($(compgen -W '-a -d -s' -- ${cur}))
- else
- COMPREPLY=($(compgen -W 'add del show' ${cur}))
- fi
- else
- if [[ "${COMP_WORDS[1]}" == "show" ]] || [[ "${COMP_WORDS[1]}" == "-s" ]]; then
- show="TRUE"
- fi
- if ([[ $COMP_CWORD -eq 3 ]] && [[ -z "$show" ]]) || \
- ([[ $COMP_CWORD -eq 2 ]] && [[ -n "$show" ]])
- then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
- elif [[ $COMP_CWORD -eq 2 ]]; then
- COMPREPLY=($(compgen -X "*.@(c|sh|test)" -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/init.d/*; do echo ${i##*/}; done)" $cur))
- elif [[ ${#COMP_WORDS[*]} -gt 2 ]] ; then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
- else
- unset COMPREPLY
- fi
- fi
- return 0
-} &&
-complete -F _rcupdate rc-update
-
-#
-# gcc-config completion command
-#
-_gcc_config() {
- local cur prev opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- opts="-O --use-old \
- -P --use-portage-chost \
- -c --get-current-profile \
- -l --list-profiles \
- -E --print-environ \
- -B --get-bin-path \
- -L --get-lib-path \
- -X --get-stdcxx-incdir"
-
- if [[ "${cur}" == -* ]] ; then
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- elif [[ ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) \
- $(compgen -W "$(gcc-config -l | sed -r -e 's/(\[([^]]*)\]) //g')" \
- -- ${cur}) )
- return 0
- fi
-
- case "${prev}" in
- -O|--use-old|-P|--use-portage-chost|-c|--get-current-profile|-l|--list-profiles)
- COMPREPLY=()
- ;;
- *)
- COMPREPLY=( $(compgen -W "\
- $(gcc-config -l | sed -r -e 's/(\[([^]]*)\]) //g')" -- ${cur}) )
- ;;
- esac
-} &&
-complete -F _gcc_config gcc-config
-
-#
-# 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
- unset COMPREPLY
- 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
-
-#
-# java-config completion command
-#
-_javaconfig()
-{
- local cur prev curword numwords opts args arg spec flag sedcmd grepcmd
- local multiplepkgs pkgs execopts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- 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.cgi java_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 --nocolor "${flag}" | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
- else
- flag="--list-available-packages"
- args=$(java-config --nocolor "${flag}" | ${sedcmd})
- fi
- for arg in ${args}; do
- [[ -n "${opts}" ]] && opts="${opts} ${arg}" || opts="${arg}"
- done
- COMPREPLY=($(compgen $nospace -W "${opts}"))
- return 0
- ;;
- --exec=)
- COMPREPLY=($(compgen $nospace -W "${execopts}"))
- return 0
- ;;
- *)
- if [[ "${cur}" == "--set-system-vm="* ]] || [[ "${cur}" == "--set-user-vm="* ]]; then
- args=$(java-config --nocolor --list-available-vms | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
- 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
- [[ -n "${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 --nocolor --list-available-packages | ${sedcmd})
- [[ $(echo "${cur}" | grep -c ",") -gt 0 ]] && multiplepkgs="true"
- if [[ "${cur}" == "--set-system-classpath="* ]]; then
- spec="${cur##--set-system-classpath=}"
- else
- spec="${cur##--set-user-classpath=}"
- fi
- if [[ -n "${multiplepkgs}" ]]; then
- pkgs="${spec%,*}"
- spec="${spec##*,}"
- fi
- if [[ -n "${multiplepkgs}" ]]; then
- for arg in ${args}; do
- if [[ "${spec}" ]]; then
- if [[ "${arg:0:${#spec}}" == "${spec}" ]] \
- && [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]
- then
- [[ -n "${opts}" ]] && opts="${opts} ${pkgs},${arg}" || opts="${pkgs},${arg}"
- fi
- else
- if [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]; then
- [[ -n "${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
- [[ -n "${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
- [[ -n "${opts}" ]] && opts="${opts} ${arg}" || opts="${arg}"
- fi
- done
- [[ "${opts}" == "${spec}" ]] && opts=""
- COMPREPLY=($(compgen -W "${opts}"))
- return 0
- else
- opts="--classpath --clean-system-classpath --clean-user-classpath \
- --exec \
- --full-classpath \
- --jar --java --javac --java-version --jdk-home --jre-home \
- --list-available-packages --list-available-vms \
- --nocolor \
- --set-system-classpath --set-system-vm --set-user-classpath --set-user-vm"
- [[ "$prev" == "--nocolor" ]] && opts="${opts/--nocolor}"
- fi
- ;;
- esac
- elif [[ "$prev" == "--nocolor" ]] && [ ${curword} -eq 2 ] && [ $numwords -le 3 ]; then
- opts="--classpath --clean-system-classpath --clean-user-classpath \
- --exec \
- --full-classpath \
- --jar --java --javac --java-version --jdk-home --jre-home \
- --list-available-packages --list-available-vms \
- --set-system-classpath --set-system-vm --set-user-classpath --set-user-vm"
- fi
- COMPREPLY=($(compgen $nospace -W "${opts}" -- ${cur}))
- return 0
-} &&
-complete $nospace -F _javaconfig java-config
-
-#
-# browser-config completion command
-#
-_browserconfig()
-{
- local cur prev
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- if [[ ${COMP_CWORD} -eq 1 ]]; then
- COMPREPLY=($(compgen -W '-b -h -m' -- ${cur}))
- elif [[ "${prev}" == "-b" ]]; then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/usr/share/browser-config/*; do [ -f $i ] && echo ${i##*/}; done)" $cur))
- elif [[ "${prev}" == "-m" ]]; then
- COMPREPLY=($(compgen -W "same_window new_window new_tab new_browser" -- ${cur}))
- if [[ -z "${COMPREPLY}" ]]; then
- COMPREPLY=''
- fi
- else
- unset COMPREPLY
- fi
- return 0
-} &&
-complete -F _browserconfig browser-config
-
-#
-# Bash completion for the Gentoo 'equery' command
-#
-_equery()
-{
- local cur prev mode portdir i j
- portdir=$(_portdir)
- mode="GLOBAL"
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- # Find out what we're currently doing here.
- j=0
- for i in "${COMP_WORDS[@]}"; do
- if [[ $j -lt $COMP_CWORD ]]; then
- j=$((j + 1))
- case $i in
- @(belongs|ch@(anges|eck)|dep@(ends|graph)|files|has?(use)|keywords|list|meta|size|uses|which|b|c|k|d|g|f|a|h|y|l|m|s|u|w))
- mode=$i
- ;;
- esac
- fi
- done
- # Now get to work.
- case $mode in
- GLOBAL)
- # Complete commands and global options.
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-q --quiet -C --nocolor -h --help -V --version" -- $cur))
- ;;
- *)
- COMPREPLY=($(compgen -W "belongs changes check depends depgraph files has hasuse keywords list meta size uses which" -- $cur))
- ;;
- esac
- ;;
- c?(hanges))
- # Complete package name only if it is not yet supplied.
- if [[ ${prev} == ${mode} ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help" -- $cur))
- ;;
- *)
- _pkgname -A $cur
- ;;
- esac
- else
- case $cur in
- *)
- COMPREPLY=($(compgen -W "-h --help -l --latest -f --full --limit --from --to" -- $cur))
- ;;
- esac
- fi
- ;;
- f?(iles))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- # --filter=<list>: completion of the files types list
- if [[ ${prev} == "-f" || "${cur}" == "--filter="* ]] ; then
- COMPREPLY=($(_list_compgen "${cur#--filter=}" , \
- dir,obj,sym,dev,fifo,path,conf,cmd,doc,man,info))
- return 0
- fi
- case $cur in
- --f*)
- # don't handle --filter= with others to avoid space after the "="
- COMPREPLY=($(compgen -P "--filter=" \
- -W "dir obj sym dev fifo path conf cmd doc man info"))
- ;;
- -*)
- COMPREPLY=($(compgen -W "-h --help -m --md5sum -s --timestamp -t
- --type --tree -f --filter=" -- $cur))
- ;;
- *)
- # Only installed packages can have their files listed.
- _pkgname -I $cur
- ;;
- esac
- fi
- ;;
- a|has)
- COMPREPLY=($(compgen -W "-h --help -I --exclude-installed -o \
- --overlay-tree -p --portage-tree -F --format" -- $cur))
- ;;
- y|keywords)
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case "${cur}" in
- -*)
- COMPREPLY=($(compgen -W "-h --help -v --version -a --arch -A
- --align -T --top-position -B --bold -C --color -O --overlays
- -P --prefix -S --ignore-slot" -- $cur))
- ;;
- *)
- _pkgname -A $cur
- ;;
- esac
- fi
- ;;
- l?(ist))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case "${cur}" in
- -*)
- COMPREPLY=($(compgen -W "-h --help -d --duplicates -b
- --binpkgs-missing -f --full-regex -m --mask-reason -I
- --exclude-installed -o --overlay-tree -p --portage-tree -F
- --format" -- $cur))
- ;;
- *)
- if [[ ${COMP_WORDS[@]} =~ -(p|o) || ${COMP_WORDS[@]} =~ --(portage|overlay)-tree ]]; then
- _pkgname -A $cur
- else
- _pkgname -I $cur
- fi
- ;;
- esac
- fi
- ;;
- b?(elongs))
- # Only complete if the previous entry on the command line is not
- # a file name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -f --full-regex -e
- --early-out -n --name-only" -- $cur))
- ;;
- *)
- COMPREPLY=($(compgen -f -- $cur) \
- $(compgen -d -S '/' -- $cur))
- ;;
- esac
- fi
- ;;
- u?(ses))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -a --all" -- $cur))
- ;;
- *)
- # Complete on all package names.
- _pkgname -A $cur
- ;;
- esac
- fi
- ;;
- w?(hich))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -m --include-masked" -- $cur))
- ;;
- *)
- # Complete on all package names.
- _pkgname -A $cur
- ;;
- esac
- fi
- ;;
- g|depgraph)
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -A --no-atom -M --no-mask -U
- --no-useflags -l --linear --depth" -- $cur))
- ;;
- *)
- # Complete on all package names.
- _pkgname -A $cur
- ;;
- esac
- fi
- ;;
- d?(epends))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -a --all-packages -D
- --indirect --depth" -- $cur))
- ;;
- *)
- case $prev in
- -a|--all-packages)
- # Complete on all package names.
- _pkgname -A $cur
- ;;
- *)
- # Complete on installed package names.
- _pkgname -I $cur
- ;;
- esac
- ;;
- esac
- fi
- ;;
- m?(eta))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- _equery_meta $cur
- fi
- ;;
- k|check)
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "${COMPREPLY[@]} -h --help -f
- --full-regex -o --only-failures" -- ${cur}))
- ;;
- *)
- # Only installed packages can have their integrity verified.
- _pkgname -I $cur
- ;;
- esac
- fi
- ;;
- s?(ize))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "-h --help -b --bytes -f
- --full-regex" -- $cur))
- ;;
- *)
- # Only installed packages can have their size calculated.
- _pkgname -I $cur
- ;;
- esac
- fi
- ;;
- h?(asuse))
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${prev} == ${mode} || ${prev:0:1} == "-" ]]; then
- case $cur in
- -*)
- COMPREPLY=($(compgen -W "--help -i --installed -I --exclude-installed -p --portage-tree -o --overlay" -- $cur))
- ;;
- *)
- local glob loc
- [[ -f ${portdir}/profiles/use.desc ]] || return 0
- [[ -f ${portdir}/profiles/use.local.desc ]] || return 0
- glob=$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc)
- loc=$(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)
- COMPREPLY=($(compgen -W "$glob $loc" -- $cur))
- ;;
- esac
- fi
- ;;
- esac
- return 0
-} &&
-complete -F _equery equery
-
-#
-# epkginfo completion
-#
-
-_epkginfo()
-{
- local cur prev
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
-
- # Only complete if the previous entry on the command line is not
- # a package name.
- if [[ ${COMP_CWORD} -eq 1 || ${prev:0:1} == "-" ]]; then
- _equery_meta $cur
- fi
-
- return 0
-} &&
-complete -F _epkginfo epkginfo
-
-#
-# ekeyword completion
-#
-
-_ekeyword()
-{
- local cur portdir archl_s archl_u archl_r archl_m arch
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- portdir=$(_portdir)
-
- [[ -f ${portdir}/profiles/arch.list ]] || return 0
-
- for arch in all $(< ${portdir}/profiles/arch.list) ; do
- archl_m="${archl_m} -${arch}"
- archl_u="${archl_u} ~${arch}"
- archl_r="${archl_r} ^${arch}"
- archl_s="${archl_s} ${arch}"
- done
-
- case ${cur} in
- -*)
- COMPREPLY=($(compgen -W "${archl_m}" -- ${cur}))
- ;;
- ~*)
- COMPREPLY=($(compgen -W "${archl_u}" -- ${cur}))
- ;;
- ^*)
- COMPREPLY=($(compgen -W "${archl_r}" -- ${cur}))
- ;;
- *)
- COMPREPLY=($(compgen -W "${archl_s}" -- ${cur}))
- _filedir 'ebuild'
- ;;
- esac
-} &&
-complete -o filenames -F _ekeyword ekeyword
-
-#
-# portageq completion
-#
-
-_portageq() {
- local cur prev opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
-
- opts="config_protect_mask \
- config_protect \
- vdb_path \
- gentoo_mirrors \
- all_best_visible \
- match \
- best_visible \
- mass_best_visible \
- has_version \
- portdir \
- envvar \
- mass_best_version \
- best_version \
- pkgdir \
- portdir_overlay \
- distdir"
-
- if [[ $COMP_CWORD -eq 1 ]] ; then
- # would always be correct, but it's pretty slow...
- #COMPREPLY=($(compgen -W "$(portageq | grep '^ [[:lower:]]' | \
- # sed -e 's/^.*[[:space:]]\([[:lower:]_]\+\)[[:space:]].*$/\1/')" \
- # -- ${cur}))
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- fi
-
- case "${prev}" in
- config*|vdb_path|gentoo_mirrors|*dir*)
- COMPREPLY=()
- ;;
-
- # this also isn't the fastest, but I welcome an alternative method
- envvar)
- COMPREPLY=($(compgen -W "$(env -i emerge -v --info | \
- sed -n -e '/^[[:upper:]].*=".*"/s/^\(.*\)=".*$/\1/p')" -- ${cur}))
- ;;
-
- *v@(isible|ersion)|match)
- COMPREPLY=($(compgen $nospace -W '/' -- $cur))
- ;;
-
- # $prev is a path, so complete on category/package
- */*)
- local x a=0
- for x in ${COMP_WORDS[@]} ; do
- # This is the only one
- if [[ "${x}" == "all_best_visible" ]] ; then
- a=1
- break
- fi
- done
-
- if [[ ${a} -eq 1 ]] ; then
- COMPREPLY=()
- else
- # Check for conditional.
-# cond="${cur%%[A-Za-z0-9]*}"
-# cur="${cur:${#cond}}"
-
-# if [[ -n "${cond}" ]] ; then
-# _pkgname -A $cur
-# else
- _pkgname -A $cur
-# fi
- fi
- ;;
- esac
-} &&
-complete -F _portageq portageq
-
-#
-# webapp-config completion
-#
-
-_webapp_complete_appver()
-{
- local x proot ibase cur="$2"
- eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
- echo proot="${MY_PERSISTROOT:-@GENTOO_PORTAGE_EPREFIX@/var/db/webapps}" ; \
- echo ibase="${WA_INSTALLSBASE:-installs}")
-
- case "$1" in
- # complete on installed
- installed)
- COMPREPLY=($(compgen -W "$(\
- for x in ${proot}/*/*/installs ; do \
- if [[ -f "${x}" ]] ; then \
- local y="${x%/*}" ; \
- y="${y%/*}" ; \
- echo "${y##*/}" ; \
- fi ; \
- done)" -- ${cur}))
- ;;
-
- # complete on uninstalled
- uninstalled)
- COMPREPLY=($(compgen -W "$(\
- for x in ${proot}/*/* ; do \
- if [[ ! -f "${x}/${ibase}" ]] ; then \
- local y="${x%/*}" ; \
- echo "${y##*/}" ; \
- fi ; \
- done)" -- ${cur}))
- ;;
-
- # all
- all)
- COMPREPLY=($(compgen -W "$(\
- for x in ${proot}/* ; do \
- [[ -d "${x}" ]] && echo "${x##*/}" ; \
- done)" -- ${cur}))
- ;;
-
- # complete on version
- *)
- [[ -d "${proot}/$1" ]] || return 1
- COMPREPLY=($(compgen -W "$(\
- for x in ${proot}/$1/* ; do \
- [[ -d "${x}" ]] && echo "${x##*/}" ; \
- done)" -- ${cur}))
- ;;
- esac
-}
-
-_webapp_config()
-{
- local cur prev actions opts hostroot
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
-
- actions="-I --install -U --upgrade -C --clean --list-installs \
- --list-unused-installs --show-installed --show-postinst \
- --help -v --version"
- opts="--bug-report --pretend -p -u --user -g --group \
- -d --dir -h --host -V --verbose --soft --secure --virtual-dirs \
- --virtual-files --force-virtual"
-
- eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
- echo hostroot="${VHOST_ROOT:-@GENTOO_PORTAGE_EPREFIX@/var/www}")
-
- # --bug-report, --pretend, and -p can only be used as first arg
- if [[ ${COMP_CWORD} -gt 1 ]] ; then
- opts="${opts/--bug-report --pretend -p}"
- fi
-
- if [[ "${cur}" == -* ]] || [[ ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=($(compgen -W "${opts} ${actions}" -- ${cur}))
- return 0
- fi
-
- case "${prev}" in
- --bug-report|-p|--pretend)
- COMPREPLY=($(compgen -W "${opts} ${actions}" -- ${cur}))
- ;;
-
- -I|--install)
- _webapp_complete_appver all ${cur}
- ;;
-
- -U|--upgrade)
- _webapp_complete_appver installed ${cur}
- ;;
-
- # only complete on -d since it is required if -C is specified
- -C|--clean)
- COMPREPLY=($(compgen -W "-d" -- ${cur}))
- ;;
-
- --list-unused-installs)
- _webapp_complete_appver uninstalled ${cur}
- ;;
-
- --list-installs|--show-postinst)
- _webapp_complete_appver all ${cur}
- ;;
-
- # hrm... anyone know a better way to reliably do this?
- -h|--host)
- local x
- COMPREPLY=($(compgen -W "$(\
- for x in ${hostroot}/* ; do \
- [[ -d "${x}" ]] && echo "${x##*/}" ; \
- done)" -- ${cur}))
- ;;
-
- --virtual*)
- COMPREPLY=($(compgen -W "server-owned config-owned virtual" \
- -- ${cur}))
- ;;
-
- -d|--dir)
- local host x i=0
- # see if --host has been specified, and if so, get the value
- # that was passed to it.
- for x in ${COMP_WORDS[@]} ; do
- if [[ "${x}" == "-h" || "${x}" == "--host" ]] ; then
- host="${COMP_WORDS[((i+1))]}"
- break
- fi
- i=$((i+1))
- done
-
- # otherwise, use the default host
- if [[ "${host}" == "" ]] ; then
- eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
- echo host="${VHOST_HOSTNAME:-localhost}")
- fi
-
- COMPREPLY=($(compgen -W "$(\
- for x in ${hostroot}${host}/* ; do \
- [[ -d "${x}" ]] && echo "${x}" ; \
- done)" -- ${cur}))
- ;;
- -u|--user)
- COMPREPLY=($(compgen -u -- ${cur}))
- ;;
- -g|--group)
- COMPREPLY=($(compgen -g -- ${cur}))
- ;;
-
- # we haven't recognized it yet, so more than likely ${prev}
- # is a 'app-name' ; assuming it is indeed a valid 'app-name'
- # (_webapp_complete_appver does the check), complete on available
- # 'app-version's
- *)
- _webapp_complete_appver ${prev} ${cur} || \
- _webapp_complete_appver all ${cur}
- ;;
- esac
-} &&
-complete -F _webapp_config webapp-config
-
-_revdep_rebuild() {
- local cur prev numwords opts
- local words i x
- local action actionpos
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- numwords=${#COMP_WORDS[*]}
-
- if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
- COMPREPLY=($(compgen -f -- ${cur}))
- return 0
- fi
-
- # find action
- for ((i = 0; i < ${numwords}; i++ )); do
- case ${COMP_WORDS[${i}]} in
- --library|-L)
- action=${COMP_WORDS[${i}]}
- actionpos=${i}
- ;;
- --help|-h)
- action=${COMP_WORDS[${i}]}
- actionpos=${i}
- ;;
- esac
- done
-
- if [[ ${cur} == -* ]]; then
- if [[ ${cur} == --* ]]; then
- opts="--exact --help --ignore --keep-temp --library --nocolor --no-ld-path --no-order --no-progress --no-util --pretend --quiet --verbose"
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- else
- opts="-e -h -i -k -L -l -o -p -P -q -u -v"
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- fi
- return 0
- fi
- if [[ ${action} == '--library' ]] || [[ ${action} == '-L' ]] ; then
- if [[ "${cur}" == */* ]]; then
- COMPREPLY=( $(builtin cd @GENTOO_PORTAGE_EPREFIX@/lib; compgen -f -- "${cur}") )
- else
- COMPREPLY=( $(builtin cd @GENTOO_PORTAGE_EPREFIX@/lib; compgen -X '/' -f -- "${cur}") )
- fi
- fi
- return 0
-} &&
-complete -F _revdep_rebuild revdep-rebuild
-
-_splat() {
- local cur prev opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- opts="-h --help -v --verbose -s --summary -f --logfile -c --colored -l
- --list -u --count -p --package -t --sort -r --reverse"
-
- if [[ ${cur} == -* ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- return 0
- fi
-
- case "${prev}" in
- -f|--logfile)
- COMPREPLY=($(compgen -f -- ${cur}))
- ;;
- *)
- _pkgname -A ${cur}
- COMPREPLY=($(compgen -W "${COMPREPLY[@]} ${opts}" -- ${cur}))
- ;;
- esac
-} &&
-complete -o filenames -F _splat splat
-
-_euse() {
- local cur prev opts sopts use portdir
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- opts="-h --help -v --version -i --info -I --info-installed -a --active
- -E --enable -D --disable -P --prune"
- sopts="-g --global -l --local"
-
- if [[ ${cur} == -* ]] && [[ ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- return 0
- fi
-
- case "${prev}" in
- -h|--help|-v|--version)
- COMPREPLY=()
- ;;
- -a|--active)
- COMPREPLY=($(compgen -W "${sopts}" -- ${cur}))
- ;;
- -i|--info|-I|--info-installed|-E|--enable|-D|--disable|-P|--prune)
- portdir=$(_portdir)
- use="$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc) \
- $(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)"
- COMPREPLY=($(compgen -W "${use} ${sopts}" -- ${cur}))
- ;;
- *)
- local l=0 g=0
-
- if [[ ${COMP_LINE} == *" "@(-l|--local)* ]] ; then
- l=1
- elif [[ ${COMP_LINE} == *" "@(-g|--global)* ]] ; then
- g=1
- fi
-
- if [[ ${COMP_LINE} == *" "@(-i|--info|-I|--info-installed|-E|--enable|-D|--disable|-P|--prune)* ]]
- then
- portdir=$(_portdir)
-
- if [[ ${l} -eq 1 ]] ; then
- use=$(sed -n -e 's/^[^ ]\+:\([^ ]*\) - .*$/\1/p' ${portdir}/profiles/use.local.desc)
- elif [[ ${g} -eq 1 ]] ; then
- use=$(sed -n -e 's/^\([^ ]\+\) - .*$/\1/p' ${portdir}/profiles/use.desc)
- fi
-
- COMPREPLY=($(compgen -W "${use}" -- ${cur}))
- fi
- esac
-} &&
-complete -F _euse euse
-
-_glsa_check() {
- local cur opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- opts="-l --list -d --dump --print -t --test -p --pretend -f --fix -i
- --inject -n --nocolor -e --emergelike -h --help -V --version -v --verbose
- -c --cve -m --mail"
-
- if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- return 0
- fi
-
- # too slow otherwise
- if [[ ! -f ${ROOT}/tmp/gc.out ]] || \
- [[ $(stat ${ROOT}/tmp/gc.out | \
- sed -n -e 's/^Modify: \([[:digit:]]\+-[[:digit:]]\+-[[:digit:]]\+\).*$/\1/p') != "$(date +%F)" ]]
- then
- glsa-check -nl 2>/dev/null | \
- sed -n -e 's/^\([[:digit:]]\+-[[:digit:]]\+\) .*$/\1/p' > \
- ${ROOT}/tmp/gc.out
- fi
-
- COMPREPLY=($(compgen -W "${opts} $(< ${ROOT}/tmp/gc.out)" -- ${cur}))
-} &&
-complete -F _glsa_check glsa-check
-
-_epm() {
- local cur prev opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD]}"
- opts="-q --query -V -y --verify -e --erase --help"
-
- if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
- return 0
- fi
-
- case "${prev}" in
- --help)
- COMPREPLY=()
- ;;
- -q|--query)
- _pkgname -I ${cur}
- COMPREPLY=($(compgen -W "${COMPREPLY[@]} -l -f -G -a" -- ${cur}))
- ;;
- *)
- local x all=0 file=0
- for x in ${COMP_WORDS[@]} ; do
- [[ ${x} == -* ]] || continue
- [[ ${x} == *f* ]] && file=1
- [[ ${x} == *a* ]] && all=1
- done
-
- if [[ ${file} -eq 1 ]] ; then
- COMPREPLY=($(compgen -f -- ${cur}))
- elif [[ ${all} -eq 1 ]] ; then
- COMPREPLY=()
- else
- _pkgname -I ${cur}
- fi
- ;;
- esac
-} &&
-complete -o filenames -F _epm epm
-
-_metagen() {
- local cur prev opts
- COMPREPLY=()
- _get_comp_words_by_ref cur prev
- opts="$(_parse_help ${COMP_WORDS[0]})"
-
- case $prev in
- -h|--help|--version)
- return 0
- ;;
- -H|-e|-n|-d|-l)
- return 0
- ;;
- -o)
- _filedir
- return 0
- ;;
- esac
-
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
-} &&
-complete -F _metagen metagen
-
-_rc_service() {
- local cur prev numwords opts
- local words i x filename
- local action actionpos
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- numwords=${#COMP_WORDS[*]}
-
- if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
- COMPREPLY=($(compgen -f -- ${cur}))
- return 0
- fi
-
- # find action
- for x in ${COMP_LINE} ; do
- if [[ ${x} =~ --(list|exists|resolve) ]] || \
- [[ ${x} =~ -(l|e|r) ]]
- then
- action=${x}
- break
- fi
- done
- if [[ -n ${action} ]]; then
- for ((i = 0; i < ${numwords}; i++ )); do
- if [[ ${COMP_WORDS[${i}]} == "${action}" ]]; then
- actionpos=${i}
- break
- fi
- done
-
- for ((i = 1; i < ${numwords}; i++ )); do
- if [[ ! ${COMP_WORDS[$i]} == -* ]]; then
- break
- fi
- done
- fi
-
- if [[ ${COMP_CWORD} -eq 3 ]]; then
- return 1
- fi
-
- # check if an option was typed
- if [[ ${cur} == -* ]]; then
- if [[ ${cur} == --* ]]; then
- opts="--list --exists --resolve"
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- elif [[ ${cur} == -* ]]; then
- opts="-l -e -r"
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- fi
-
-
- # NOTE: This slows things down!
- # (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
- [[ -z ${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
- # if no option typed
- else
- if [[ ${COMP_CWORD} -eq 1 ]]; then # if first word typed
- words="`rc-service -l | grep ^${cur}`" # complete for init scripts
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- return 0
- elif [[ ${COMP_CWORD} -eq 2 ]] && [[ ${prev} != -* ]]; then # if second word typed and we didn't type in a function
- filename=`rc-service -r ${prev}`
- opts=`cat ${filename} | grep "^\w*()" | sed "s/().*$//"` # Greps the functions included in the init script
- if [[ "x${opts}" == "x" ]] ; then # if no options found loosen the grep algorhythm
- opts=`cat ${filename} | grep "\w*()" | sed "s/().*$//"`
- fi
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- fi
- fi
- if [[ ${action} == '--exists' ]] || [[ ${action} == '-e' ]] || \
- [[ ${action} == '--resolve' ]] || [[ ${action} == '-r' ]]; then
- words="`rc-service -l | grep ^${cur}`"
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- return 0
- fi
-
- return 0
-} &&
-complete -F _rc_service rc-service
-
-# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/glsa-check b/completions/glsa-check
new file mode 100644
index 0000000..76f6466
--- /dev/null
+++ b/completions/glsa-check
@@ -0,0 +1,33 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+_glsa_check() {
+ local cur opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ opts="-l --list -d --dump --print -t --test -p --pretend -f --fix -i
+ --inject -n --nocolor -e --emergelike -h --help -V --version -v --verbose
+ -c --cve -m --mail"
+
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ return 0
+ fi
+
+ # too slow otherwise
+ if [[ ! -f ${ROOT}/tmp/gc.out ]] || \
+ [[ $(stat ${ROOT}/tmp/gc.out | \
+ sed -n -e 's/^Modify: \([[:digit:]]\+-[[:digit:]]\+-[[:digit:]]\+\).*$/\1/p') != "$(date +%F)" ]]
+ then
+ glsa-check -nl 2>/dev/null | \
+ sed -n -e 's/^\([[:digit:]]\+-[[:digit:]]\+\) .*$/\1/p' > \
+ ${ROOT}/tmp/gc.out
+ fi
+
+ COMPREPLY=($(compgen -W "${opts} $(< ${ROOT}/tmp/gc.out)" -- ${cur}))
+} &&
+complete -F _glsa_check glsa-check
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/java-config b/completions/java-config
new file mode 100644
index 0000000..42bf11e
--- /dev/null
+++ b/completions/java-config
@@ -0,0 +1,158 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# java-config completion command
+#
+_javaconfig()
+{
+ local cur prev curword numwords opts args arg spec flag sedcmd grepcmd
+ local multiplepkgs pkgs execopts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ 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.cgi java_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 --nocolor "${flag}" | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
+ else
+ flag="--list-available-packages"
+ args=$(java-config --nocolor "${flag}" | ${sedcmd})
+ fi
+ for arg in ${args}; do
+ [[ -n "${opts}" ]] && opts="${opts} ${arg}" || opts="${arg}"
+ done
+ COMPREPLY=($(compgen $nospace -W "${opts}"))
+ return 0
+ ;;
+ --exec=)
+ COMPREPLY=($(compgen $nospace -W "${execopts}"))
+ return 0
+ ;;
+ *)
+ if [[ "${cur}" == "--set-system-vm="* ]] || [[ "${cur}" == "--set-user-vm="* ]]; then
+ args=$(java-config --nocolor --list-available-vms | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
+ 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
+ [[ -n "${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 --nocolor --list-available-packages | ${sedcmd})
+ [[ $(echo "${cur}" | grep -c ",") -gt 0 ]] && multiplepkgs="true"
+ if [[ "${cur}" == "--set-system-classpath="* ]]; then
+ spec="${cur##--set-system-classpath=}"
+ else
+ spec="${cur##--set-user-classpath=}"
+ fi
+ if [[ -n "${multiplepkgs}" ]]; then
+ pkgs="${spec%,*}"
+ spec="${spec##*,}"
+ fi
+ if [[ -n "${multiplepkgs}" ]]; then
+ for arg in ${args}; do
+ if [[ "${spec}" ]]; then
+ if [[ "${arg:0:${#spec}}" == "${spec}" ]] \
+ && [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]
+ then
+ [[ -n "${opts}" ]] && opts="${opts} ${pkgs},${arg}" || opts="${pkgs},${arg}"
+ fi
+ else
+ if [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]; then
+ [[ -n "${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
+ [[ -n "${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
+ [[ -n "${opts}" ]] && opts="${opts} ${arg}" || opts="${arg}"
+ fi
+ done
+ [[ "${opts}" == "${spec}" ]] && opts=""
+ COMPREPLY=($(compgen -W "${opts}"))
+ return 0
+ else
+ opts="--classpath --clean-system-classpath --clean-user-classpath \
+ --exec \
+ --full-classpath \
+ --jar --java --javac --java-version --jdk-home --jre-home \
+ --list-available-packages --list-available-vms \
+ --nocolor \
+ --set-system-classpath --set-system-vm --set-user-classpath --set-user-vm"
+ [[ "$prev" == "--nocolor" ]] && opts="${opts/--nocolor}"
+ fi
+ ;;
+ esac
+ elif [[ "$prev" == "--nocolor" ]] && [ ${curword} -eq 2 ] && [ $numwords -le 3 ]; then
+ opts="--classpath --clean-system-classpath --clean-user-classpath \
+ --exec \
+ --full-classpath \
+ --jar --java --javac --java-version --jdk-home --jre-home \
+ --list-available-packages --list-available-vms \
+ --set-system-classpath --set-system-vm --set-user-classpath --set-user-vm"
+ fi
+ COMPREPLY=($(compgen $nospace -W "${opts}" -- ${cur}))
+ return 0
+} &&
+complete $nospace -F _javaconfig java-config
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/metagen b/completions/metagen
new file mode 100644
index 0000000..3ba0dc9
--- /dev/null
+++ b/completions/metagen
@@ -0,0 +1,30 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+_metagen() {
+ local cur prev opts
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+ opts="$(_parse_help ${COMP_WORDS[0]})"
+
+ case $prev in
+ -h|--help|--version)
+ return 0
+ ;;
+ -H|-e|-n|-d|-l)
+ return 0
+ ;;
+ -o)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+} &&
+complete -F _metagen metagen
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/portageq b/completions/portageq
new file mode 100644
index 0000000..7922e59
--- /dev/null
+++ b/completions/portageq
@@ -0,0 +1,87 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# portageq completion
+#
+
+_portageq() {
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ opts="config_protect_mask \
+ config_protect \
+ vdb_path \
+ gentoo_mirrors \
+ all_best_visible \
+ match \
+ best_visible \
+ mass_best_visible \
+ has_version \
+ portdir \
+ envvar \
+ mass_best_version \
+ best_version \
+ pkgdir \
+ portdir_overlay \
+ distdir"
+
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ # would always be correct, but it's pretty slow...
+ #COMPREPLY=($(compgen -W "$(portageq | grep '^ [[:lower:]]' | \
+ # sed -e 's/^.*[[:space:]]\([[:lower:]_]\+\)[[:space:]].*$/\1/')" \
+ # -- ${cur}))
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ fi
+
+ case "${prev}" in
+ config*|vdb_path|gentoo_mirrors|*dir*)
+ COMPREPLY=()
+ ;;
+
+ # this also isn't the fastest, but I welcome an alternative method
+ envvar)
+ COMPREPLY=($(compgen -W "$(env -i emerge -v --info | \
+ sed -n -e '/^[[:upper:]].*=".*"/s/^\(.*\)=".*$/\1/p')" -- ${cur}))
+ ;;
+
+ *v@(isible|ersion)|match)
+ COMPREPLY=($(compgen $nospace -W '/' -- $cur))
+ ;;
+
+ # $prev is a path, so complete on category/package
+ */*)
+ local x a=0
+ for x in ${COMP_WORDS[@]} ; do
+ # This is the only one
+ if [[ "${x}" == "all_best_visible" ]] ; then
+ a=1
+ break
+ fi
+ done
+
+ if [[ ${a} -eq 1 ]] ; then
+ COMPREPLY=()
+ else
+ # Check for conditional.
+# cond="${cur%%[A-Za-z0-9]*}"
+# cur="${cur:${#cond}}"
+
+# if [[ -n "${cond}" ]] ; then
+# _pkgname -A $cur
+# else
+ _pkgname -A $cur
+# fi
+ fi
+ ;;
+ esac
+} &&
+complete -F _portageq portageq
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc b/completions/rc
new file mode 100644
index 0000000..7453ed4
--- /dev/null
+++ b/completions/rc
@@ -0,0 +1,21 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# rc completion command
+#
+_rc()
+{
+ local cur
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ if [[ ${#COMP_WORDS[*]} -le 2 ]]; then
+ COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
+ fi
+ return 0
+} &&
+complete -F _rc rc
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc-service b/completions/rc-service
new file mode 100644
index 0000000..9ad2ce1
--- /dev/null
+++ b/completions/rc-service
@@ -0,0 +1,111 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+_rc_service() {
+ local cur prev numwords opts
+ local words i x filename
+ local action actionpos
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ numwords=${#COMP_WORDS[*]}
+
+ if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
+ COMPREPLY=($(compgen -f -- ${cur}))
+ return 0
+ fi
+
+ # find action
+ for x in ${COMP_LINE} ; do
+ if [[ ${x} =~ --(list|exists|resolve) ]] || \
+ [[ ${x} =~ -(l|e|r) ]]
+ then
+ action=${x}
+ break
+ fi
+ done
+ if [[ -n ${action} ]]; then
+ for ((i = 0; i < ${numwords}; i++ )); do
+ if [[ ${COMP_WORDS[${i}]} == "${action}" ]]; then
+ actionpos=${i}
+ break
+ fi
+ done
+
+ for ((i = 1; i < ${numwords}; i++ )); do
+ if [[ ! ${COMP_WORDS[$i]} == -* ]]; then
+ break
+ fi
+ done
+ fi
+
+ if [[ ${COMP_CWORD} -eq 3 ]]; then
+ return 1
+ fi
+
+ # check if an option was typed
+ if [[ ${cur} == -* ]]; then
+ if [[ ${cur} == --* ]]; then
+ opts="--list --exists --resolve"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ elif [[ ${cur} == -* ]]; then
+ opts="-l -e -r"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ fi
+
+
+ # NOTE: This slows things down!
+ # (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
+ [[ -z ${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
+ # if no option typed
+ else
+ if [[ ${COMP_CWORD} -eq 1 ]]; then # if first word typed
+ words="`rc-service -l | grep ^${cur}`" # complete for init scripts
+ COMPREPLY=($(for i in ${words} ; do \
+ [[ ${i} == ${cur}* ]] && echo ${i} ; \
+ done))
+ return 0
+ elif [[ ${COMP_CWORD} -eq 2 ]] && [[ ${prev} != -* ]]; then # if second word typed and we didn't type in a function
+ filename=`rc-service -r ${prev}`
+ opts=`cat ${filename} | grep "^\w*()" | sed "s/().*$//"` # Greps the functions included in the init script
+ if [[ "x${opts}" == "x" ]] ; then # if no options found loosen the grep algorhythm
+ opts=`cat ${filename} | grep "\w*()" | sed "s/().*$//"`
+ fi
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ fi
+ fi
+ if [[ ${action} == '--exists' ]] || [[ ${action} == '-e' ]] || \
+ [[ ${action} == '--resolve' ]] || [[ ${action} == '-r' ]]; then
+ words="`rc-service -l | grep ^${cur}`"
+ COMPREPLY=($(for i in ${words} ; do \
+ [[ ${i} == ${cur}* ]] && echo ${i} ; \
+ done))
+ return 0
+ fi
+
+ return 0
+} &&
+complete -F _rc_service rc-service
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc-status b/completions/rc-status
new file mode 100644
index 0000000..794067f
--- /dev/null
+++ b/completions/rc-status
@@ -0,0 +1,28 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# rc-status completion command
+#
+_rcstatus()
+{
+ local cur
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ if [[ $COMP_CWORD -eq 1 ]]; then
+ if [[ "${cur}" == --* ]]; then
+ COMPREPLY=($(compgen -W '--all --list --unused' -- ${cur}))
+ elif [[ "${cur}" == -* ]]; then
+ COMPREPLY=($(compgen -W '-a -l -u' -- ${cur}))
+ else
+ COMPREPLY=($(compgen -W "$(rc-status --list)" -- ${cur}))
+ fi
+ else
+ unset COMPREPLY
+ fi
+ return 0
+} &&
+complete -F _rcstatus rc-status
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc-update b/completions/rc-update
new file mode 100644
index 0000000..ae45744
--- /dev/null
+++ b/completions/rc-update
@@ -0,0 +1,40 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# rc-update completion command
+#
+_rcupdate()
+{
+ local cur show
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ if [[ $COMP_CWORD -eq 1 ]]; then
+ if [[ "${cur}" == -* ]]; then
+ COMPREPLY=($(compgen -W '-a -d -s' -- ${cur}))
+ else
+ COMPREPLY=($(compgen -W 'add del show' ${cur}))
+ fi
+ else
+ if [[ "${COMP_WORDS[1]}" == "show" ]] || [[ "${COMP_WORDS[1]}" == "-s" ]]; then
+ show="TRUE"
+ fi
+ if ([[ $COMP_CWORD -eq 3 ]] && [[ -z "$show" ]]) || \
+ ([[ $COMP_CWORD -eq 2 ]] && [[ -n "$show" ]])
+ then
+ COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
+ elif [[ $COMP_CWORD -eq 2 ]]; then
+ COMPREPLY=($(compgen -X "*.@(c|sh|test)" -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/init.d/*; do echo ${i##*/}; done)" $cur))
+ elif [[ ${#COMP_WORDS[*]} -gt 2 ]] ; then
+ COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
+ else
+ unset COMPREPLY
+ fi
+ fi
+ return 0
+} &&
+complete -F _rcupdate rc-update
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/revdep-rebuild b/completions/revdep-rebuild
new file mode 100644
index 0000000..cb0efe7
--- /dev/null
+++ b/completions/revdep-rebuild
@@ -0,0 +1,55 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+_revdep_rebuild() {
+ local cur prev numwords opts
+ local words i x
+ local action actionpos
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ numwords=${#COMP_WORDS[*]}
+
+ if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
+ COMPREPLY=($(compgen -f -- ${cur}))
+ return 0
+ fi
+
+ # find action
+ for ((i = 0; i < ${numwords}; i++ )); do
+ case ${COMP_WORDS[${i}]} in
+ --library|-L)
+ action=${COMP_WORDS[${i}]}
+ actionpos=${i}
+ ;;
+ --help|-h)
+ action=${COMP_WORDS[${i}]}
+ actionpos=${i}
+ ;;
+ esac
+ done
+
+ if [[ ${cur} == -* ]]; then
+ if [[ ${cur} == --* ]]; then
+ opts="--exact --help --ignore --keep-temp --library --nocolor --no-ld-path --no-order --no-progress --no-util --pretend --quiet --verbose"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ else
+ opts="-e -h -i -k -L -l -o -p -P -q -u -v"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ fi
+ return 0
+ fi
+ if [[ ${action} == '--library' ]] || [[ ${action} == '-L' ]] ; then
+ if [[ "${cur}" == */* ]]; then
+ COMPREPLY=( $(builtin cd @GENTOO_PORTAGE_EPREFIX@/lib; compgen -f -- "${cur}") )
+ else
+ COMPREPLY=( $(builtin cd @GENTOO_PORTAGE_EPREFIX@/lib; compgen -X '/' -f -- "${cur}") )
+ fi
+ fi
+ return 0
+} &&
+complete -F _revdep_rebuild revdep-rebuild
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/splat b/completions/splat
new file mode 100644
index 0000000..ddae6a0
--- /dev/null
+++ b/completions/splat
@@ -0,0 +1,33 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+_splat() {
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ opts="-h --help -v --verbose -s --summary -f --logfile -c --colored -l
+ --list -u --count -p --package -t --sort -r --reverse"
+
+ if [[ ${cur} == -* ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ return 0
+ fi
+
+ case "${prev}" in
+ -f|--logfile)
+ COMPREPLY=($(compgen -f -- ${cur}))
+ ;;
+ *)
+ _pkgname -A ${cur}
+ COMPREPLY=($(compgen -W "${COMPREPLY[@]} ${opts}" -- ${cur}))
+ ;;
+ esac
+} &&
+complete -o filenames -F _splat splat
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/webapp-config b/completions/webapp-config
new file mode 100644
index 0000000..01679b5
--- /dev/null
+++ b/completions/webapp-config
@@ -0,0 +1,169 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# webapp-config completion
+#
+
+_webapp_complete_appver()
+{
+ local x proot ibase cur="$2"
+ eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
+ echo proot="${MY_PERSISTROOT:-@GENTOO_PORTAGE_EPREFIX@/var/db/webapps}" ; \
+ echo ibase="${WA_INSTALLSBASE:-installs}")
+
+ case "$1" in
+ # complete on installed
+ installed)
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${proot}/*/*/installs ; do \
+ if [[ -f "${x}" ]] ; then \
+ local y="${x%/*}" ; \
+ y="${y%/*}" ; \
+ echo "${y##*/}" ; \
+ fi ; \
+ done)" -- ${cur}))
+ ;;
+
+ # complete on uninstalled
+ uninstalled)
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${proot}/*/* ; do \
+ if [[ ! -f "${x}/${ibase}" ]] ; then \
+ local y="${x%/*}" ; \
+ echo "${y##*/}" ; \
+ fi ; \
+ done)" -- ${cur}))
+ ;;
+
+ # all
+ all)
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${proot}/* ; do \
+ [[ -d "${x}" ]] && echo "${x##*/}" ; \
+ done)" -- ${cur}))
+ ;;
+
+ # complete on version
+ *)
+ [[ -d "${proot}/$1" ]] || return 1
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${proot}/$1/* ; do \
+ [[ -d "${x}" ]] && echo "${x##*/}" ; \
+ done)" -- ${cur}))
+ ;;
+ esac
+}
+
+_webapp_config()
+{
+ local cur prev actions opts hostroot
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ actions="-I --install -U --upgrade -C --clean --list-installs \
+ --list-unused-installs --show-installed --show-postinst \
+ --help -v --version"
+ opts="--bug-report --pretend -p -u --user -g --group \
+ -d --dir -h --host -V --verbose --soft --secure --virtual-dirs \
+ --virtual-files --force-virtual"
+
+ eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
+ echo hostroot="${VHOST_ROOT:-@GENTOO_PORTAGE_EPREFIX@/var/www}")
+
+ # --bug-report, --pretend, and -p can only be used as first arg
+ if [[ ${COMP_CWORD} -gt 1 ]] ; then
+ opts="${opts/--bug-report --pretend -p}"
+ fi
+
+ if [[ "${cur}" == -* ]] || [[ ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -W "${opts} ${actions}" -- ${cur}))
+ return 0
+ fi
+
+ case "${prev}" in
+ --bug-report|-p|--pretend)
+ COMPREPLY=($(compgen -W "${opts} ${actions}" -- ${cur}))
+ ;;
+
+ -I|--install)
+ _webapp_complete_appver all ${cur}
+ ;;
+
+ -U|--upgrade)
+ _webapp_complete_appver installed ${cur}
+ ;;
+
+ # only complete on -d since it is required if -C is specified
+ -C|--clean)
+ COMPREPLY=($(compgen -W "-d" -- ${cur}))
+ ;;
+
+ --list-unused-installs)
+ _webapp_complete_appver uninstalled ${cur}
+ ;;
+
+ --list-installs|--show-postinst)
+ _webapp_complete_appver all ${cur}
+ ;;
+
+ # hrm... anyone know a better way to reliably do this?
+ -h|--host)
+ local x
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${hostroot}/* ; do \
+ [[ -d "${x}" ]] && echo "${x##*/}" ; \
+ done)" -- ${cur}))
+ ;;
+
+ --virtual*)
+ COMPREPLY=($(compgen -W "server-owned config-owned virtual" \
+ -- ${cur}))
+ ;;
+
+ -d|--dir)
+ local host x i=0
+ # see if --host has been specified, and if so, get the value
+ # that was passed to it.
+ for x in ${COMP_WORDS[@]} ; do
+ if [[ "${x}" == "-h" || "${x}" == "--host" ]] ; then
+ host="${COMP_WORDS[((i+1))]}"
+ break
+ fi
+ i=$((i+1))
+ done
+
+ # otherwise, use the default host
+ if [[ "${host}" == "" ]] ; then
+ eval $(. @GENTOO_PORTAGE_EPREFIX@/etc/vhosts/webapp-config ; \
+ echo host="${VHOST_HOSTNAME:-localhost}")
+ fi
+
+ COMPREPLY=($(compgen -W "$(\
+ for x in ${hostroot}${host}/* ; do \
+ [[ -d "${x}" ]] && echo "${x}" ; \
+ done)" -- ${cur}))
+ ;;
+ -u|--user)
+ COMPREPLY=($(compgen -u -- ${cur}))
+ ;;
+ -g|--group)
+ COMPREPLY=($(compgen -g -- ${cur}))
+ ;;
+
+ # we haven't recognized it yet, so more than likely ${prev}
+ # is a 'app-name' ; assuming it is indeed a valid 'app-name'
+ # (_webapp_complete_appver does the check), complete on available
+ # 'app-version's
+ *)
+ _webapp_complete_appver ${prev} ${cur} || \
+ _webapp_complete_appver all ${cur}
+ ;;
+ esac
+} &&
+complete -F _webapp_config webapp-config
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2018-03-02 18:06 Michał Górny
0 siblings, 0 replies; 34+ messages in thread
From: Michał Górny @ 2018-03-02 18:06 UTC (permalink / raw
To: gentoo-commits
commit: a5c0c7a1c5610f8040ea1fdb1d0a1f8c4d2f45b3
Author: Louis Sautier <sautier.louis <AT> gmail <DOT> com>
AuthorDate: Mon Feb 15 00:15:46 2016 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Mar 2 18:06:51 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=a5c0c7a1
add completion for emerge --rage-clean
This PR adds the --rage-clean option.
Closes: https://github.com/gentoo/gentoo-bashcomp/pull/2
completions/emerge | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/completions/emerge b/completions/emerge
index a7d1f52..d7da227 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -29,7 +29,7 @@ _emerge()
# find action
for x in ${COMP_LINE} ; do
if [[ ${x} =~ ^(system|world)$ ]] || [[ ${x} =~ -[CPcs] ]] || \
- [[ ${x} =~ --(clean|config|depclean|info|metadata|prune|regen|resume|search|sync|unmerge) ]]
+ [[ ${x} =~ --(clean|config|depclean|info|metadata|prune|rage-clean|regen|resume|search|sync|unmerge) ]]
then
action=${x}
break
@@ -101,7 +101,7 @@ _emerge()
--newuse --noconfmem --nodeps --noreplace --nospinner \
--oneshot --onlydeps \
--pretend --prune \
- --quiet \
+ --quiet --rage-clean \
--reinstall=changed-use --regen \
--search \
--sync \
@@ -153,7 +153,7 @@ _emerge()
fi
# Complete on installed packages when unmerging.
- if [[ "${action}" == '--unmerge' ]]; then
+ if [[ "${action}" =~ --(rage-clean|unmerge) ]]; then
if [[ -n "${cur}" ]] ; then
if [[ "${cur}" == */* ]]; then
words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -G "${cur}*")
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2018-03-02 18:06 Michał Górny
0 siblings, 0 replies; 34+ messages in thread
From: Michał Górny @ 2018-03-02 18:06 UTC (permalink / raw
To: gentoo-commits
commit: 5c9fbe55124aef398e9e23186a1ef83e592a09d4
Author: Louis Sautier <sautier.louis <AT> gmail <DOT> com>
AuthorDate: Thu Jan 7 10:35:56 2016 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Mar 2 18:06:45 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=5c9fbe55
Add completion for emerge --autounmask-write
Closes: https://github.com/gentoo/gentoo-bashcomp/pull/1
completions/emerge | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/completions/emerge b/completions/emerge
index 63c02b4..a7d1f52 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -86,7 +86,8 @@ _emerge()
fi
elif [[ ${cur} == --* ]]; then
# Complete on long options.
- opts="--alphabetical --ask \
+ opts="--alphabetical \
+ --ask --autounmask-write \
--buildpkg --buildpkgonly \
--changelog --clean --color=y --color=n --columns --complete-graph --config \
--debug --deep --depclean \
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2018-03-02 18:35 William Hubbs
0 siblings, 0 replies; 34+ messages in thread
From: William Hubbs @ 2018-03-02 18:35 UTC (permalink / raw
To: gentoo-commits
commit: 41d0608e51e5fe3b5034de9ae3700c2490380e2e
Author: William Hubbs <williamh <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 2 18:33:51 2018 +0000
Commit: William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Fri Mar 2 18:35:09 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=41d0608e
Remove OpenRC completions since they are provided upstream
completions/rc | 21 ----------
completions/rc-service | 111 -------------------------------------------------
completions/rc-status | 28 -------------
completions/rc-update | 40 ------------------
4 files changed, 200 deletions(-)
diff --git a/completions/rc b/completions/rc
deleted file mode 100644
index 7453ed4..0000000
--- a/completions/rc
+++ /dev/null
@@ -1,21 +0,0 @@
-# Gentoo Linux Bash Shell Command Completion
-#
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-
-#
-# rc completion command
-#
-_rc()
-{
- local cur
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- if [[ ${#COMP_WORDS[*]} -le 2 ]]; then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
- fi
- return 0
-} &&
-complete -F _rc rc
-
-# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc-service b/completions/rc-service
deleted file mode 100644
index 9ad2ce1..0000000
--- a/completions/rc-service
+++ /dev/null
@@ -1,111 +0,0 @@
-# Gentoo Linux Bash Shell Command Completion
-#
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-
-source "@helpersdir@/gentoo-common.sh"
-
-_rc_service() {
- local cur prev numwords opts
- local words i x filename
- local action actionpos
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- numwords=${#COMP_WORDS[*]}
-
- if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
- COMPREPLY=($(compgen -f -- ${cur}))
- return 0
- fi
-
- # find action
- for x in ${COMP_LINE} ; do
- if [[ ${x} =~ --(list|exists|resolve) ]] || \
- [[ ${x} =~ -(l|e|r) ]]
- then
- action=${x}
- break
- fi
- done
- if [[ -n ${action} ]]; then
- for ((i = 0; i < ${numwords}; i++ )); do
- if [[ ${COMP_WORDS[${i}]} == "${action}" ]]; then
- actionpos=${i}
- break
- fi
- done
-
- for ((i = 1; i < ${numwords}; i++ )); do
- if [[ ! ${COMP_WORDS[$i]} == -* ]]; then
- break
- fi
- done
- fi
-
- if [[ ${COMP_CWORD} -eq 3 ]]; then
- return 1
- fi
-
- # check if an option was typed
- if [[ ${cur} == -* ]]; then
- if [[ ${cur} == --* ]]; then
- opts="--list --exists --resolve"
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- elif [[ ${cur} == -* ]]; then
- opts="-l -e -r"
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- fi
-
-
- # NOTE: This slows things down!
- # (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
- [[ -z ${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
- # if no option typed
- else
- if [[ ${COMP_CWORD} -eq 1 ]]; then # if first word typed
- words="`rc-service -l | grep ^${cur}`" # complete for init scripts
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- return 0
- elif [[ ${COMP_CWORD} -eq 2 ]] && [[ ${prev} != -* ]]; then # if second word typed and we didn't type in a function
- filename=`rc-service -r ${prev}`
- opts=`cat ${filename} | grep "^\w*()" | sed "s/().*$//"` # Greps the functions included in the init script
- if [[ "x${opts}" == "x" ]] ; then # if no options found loosen the grep algorhythm
- opts=`cat ${filename} | grep "\w*()" | sed "s/().*$//"`
- fi
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
- return 0
- fi
- fi
- if [[ ${action} == '--exists' ]] || [[ ${action} == '-e' ]] || \
- [[ ${action} == '--resolve' ]] || [[ ${action} == '-r' ]]; then
- words="`rc-service -l | grep ^${cur}`"
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- return 0
- fi
-
- return 0
-} &&
-complete -F _rc_service rc-service
-
-# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc-status b/completions/rc-status
deleted file mode 100644
index 794067f..0000000
--- a/completions/rc-status
+++ /dev/null
@@ -1,28 +0,0 @@
-# Gentoo Linux Bash Shell Command Completion
-#
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-
-#
-# rc-status completion command
-#
-_rcstatus()
-{
- local cur
- cur="${COMP_WORDS[COMP_CWORD]}"
- if [[ $COMP_CWORD -eq 1 ]]; then
- if [[ "${cur}" == --* ]]; then
- COMPREPLY=($(compgen -W '--all --list --unused' -- ${cur}))
- elif [[ "${cur}" == -* ]]; then
- COMPREPLY=($(compgen -W '-a -l -u' -- ${cur}))
- else
- COMPREPLY=($(compgen -W "$(rc-status --list)" -- ${cur}))
- fi
- else
- unset COMPREPLY
- fi
- return 0
-} &&
-complete -F _rcstatus rc-status
-
-# vim: ft=sh:et:ts=4:sw=4:tw=80
diff --git a/completions/rc-update b/completions/rc-update
deleted file mode 100644
index ae45744..0000000
--- a/completions/rc-update
+++ /dev/null
@@ -1,40 +0,0 @@
-# Gentoo Linux Bash Shell Command Completion
-#
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-
-#
-# rc-update completion command
-#
-_rcupdate()
-{
- local cur show
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- if [[ $COMP_CWORD -eq 1 ]]; then
- if [[ "${cur}" == -* ]]; then
- COMPREPLY=($(compgen -W '-a -d -s' -- ${cur}))
- else
- COMPREPLY=($(compgen -W 'add del show' ${cur}))
- fi
- else
- if [[ "${COMP_WORDS[1]}" == "show" ]] || [[ "${COMP_WORDS[1]}" == "-s" ]]; then
- show="TRUE"
- fi
- if ([[ $COMP_CWORD -eq 3 ]] && [[ -z "$show" ]]) || \
- ([[ $COMP_CWORD -eq 2 ]] && [[ -n "$show" ]])
- then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
- elif [[ $COMP_CWORD -eq 2 ]]; then
- COMPREPLY=($(compgen -X "*.@(c|sh|test)" -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/init.d/*; do echo ${i##*/}; done)" $cur))
- elif [[ ${#COMP_WORDS[*]} -gt 2 ]] ; then
- COMPREPLY=($(compgen -W "$(for i in @GENTOO_PORTAGE_EPREFIX@/etc/runlevels/*; do echo ${i##*/}; done)" -- $cur))
- else
- unset COMPREPLY
- fi
- fi
- return 0
-} &&
-complete -F _rcupdate rc-update
-
-# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2018-06-23 22:23 Patrice Clement
0 siblings, 0 replies; 34+ messages in thread
From: Patrice Clement @ 2018-06-23 22:23 UTC (permalink / raw
To: gentoo-commits
commit: 48adce4356f46eda30265d2c5a6cb4055c16c5e3
Author: Louis Sautier <sautier.louis <AT> gmail <DOT> com>
AuthorDate: Sun Jun 10 16:26:46 2018 +0000
Commit: Patrice Clement <monsieurp <AT> gentoo <DOT> org>
CommitDate: Sat Jun 23 22:23:00 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=48adce43
emerge: add support for sets completion.
Based on Marco Genasci's patch and slightly modified to get rid of the
unnecessary call to xargs.
Courtesy of Marco Genasci <fedeliallalinea <AT> gmail.com>.
Closes: https://bugs.gentoo.org/235454
Closes: https://github.com/gentoo/gentoo-bashcomp/pull/4
completions/emerge | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/completions/emerge b/completions/emerge
index d7da227..03cc503 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -26,6 +26,12 @@ _emerge()
return 0
fi
+ if [[ ${cur} =~ ^@ ]] ; then
+ local SET_LIST=($(emerge --list-sets))
+ COMPREPLY=($(compgen -W '${SET_LIST[@]/#/@}' ${cur}))
+ return 0
+ fi
+
# find action
for x in ${COMP_LINE} ; do
if [[ ${x} =~ ^(system|world)$ ]] || [[ ${x} =~ -[CPcs] ]] || \
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2023-01-14 16:38 Sam James
0 siblings, 0 replies; 34+ messages in thread
From: Sam James @ 2023-01-14 16:38 UTC (permalink / raw
To: gentoo-commits
commit: a7513c33fc3744c7664c8c6c9c3c1bb22f0b0ab9
Author: Louis Sautier <sautier.louis <AT> gmail <DOT> com>
AuthorDate: Sat Nov 5 23:16:06 2022 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Jan 14 16:38:46 2023 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=a7513c33
emerge: add support for --deselect
Signed-off-by: Louis Sautier <sautier.louis <AT> gmail.com>
Closes: https://github.com/gentoo/gentoo-bashcomp/pull/6
Signed-off-by: Sam James <sam <AT> gentoo.org>
completions/emerge | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/completions/emerge b/completions/emerge
index 03cc503..e84a7fc 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -35,7 +35,7 @@ _emerge()
# find action
for x in ${COMP_LINE} ; do
if [[ ${x} =~ ^(system|world)$ ]] || [[ ${x} =~ -[CPcs] ]] || \
- [[ ${x} =~ --(clean|config|depclean|info|metadata|prune|rage-clean|regen|resume|search|sync|unmerge) ]]
+ [[ ${x} =~ --(clean|config|depclean|deselect|info|metadata|prune|rage-clean|regen|resume|search|sync|unmerge) ]]
then
action=${x}
break
@@ -96,7 +96,7 @@ _emerge()
--ask --autounmask-write \
--buildpkg --buildpkgonly \
--changelog --clean --color=y --color=n --columns --complete-graph --config \
- --debug --deep --depclean \
+ --debug --deep --depclean --deselect \
--emptytree \
--fetch-all-uri --fetchonly \
--getbinpkg --getbinpkgonly \
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2023-03-13 21:27 Sam James
0 siblings, 0 replies; 34+ messages in thread
From: Sam James @ 2023-03-13 21:27 UTC (permalink / raw
To: gentoo-commits
commit: 8e15ae348f400c86a8314933a15d8f851f045281
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 13 21:26:42 2023 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Mar 13 21:27:22 2023 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=8e15ae34
completions/emerge: add additional options
Adds the following:
- --autounmask-keep-keywords
- --autounmask-continue
- --onlydeps-with-ideps
- --onlydeps-with-rdeps
- --update-if-installed
Signed-off-by: Sam James <sam <AT> gentoo.org>
completions/emerge | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/completions/emerge b/completions/emerge
index e84a7fc..113aa07 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -93,7 +93,7 @@ _emerge()
elif [[ ${cur} == --* ]]; then
# Complete on long options.
opts="--alphabetical \
- --ask --autounmask-write \
+ --ask --autounmask-write --autounmask-keep-keywords --autounmask-continue \
--buildpkg --buildpkgonly \
--changelog --clean --color=y --color=n --columns --complete-graph --config \
--debug --deep --depclean --deselect \
@@ -105,14 +105,14 @@ _emerge()
--keep-going \
--metadata \
--newuse --noconfmem --nodeps --noreplace --nospinner \
- --oneshot --onlydeps \
+ --oneshot --onlydeps --onlydeps-with-ideps --onlydeps-with-rdeps \
--pretend --prune \
--quiet --rage-clean \
--reinstall=changed-use --regen \
--search \
--sync \
--tree \
- --unmerge --update --upgradeonly --usepkg --usepkgonly \
+ --unmerge --update --update-if-installed --upgradeonly --usepkg --usepkgonly \
--verbose \
--with-bdeps=y --with-bdeps=n"
if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-02-21 7:23 Sam James
0 siblings, 0 replies; 34+ messages in thread
From: Sam James @ 2024-02-21 7:23 UTC (permalink / raw
To: gentoo-commits
commit: 1f3b30d5e4d5b39601fb403db492c2f844960975
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 21 07:23:35 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Feb 21 07:23:35 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=1f3b30d5
completions/emerge: add --verbose-conflicts
Bug: https://bugs.gentoo.org/924830
Signed-off-by: Sam James <sam <AT> gentoo.org>
completions/emerge | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/completions/emerge b/completions/emerge
index 113aa07..915a0b0 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -113,7 +113,7 @@ _emerge()
--sync \
--tree \
--unmerge --update --update-if-installed --upgradeonly --usepkg --usepkgonly \
- --verbose \
+ --verbose --verbose-conflicts \
--with-bdeps=y --with-bdeps=n"
if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
opts="${opts} --help --resume --searchdesc --version"
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-02-21 7:34 Sam James
0 siblings, 0 replies; 34+ messages in thread
From: Sam James @ 2024-02-21 7:34 UTC (permalink / raw
To: gentoo-commits
commit: 01bd80421d77d8e538495aafffef34c23ef3cd6d
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 21 07:29:23 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Feb 21 07:29:23 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=01bd8042
completions/emerge: add --changed-* options
* --changed-deps
* --changed-deps-report
* --changed-slot
* --changed-use
Signed-off-by: Sam James <sam <AT> gentoo.org>
completions/emerge | 1 +
1 file changed, 1 insertion(+)
diff --git a/completions/emerge b/completions/emerge
index e813817..442acaf 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -96,6 +96,7 @@ _emerge()
--ask --autounmask-write --autounmask-keep-keywords --autounmask-continue \
--buildpkg --buildpkgonly \
--changelog --clean --color=y --color=n --columns --complete-graph --config \
+ --changed-deps --changed-deps-report --changed-slot --changed-use \
--debug --deep --depclean --deselect \
--emptytree \
--fetch-all-uri --fetchonly \
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-02-21 7:34 Sam James
0 siblings, 0 replies; 34+ messages in thread
From: Sam James @ 2024-02-21 7:34 UTC (permalink / raw
To: gentoo-commits
commit: 5a9c389ddbf6e1e1692d521f7e132110ec58d482
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 21 07:25:23 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Feb 21 07:25:23 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=5a9c389d
completions/emerge: add --with-test-deps
Signed-off-by: Sam James <sam <AT> gentoo.org>
completions/emerge | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/completions/emerge b/completions/emerge
index 915a0b0..e813817 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -114,7 +114,7 @@ _emerge()
--tree \
--unmerge --update --update-if-installed --upgradeonly --usepkg --usepkgonly \
--verbose --verbose-conflicts \
- --with-bdeps=y --with-bdeps=n"
+ --with-bdeps=y --with-bdeps=n --with-test-deps"
if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
opts="${opts} --help --resume --searchdesc --version"
fi
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-02-21 7:34 Sam James
0 siblings, 0 replies; 34+ messages in thread
From: Sam James @ 2024-02-21 7:34 UTC (permalink / raw
To: gentoo-commits
commit: 6a3d1b3d78a174db6711deb8335ab998ec6bb6c5
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 21 07:34:19 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Feb 21 07:34:19 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=6a3d1b3d
completions/emerge: add various further options
Signed-off-by: Sam James <sam <AT> gentoo.org>
completions/emerge | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/completions/emerge b/completions/emerge
index 442acaf..c3be06b 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -93,12 +93,25 @@ _emerge()
elif [[ ${cur} == --* ]]; then
# Complete on long options.
opts="--alphabetical \
- --ask --autounmask-write --autounmask-keep-keywords --autounmask-continue \
+ --ask \
+ --autounmask-write --autounmask-keep-keywords --autounmask-continue \
+ --autounmask-backtrack --autounmask-only --autounmask-unrestricted-atoms \
+ --autounmask-keep-masks --autounmask-license --autounmask-use \
+ --accept-properties --accept-restrict --alert --alert=y --alert=n \
+ --ask-enter-invalid \
+ --binpkg-changed-deps --binpkg-respect-use \
+ --buildpkg-exclude \
--buildpkg --buildpkgonly \
+ --backtrack= \
--changelog --clean --color=y --color=n --columns --complete-graph --config \
+ --complete-graph-if-new-use --complete-graph-if-new-ver \
+ --config-root \
--changed-deps --changed-deps-report --changed-slot --changed-use \
--debug --deep --depclean --deselect \
+ --depclean-lib-check \
+ --dynamic-deps --dynamic-deps=y --dynamic-deps=n \
--emptytree \
+ --exclude \
--fetch-all-uri --fetchonly \
--getbinpkg --getbinpkgonly \
--ignore-default-opts --info \
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-02-25 20:14 Sam James
0 siblings, 0 replies; 34+ messages in thread
From: Sam James @ 2024-02-25 20:14 UTC (permalink / raw
To: gentoo-commits
commit: 1e4bcaf0c6052449fda9750d4865a275a87f4336
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Feb 25 20:14:47 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Feb 25 20:14:47 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=1e4bcaf0
completions/emerge: fix indentation
Signed-off-by: Sam James <sam <AT> gentoo.org>
completions/emerge | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/completions/emerge b/completions/emerge
index c3be06b..98110c4 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -98,20 +98,20 @@ _emerge()
--autounmask-backtrack --autounmask-only --autounmask-unrestricted-atoms \
--autounmask-keep-masks --autounmask-license --autounmask-use \
--accept-properties --accept-restrict --alert --alert=y --alert=n \
- --ask-enter-invalid \
- --binpkg-changed-deps --binpkg-respect-use \
- --buildpkg-exclude \
+ --ask-enter-invalid \
+ --binpkg-changed-deps --binpkg-respect-use \
+ --buildpkg-exclude \
--buildpkg --buildpkgonly \
- --backtrack= \
+ --backtrack= \
--changelog --clean --color=y --color=n --columns --complete-graph --config \
- --complete-graph-if-new-use --complete-graph-if-new-ver \
- --config-root \
+ --complete-graph-if-new-use --complete-graph-if-new-ver \
+ --config-root \
--changed-deps --changed-deps-report --changed-slot --changed-use \
--debug --deep --depclean --deselect \
- --depclean-lib-check \
- --dynamic-deps --dynamic-deps=y --dynamic-deps=n \
+ --depclean-lib-check \
+ --dynamic-deps --dynamic-deps=y --dynamic-deps=n \
--emptytree \
- --exclude \
+ --exclude \
--fetch-all-uri --fetchonly \
--getbinpkg --getbinpkgonly \
--ignore-default-opts --info \
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-11 3:12 Sam James
0 siblings, 0 replies; 34+ messages in thread
From: Sam James @ 2024-05-11 3:12 UTC (permalink / raw
To: gentoo-commits
commit: aa32f1e126bdf947efc012d4d6b93a7150d74b24
Author: Lucio Sauer <watermanpaint <AT> posteo <DOT> net>
AuthorDate: Fri May 10 11:59:16 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat May 11 03:11:17 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=aa32f1e1
portageq envvar: preserve PATH to avoid command validation warnings
Some of Portage's environment variables undergo command validation.
When one is set to a relative value, Portage relies on PATH to find the
binary.
We need to preserve it after purging the environment (`env -i`) if we
want to avoid "<key> is invalid: <value>" warnings.
For Portage 3.0.63, this affects
PORTAGE_{B{,UN}ZIP2_COMMAND,LOG_FILTER_FILE_CMD}.
Bug: https://bugs.gentoo.org/588642
Signed-off-by: Lucio Sauer <watermanpaint <AT> posteo.net>
Signed-off-by: Sam James <sam <AT> gentoo.org>
completions/portageq | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/completions/portageq b/completions/portageq
index 7922e59..a8a113b 100644
--- a/completions/portageq
+++ b/completions/portageq
@@ -47,7 +47,7 @@ _portageq() {
# this also isn't the fastest, but I welcome an alternative method
envvar)
- COMPREPLY=($(compgen -W "$(env -i emerge -v --info | \
+ COMPREPLY=($(compgen -W "$(env -i PATH="${PATH}" emerge -v --info | \
sed -n -e '/^[[:upper:]].*=".*"/s/^\(.*\)=".*$/\1/p')" -- ${cur}))
;;
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-11 3:12 Sam James
0 siblings, 0 replies; 34+ messages in thread
From: Sam James @ 2024-05-11 3:12 UTC (permalink / raw
To: gentoo-commits
commit: 63aae2a1775e501678290c6dbeac53215decffc2
Author: Lucio Sauer <watermanpaint <AT> posteo <DOT> net>
AuthorDate: Fri May 10 12:07:16 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat May 11 03:11:51 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=63aae2a1
portageq envvar: fix variables selected for completion
With lines like VAR="foo" BAZ="1 2 3", \(.*\)=".*$ not only matches VAR,
but also VAR="foo" BAZ.
This applies at line ^USE=.*, where the regular USE flags are followed
by a list of all present USE_EXPAND variables together with their
respective values.
The current sed invocation also ignores environment variables that start
with a lowercase letter, such as gl_cv_compiler_check_decl_option.
Closes: https://bugs.gentoo.org/931671
Signed-off-by: Lucio Sauer <watermanpaint <AT> posteo.net>
Signed-off-by: Sam James <sam <AT> gentoo.org>
completions/portageq | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/completions/portageq b/completions/portageq
index a8a113b..7775cc4 100644
--- a/completions/portageq
+++ b/completions/portageq
@@ -48,7 +48,7 @@ _portageq() {
# this also isn't the fastest, but I welcome an alternative method
envvar)
COMPREPLY=($(compgen -W "$(env -i PATH="${PATH}" emerge -v --info | \
- sed -n -e '/^[[:upper:]].*=".*"/s/^\(.*\)=".*$/\1/p')" -- ${cur}))
+ cut -s -d = -f 1)" -- ${cur}))
;;
*v@(isible|ersion)|match)
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-15 19:25 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-15 19:25 UTC (permalink / raw
To: gentoo-commits
commit: 3d2b3aa2fe7d534a9d17a362989f6800efd36402
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sat May 11 19:26:07 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 15 19:10:53 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=3d2b3aa2
add completion for qfile from app-portage/portage-utils
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/qfile | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/completions/qfile b/completions/qfile
new file mode 100644
index 0000000..edf9e08
--- /dev/null
+++ b/completions/qfile
@@ -0,0 +1,45 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# qfile completion (from app-portage/portage-utils)
+#
+
+_qfile() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local -A OPTS=(
+ [STANDALONE]='-S --slots -R --root-prefix -d --dir -o --orphans
+ -P --skip-plibreg --verbose -q --quiet -C --nocolor --color
+ -h --help -V --version'
+ [ARG]='-F --format -x --exclude --root'
+ )
+
+ case ${prev} in
+ --root)
+ _filedir -d
+ return
+ ;;
+ -x|--exclude)
+ _pkgname -I "${cur}"
+ return
+ ;;
+ -F|--format)
+ COMPREPLY=()
+ return
+ ;;
+ esac
+
+ if [[ ${cur} = -* ]]; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ else
+ _filedir
+ fi
+} &&
+complete -F _qfile qfile
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-15 19:25 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-15 19:25 UTC (permalink / raw
To: gentoo-commits
commit: a338e2564a05127c7aa6f3170d2de3fa305a0655
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sat May 11 19:38:17 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 15 19:10:53 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=a338e256
add completion for qdepends from app-portage/portage-utils
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/qdepends | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/completions/qdepends b/completions/qdepends
new file mode 100644
index 0000000..0c6111d
--- /dev/null
+++ b/completions/qdepends
@@ -0,0 +1,49 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# qdepends completion (from app-portage/portage-utils)
+#
+
+_qdepends() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local -A OPTS=(
+ [STANDALONE]='-d --depend -r --rdepend -p --pdepend -b --bdepend -I --idepend
+ -Q --query -i --installed -t --tree -U --use -S --pretty -R --resolve
+ -v --verbose -q --quiet -C --nocolor --color -h --help -V --version'
+ [ARG]='-F --format --root'
+ )
+
+ local i pkg_type="-I"
+ for word in "${COMP_WORDS[@]}"; do
+ if [[ ${word} = "-t" || ${word} = "--tree" ]]; then
+ pkg_type="-A"
+ break
+ fi
+ done
+
+ case ${prev} in
+ --root)
+ _filedir -d
+ return
+ ;;
+ -F|--format)
+ COMPREPLY=()
+ return
+ ;;
+ esac
+
+ if [[ ${cur} = -* ]]; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ else
+ _pkgname ${pkg_type} "${cur}"
+ fi
+} &&
+complete -F _qdepends qdepends
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-15 19:25 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-15 19:25 UTC (permalink / raw
To: gentoo-commits
commit: d4ecc657ba65202265d8757478192e273c09b135
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sat May 11 20:03:24 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 15 19:10:54 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=d4ecc657
add completion for qsize from app-portage/portage-utils
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/qsize | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/completions/qsize b/completions/qsize
new file mode 100644
index 0000000..34d1fec
--- /dev/null
+++ b/completions/qsize
@@ -0,0 +1,41 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# qsize completion (from app-portage/portage-utils)
+#
+
+_qsize() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local -A OPTS=(
+ [STANDALONE]='-f --filesystem -s --sum -S --sum-only -m --megabytes
+ -k --kilobytes -b --bytes -v --verbose -q --quiet -C --nocolor
+ --color -h --help -V --version'
+ [ARG]='-i --ignore -F --format --root'
+ )
+
+ case ${prev} in
+ --root)
+ _filedir -d
+ return
+ ;;
+ -i|--ignore|-F|--format)
+ COMPREPLY=()
+ return
+ ;;
+ esac
+
+ if [[ ${cur} = -* ]]; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ else
+ _pkgname -I "${cur}"
+ fi
+} &&
+complete -F _qsize qsize
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-15 19:25 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-15 19:25 UTC (permalink / raw
To: gentoo-commits
commit: 6c1315e121cb90a28c6fcd00bd10eff2f527238c
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sun May 12 16:00:47 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 15 19:10:54 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=6c1315e1
add completion for qwhich from app-portage/portage-utils
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/qwhich | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/completions/qwhich b/completions/qwhich
new file mode 100644
index 0000000..87959b9
--- /dev/null
+++ b/completions/qwhich
@@ -0,0 +1,49 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# qwhich completion (from app-portage/portage-utils)
+#
+
+_qwhich() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local -A OPTS=(
+ [STANDALONE]='-I --vdb -b --binpkg -t --tree -p --pretty -d --dir
+ -R --repo -f --first -l --latest -T --novirtual -A --noacct
+ -v --verbose -q --quiet -C --nocolor --color -h --help -V --version'
+ [ARG]='-F --format --root'
+ )
+
+ local i pkg_type="-I"
+ for word in "${COMP_WORDS[@]}"; do
+ if [[ ${word} = "-t" || ${word} = "--tree" ]]; then
+ pkg_type="-A"
+ break
+ fi
+ done
+
+ case ${prev} in
+ --root)
+ _filedir -d
+ return
+ ;;
+ -F|--format)
+ COMPREPLY=()
+ return
+ ;;
+ esac
+
+ if [[ ${cur} = -* ]]; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ else
+ _pkgname ${pkg_type} "${cur}"
+ fi
+} &&
+complete -F _qwhich qwhich
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-15 19:25 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-15 19:25 UTC (permalink / raw
To: gentoo-commits
commit: a7e145507c10aad145281eea418ce3ee00bb5121
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sat May 11 16:01:12 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 15 19:10:53 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=a7e14550
add completion for qlist from app-portage/portage-utils
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/qlist | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/completions/qlist b/completions/qlist
new file mode 100644
index 0000000..1c4c24f
--- /dev/null
+++ b/completions/qlist
@@ -0,0 +1,42 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# qlist completion (from app-portage/portage-utils)
+#
+
+_qlist() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local -A OPTS=(
+ [STANDALONE]='-I --installed -k --binpkgs -t --tree -S --slots -R --repo
+ -U --umap -c --columns -m --mask --showdebug -e --exact -d --dir
+ -o --obj -s --sym -v --verbose -q --quiet -C --nocolor --color
+ -h --help -V --version'
+ [ARG]='-F --format --root'
+ )
+
+ case ${prev} in
+ --root)
+ _filedir -d
+ return
+ ;;
+ -F|--format)
+ COMPREPLY=()
+ return
+ ;;
+ esac
+
+ if [[ ${cur} = -* ]]; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ else
+ _pkgname -I "${cur}"
+ fi
+} &&
+complete -F _qlist qlist
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-15 19:25 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-15 19:25 UTC (permalink / raw
To: gentoo-commits
commit: 114d592416f604caf28cfc53ce6dfb1aa1c00b72
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sat May 11 16:01:44 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 15 19:10:53 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=114d5924
add completion for q from app-portage/portage-utils
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/q | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/completions/q b/completions/q
new file mode 100644
index 0000000..1522235
--- /dev/null
+++ b/completions/q
@@ -0,0 +1,52 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# q completion (from app-portage/portage-utils)
+#
+
+_q() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local -A OPTS=(
+ [STANDALONE]='-i --install -o --overlays -e --envvar -m --mask -v --verbose
+ -q --quiet -C --nocolor --color -h --help -V --version'
+ [APPLETS]='qatom qcheck qdepends qfile qgrep qkeyword qlist qlop
+ qmanifest qmerge qmerge qpkg qsearch qsize qtbz2 qtegrity quse
+ qwhich qxpak'
+ [ARG]='--root'
+ )
+
+ local i
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ if [[ ${COMP_WORDS[i]} != -* ]]; then
+ if [[ " ${OPTS[APPLETS]} " =~ " ${COMP_WORDS[i]} " ]]; then
+ local root_command=${COMP_WORDS[i]}
+ _command_offset ${i}
+ else
+ COMPREPLY=()
+ fi
+ return
+ fi
+
+ [[ ${i} -lt ${COMP_CWORD} && " ${OPTS[ARG]} " =~ " ${COMP_WORDS[i]} " ]] && ((i++))
+ done
+
+ case ${prev} in
+ --root)
+ _filedir -d
+ return
+ ;;
+ esac
+
+ if [[ ${cur} = -* ]]; then
+ COMPREPLY=( $(compgen -W '${OPTS[STANDALONE]} ${OPTS[ARG]}' -- "${cur}") )
+ else
+ COMPREPLY=( $(compgen -W "${OPTS[APPLETS]}" -- "${cur}") )
+ fi
+} &&
+complete -F _q q
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-15 19:25 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-15 19:25 UTC (permalink / raw
To: gentoo-commits
commit: 0e7fa26783d4c33346703a2ef25e56342ddac9fd
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sun May 12 16:16:23 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 15 19:10:54 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=0e7fa267
add completion for qsearch from app-portage/portage-utils
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/qsearch | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/completions/qsearch b/completions/qsearch
new file mode 100644
index 0000000..4cae9d2
--- /dev/null
+++ b/completions/qsearch
@@ -0,0 +1,36 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# qsearch completion (from app-portage/portage-utils)
+#
+
+_qsearch() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local -A OPTS=(
+ [STANDALONE]='-a --all -s --search -N --name-only -R --repo
+ -v --verbose -q --quiet -C --nocolor --color -h --help -V --version'
+ [ARG]='-S --desc -F --format --root'
+ )
+
+ case ${prev} in
+ --root)
+ _filedir -d
+ return
+ ;;
+ -S|--desc|-F|--format)
+ COMPREPLY=()
+ return
+ ;;
+ esac
+
+ if [[ ${cur} = -* ]]; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ fi
+} &&
+complete -F _qsearch qsearch
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-15 19:25 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-15 19:25 UTC (permalink / raw
To: gentoo-commits
commit: bfa68e78a658e1af098931dfc2ebf69bee61265f
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Wed May 15 19:15:36 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 15 19:15:36 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=bfa68e78
add completion for qkeyword from app-portage/portage-utils
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/qkeyword | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/completions/qkeyword b/completions/qkeyword
new file mode 100644
index 0000000..ebf749c
--- /dev/null
+++ b/completions/qkeyword
@@ -0,0 +1,37 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# qkeyword completion (from app-portage/portage-utils)
+#
+
+_qkeyword() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local -A OPTS=(
+ [STANDALONE]='-A --showarch -i --showarch -d --showarch -t --needsstable
+ -s --stats -a --all -n --not -S --stable -T --testing
+ -v --verbose -q --quiet -C --nocolor --color -h --help -V --version'
+ [ARG]='-p --matchpkg -c --matchcat -m --matchmaint -F --format --root'
+ )
+
+ case ${prev} in
+ --root)
+ _filedir -d
+ return
+ ;;
+ -p|--matchpkg|-c|--matchcat|-m|--matchmaint|-F|--format)
+ COMPREPLY=()
+ return
+ ;;
+ esac
+
+ if [[ ${cur} = -* ]]; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ fi
+} &&
+complete -F _qkeyword qkeyword
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-15 20:09 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-15 20:09 UTC (permalink / raw
To: gentoo-commits
commit: 03984b3ea6dea163773af007c7109636a9676e9e
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Wed May 15 20:09:45 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 15 20:09:45 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=03984b3e
add completion for emaint from sys-apps/portage
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/emaint | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 77 insertions(+)
diff --git a/completions/emaint b/completions/emaint
new file mode 100644
index 0000000..74f1e0a
--- /dev/null
+++ b/completions/emaint
@@ -0,0 +1,77 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# emaint completion (from sys-apps/portage)
+#
+
+_emaint() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local -A OPTS=(
+ [COMMANDS]='all binhost cleanresume merges movebin moveinst sync world'
+ [STANDALONE]='-h --help -c --check -f --fix --version'
+ [LOGS]='-C --clean -p --pretend'
+ [LOGS_ARG]='-t --time'
+ [MERGES]='-y --yes'
+ [SYNC]='-a --auto -A --allrepos'
+ [SYNC_ARG]='-r --repo --sync-submodule'
+ )
+
+ local i command
+ for (( i=1; i <= COMP_CWORD; i++ )); do
+ if [[ ${COMP_WORDS[i]} != -* ]]; then
+ if [[ " ${OPTS[COMMANDS]} " =~ " ${COMP_WORDS[i]} " ]]; then
+ command=${COMP_WORDS[i]}
+ break
+ else
+ COMPREPLY=( $(compgen -W '${OPTS[COMMANDS]}' -- "${cur}") )
+ return
+ fi
+ fi
+
+ [[ ${i} -lt ${COMP_CWORD} && " ${OPTS[LOGS_ARG]} ${OPTS[SYNC_ARG]} " =~ " ${COMP_WORDS[i]} " ]] && ((i++))
+ done
+
+ case ${command} in
+ logs)
+ if [[ ${prev} = -t || ${prev} = --time ]]; then
+ COMPREPLY=()
+ return
+ fi
+ ;;
+ sync)
+ case ${prev} in
+ -r|--repo)
+ COMPREPLY=( $(compgen -W "$(_parsereposconf -l)" -- "${cur}") )
+ return
+ ;;
+ --sync-submodule)
+ COMPREPLY=( $(compgen -W 'glsa news profiles' -- "${cur}") )
+ return
+ ;;
+ esac
+ ;;
+ esac
+
+ COMPREPLY=( $(compgen -W '${OPTS[STANDALONE]}' -- "${cur}") )
+ case ${command} in
+ logs)
+ COMPREPLY+=( $(compgen -W '${OPTS[LOGS]} ${OPTS[LOGS_ARG]}' -- "${cur}") )
+ ;;
+ merges)
+ COMPREPLY+=( $(compgen -W '${OPTS[MERGES]}' -- "${cur}") )
+ ;;
+ sync)
+ COMPREPLY+=( $(compgen -W '${OPTS[SYNC]} ${OPTS[SYNC_ARG]}' -- "${cur}") )
+ ;;
+ esac
+ if [[ -z ${command} ]]; then
+ COMPREPLY+=( $(compgen -W '${OPTS[COMMANDS]}' -- "${cur}") )
+ fi
+} &&
+complete -F _emaint emaint
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-21 17:50 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-21 17:50 UTC (permalink / raw
To: gentoo-commits
commit: d770066407985fbf40608f09d84f77ab23516646
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Tue May 21 17:50:51 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Tue May 21 17:50:51 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=d7700664
update completion of emerge
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/emerge | 33 +++++++++++++++++++--------------
1 file changed, 19 insertions(+), 14 deletions(-)
diff --git a/completions/emerge b/completions/emerge
index 2268fca..342bfc4 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -103,7 +103,7 @@ _emerge()
--buildpkg-exclude \
--buildpkg --buildpkgonly \
--backtrack= \
- --changelog --clean --color=y --color=n --columns --complete-graph --config \
+ --changelog --clean --color=y --color=n --columns --complete-graph --config --check-news \
--complete-graph-if-new-use --complete-graph-if-new-ver \
--config-root \
--changed-deps --changed-deps-report --changed-slot --changed-use \
@@ -112,23 +112,28 @@ _emerge()
--dynamic-deps --dynamic-deps=y --dynamic-deps=n \
--emptytree \
--exclude \
- --fetch-all-uri --fetchonly \
+ --fail-clean --fetch-all-uri --fetchonly --fuzzy-search \
--getbinpkg --getbinpkgonly \
- --ignore-default-opts --info \
- --jobs= \
+ --ignore-default-opts --ignore-built-slot-operator-deps --ignore-soname-deps \
+ --ignore-world --implicit-system-deps --info \
+ --jobs= --load-average= \
--keep-going \
- --metadata \
- --newuse --noconfmem --nodeps --noreplace --nospinner \
+ --misspell-suggestions --metadata \
+ --newrepo --newuse --noconfmem --nodeps --noreplace --nospinner \
--oneshot --onlydeps --onlydeps-with-ideps --onlydeps-with-rdeps \
- --pretend --prune \
- --quiet --rage-clean \
- --reinstall=changed-use --regen \
- --search \
- --sync \
+ --pretend --prune --package-moves --pkg-format \
+ --quiet --quiet-build --quiet-fail --quiet-repo-display --quiet-unmerge-warn \
+ --rage-clean --regex-search-auto --read-news \
+ --reinstall=changed-use --reinstall-atoms --regen --rebuild-exclude --rebuild-ignore --rebuild-if-new-slot \
+ --rebuild-if-new-rev --rebuild-if-new-ver --rebuild-if-unbuilt --rebuilt-binaries \
+ --search --search-index --search-similarity \
+ --sync --select --selective \
+ --sync-submodule=glsa --sync-submodule=news --sync-submodule=profiles \
--tree \
- --unmerge --update --update-if-installed --upgradeonly --usepkg --usepkgonly \
- --verbose --verbose-conflicts \
- --with-bdeps=y --with-bdeps=n --with-test-deps"
+ --unordered-display --use-ebuild-visibility --useoldpkg-atoms --usepkg-exclude-live \
+ --unmerge --update --update-if-installed --upgradeonly --usepkg --usepkgonly --usepkg-exclude \
+ --verbose --verbose-conflicts --verbose-slot-rebuilds \
+ --with-bdeps=y --with-bdeps=n --with-bdeps-auto --with-test-deps"
if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
opts="${opts} --help --resume --searchdesc --version"
fi
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-21 18:34 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-21 18:34 UTC (permalink / raw
To: gentoo-commits
commit: a5fbc58454e6cd8544096b1def1f7c30f45e97c1
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Tue May 21 18:34:11 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Tue May 21 18:34:41 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=a5fbc584
emerge: use array for opts & format the code
Closes: https://bugs.gentoo.org/924830
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/emerge | 144 +++++++++++++++++++++++++++--------------------------
1 file changed, 73 insertions(+), 71 deletions(-)
diff --git a/completions/emerge b/completions/emerge
index 342bfc4..32a1da9 100644
--- a/completions/emerge
+++ b/completions/emerge
@@ -10,16 +10,16 @@ source "@helpersdir@/gentoo-common.sh"
#
_emerge()
{
- local c cur prev curword numwords opts cond prepend
+ local c cur prev cond prepend
local words stophere i x
local action actionpos sysactions pkgpos
local portdir=$(_portdir -o)
COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- numwords=${#COMP_WORDS[*]}
- curword=${COMP_CWORD}
- opts=''
+ local cur=${COMP_WORDS[COMP_CWORD]}
+ local prev=${COMP_WORDS[COMP_CWORD-1]}
+ local numwords=${#COMP_WORDS[*]}
+ local curword=${COMP_CWORD}
+ local opts=()
if [[ ${prev} == '>' || ${prev} == '<' ]] ; then
COMPREPLY=($(compgen -f -- ${cur}))
@@ -86,69 +86,71 @@ _emerge()
# If a resume option was specified, it needs special handling.
if [[ ${COMP_LINE} =~ --(resume|skipfirst) ]] ; then
if [[ ${cur} == --* ]]; then
- opts="--ask --pretend --resume --skipfirst"
+ opts=( --ask --pretend --resume --skipfirst )
elif [[ ${cur} == -* ]]; then
- [[ ${COMP_LINE} =~ --(ask|pretend) ]] && opts="-a -p"
+ [[ ${COMP_LINE} =~ --(ask|pretend) ]] && opts=( -a -p )
fi
elif [[ ${cur} == --* ]]; then
# Complete on long options.
- opts="--alphabetical \
- --ask \
- --autounmask-write --autounmask-keep-keywords --autounmask-continue \
- --autounmask-backtrack --autounmask-only --autounmask-unrestricted-atoms \
- --autounmask-keep-masks --autounmask-license --autounmask-use \
- --accept-properties --accept-restrict --alert --alert=y --alert=n \
- --ask-enter-invalid \
- --binpkg-changed-deps --binpkg-respect-use \
- --buildpkg-exclude \
- --buildpkg --buildpkgonly \
- --backtrack= \
- --changelog --clean --color=y --color=n --columns --complete-graph --config --check-news \
- --complete-graph-if-new-use --complete-graph-if-new-ver \
- --config-root \
- --changed-deps --changed-deps-report --changed-slot --changed-use \
- --debug --deep --depclean --deselect \
- --depclean-lib-check \
- --dynamic-deps --dynamic-deps=y --dynamic-deps=n \
- --emptytree \
- --exclude \
- --fail-clean --fetch-all-uri --fetchonly --fuzzy-search \
- --getbinpkg --getbinpkgonly \
- --ignore-default-opts --ignore-built-slot-operator-deps --ignore-soname-deps \
- --ignore-world --implicit-system-deps --info \
- --jobs= --load-average= \
- --keep-going \
- --misspell-suggestions --metadata \
- --newrepo --newuse --noconfmem --nodeps --noreplace --nospinner \
- --oneshot --onlydeps --onlydeps-with-ideps --onlydeps-with-rdeps \
- --pretend --prune --package-moves --pkg-format \
- --quiet --quiet-build --quiet-fail --quiet-repo-display --quiet-unmerge-warn \
- --rage-clean --regex-search-auto --read-news \
- --reinstall=changed-use --reinstall-atoms --regen --rebuild-exclude --rebuild-ignore --rebuild-if-new-slot \
- --rebuild-if-new-rev --rebuild-if-new-ver --rebuild-if-unbuilt --rebuilt-binaries \
- --search --search-index --search-similarity \
- --sync --select --selective \
- --sync-submodule=glsa --sync-submodule=news --sync-submodule=profiles \
- --tree \
- --unordered-display --use-ebuild-visibility --useoldpkg-atoms --usepkg-exclude-live \
- --unmerge --update --update-if-installed --upgradeonly --usepkg --usepkgonly --usepkg-exclude \
- --verbose --verbose-conflicts --verbose-slot-rebuilds \
- --with-bdeps=y --with-bdeps=n --with-bdeps-auto --with-test-deps"
+ opts=(
+ --alphabetical
+ --ask
+ --autounmask-write --autounmask-keep-keywords --autounmask-continue={y,n}
+ --autounmask-backtrack --autounmask-only --autounmask-unrestricted-atoms
+ --autounmask-keep-masks --autounmask-license={y,n} --autounmask-use={y,n}
+ --accept-properties --accept-restrict --alert --alert={y,n}
+ --ask-enter-invalid
+ --binpkg-changed-deps --binpkg-respect-use
+ --buildpkg-exclude
+ --buildpkg --buildpkgonly
+ --backtrack=
+ --changelog --clean --color={y,n} --columns --complete-graph --config --check-news
+ --complete-graph-if-new-use={y,n} --complete-graph-if-new-ver={y,n}
+ --config-root
+ --changed-deps --changed-deps-report --changed-slot --changed-use
+ --debug --deep --depclean --deselect
+ --depclean-lib-check
+ --dynamic-deps={y,n}
+ --emptytree
+ --exclude
+ --fail-clean --fetch-all-uri --fetchonly --fuzzy-search
+ --getbinpkg --getbinpkgonly
+ --ignore-default-opts --ignore-built-slot-operator-deps={y,n} --ignore-soname-deps={y,n}
+ --ignore-world --implicit-system-deps={y,n} --info
+ --jobs= --load-average=
+ --keep-going
+ --misspell-suggestions={y,n} --metadata
+ --newrepo --newuse --noconfmem --nodeps --noreplace --nospinner
+ --oneshot --onlydeps --onlydeps-with-ideps --onlydeps-with-rdeps
+ --pretend --prune --package-moves --pkg-format
+ --quiet --quiet-build --quiet-fail --quiet-repo-display --quiet-unmerge-warn
+ --rage-clean --regex-search-auto={y,n} --read-news
+ --reinstall=changed-use --reinstall-atoms --regen --rebuild-exclude --rebuild-ignore --rebuild-if-new-slot
+ --rebuild-if-new-rev --rebuild-if-new-ver --rebuild-if-unbuilt --rebuilt-binaries
+ --search --search-index --search-similarity
+ --sync --select --selective
+ --sync-submodule={glsa,news,profiles}
+ --tree
+ --unordered-display --use-ebuild-visibility --useoldpkg-atoms --usepkg-exclude-live
+ --unmerge --update --update-if-installed --upgradeonly --usepkg --usepkgonly --usepkg-exclude
+ --verbose --verbose-conflicts --verbose-slot-rebuilds
+ --with-bdeps={y,n} --with-bdeps-auto={y,n} --with-test-deps
+ )
if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
- opts="${opts} --help --resume --searchdesc --version"
+ opts+=( --help --resume --searchdesc --version )
fi
elif [[ ${cur} == -* ]]; then
# Complete on short options.
- opts="-B -D -G -K -N -O -a -b -d -e -f -g -k -l -n -o -p -q -t -u -v"
+ opts+=( -B -D -G -K -N -O -a -b -d -e -f -g -k -l -n -o -p -q -t -u -v )
if [[ ${curword} -eq 1 ]] && [[ ${numwords} -eq 2 ]] ; then
- opts="${opts} -h -S -V"
+ opts+=( -h -S -V )
fi
if [[ -z ${action} ]] && [[ ${curword} -eq $((pkgpos - 1)) ]] ; then
- opts="${opts} -C -P -c -s"
+ opts+=( -C -P -c -s )
fi
fi
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ COMPREPLY=($(compgen -W '${opts[*]}' -- ${cur}))
# NOTE: This slows things down!
# (Adapted from bash_completion by Ian Macdonald <ian@caliban.org>)
@@ -179,11 +181,11 @@ _emerge()
# Complete on installed packages when unmerging.
if [[ "${action}" =~ --(rage-clean|unmerge) ]]; then
- if [[ -n "${cur}" ]] ; then
- if [[ "${cur}" == */* ]]; then
- words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -G "${cur}*")
- else
- words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -S '/' -G "${cur}*")
+ if [[ -n "${cur}" ]] ; then
+ if [[ "${cur}" == */* ]]; then
+ words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -G "${cur}*")
+ else
+ words=$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg; compgen -S '/' -G "${cur}*")
local n=0
for i in ${words} ; do
@@ -193,13 +195,13 @@ _emerge()
if [[ ${n} -eq 1 ]] ; then
words="$(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -G "*-*/*")"
fi
+ fi
+ COMPREPLY=($(for i in ${words} ; do \
+ [[ ${i} == ${cur}* ]] && echo ${i} ; \
+ done))
+ else
+ COMPREPLY=($(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -S '/' -G "*-*"))
fi
- COMPREPLY=($(for i in ${words} ; do \
- [[ ${i} == ${cur}* ]] && echo ${i} ; \
- done))
- else
- COMPREPLY=($(builtin cd @GENTOO_PORTAGE_EPREFIX@/var/db/pkg ; compgen -S '/' -G "*-*"))
- fi
[[ -z "${COMPREPLY}" ]] && _pkgname_only ${cur} @GENTOO_PORTAGE_EPREFIX@/var/db/pkg
return 0
@@ -217,7 +219,7 @@ _emerge()
# Handle cases where a conditional is specified.
if [[ -n "${cond}" ]]; then
- if [[ -n "${cur}" ]]; then
+ if [[ -n "${cur}" ]]; then
if [[ ${cur} == */* ]]; then
if [[ ${cur} == *-[0-9]* ]] ; then
words="$(\
@@ -233,7 +235,7 @@ _emerge()
done ; \
done)"
else
- words="$(\
+ words="$(\
for pd in ${portdir} ; do \
builtin cd ${pd}; \
compgen -X "*metadata.xml" -G "${cur}*" -- ${cur} ; \
@@ -308,7 +310,7 @@ _emerge()
COMPREPLY=($(compgen -W "${words}" -- "${cur}"))
fi
- # If all else fails, try to complete on package names without the
+ # If all else fails, try to complete on package names without the
# category being specified.
if [[ -z "${COMPREPLY}" ]]; then
words="$(\
@@ -413,7 +415,7 @@ _emerge()
builtin cd ${pd} ; \
compgen -S '/' -G "*-*" ; \
done)""${sysactions}"
- COMPREPLY=($(compgen -W "${words}" -- ${cur}))
+ COMPREPLY=($(compgen -W "${words}" -- ${cur}))
fi
# If all else fails, try to complete on package names without the
@@ -426,7 +428,7 @@ _emerge()
[[ -d $i ]] && echo ${i##*/}; \
done ; \
done)"
- COMPREPLY=($(compgen -W "${words}" -- ${cur}))
+ COMPREPLY=($(compgen -W "${words}" -- ${cur}))
fi
return 0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-21 19:18 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-21 19:18 UTC (permalink / raw
To: gentoo-commits
commit: 7fac21ea09db60e625ed47c95327836230873192
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Tue May 21 19:18:26 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Tue May 21 19:18:26 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=7fac21ea
layman: optimize speed
Closes: https://bugs.gentoo.org/526614
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/layman | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/completions/layman b/completions/layman
index c634b13..e5441ac 100644
--- a/completions/layman
+++ b/completions/layman
@@ -10,20 +10,21 @@
_layman() {
- local cur prev opts r_overlays l_overlays splitopt
+ local cur prev r_overlays
COMPREPLY=()
- opts="--version -h --help -a --add -d --delete -s --sync -i --info
+ local opts=(
+ --version -h --help -a --add -d --delete -s --sync -i --info
-S --sync-all -L --list -l --list-local -n --nofetch -p --priority
-c --config -O --overlay_defs -o --overlays -v --verbose -q --quiet
- -N --nocolor -Q --quietness -W --width -k --nocheck --debug-level"
- r_overlays="$(layman -LkNq 2>/dev/null | grep -v '^$' | cut -d' ' -f3)"
- l_overlays="$(layman -lkNq 2>/dev/null | grep -v '^$' | cut -d' ' -f3)"
- splitopt=false
+ -N --nocolor -Q --quietness -W --width -k --nocheck --debug-level
+ )
+ r_overlays() { layman -LkNq 2>/dev/null | grep -v '^$' | cut -d' ' -f3; }
+ l_overlays() { layman -lkNq 2>/dev/null | grep -v '^$' | cut -d' ' -f3; }
_get_comp_words_by_ref -n = cur prev
- _split_longopt && splitopt=true
+ _split_longopt && local splitopt=1
case ${prev} in
--version|-h|--help|-W|--width|-o|--overlays)
@@ -31,15 +32,16 @@ _layman() {
return 0
;;
-a|--add|-i|--info)
- COMPREPLY=( $(compgen -W "${r_overlays}" -- "${cur}") )
+ COMPREPLY=( $(compgen -W "$(r_overlays)" -- "${cur}") )
return 0
;;
-d|--delete)
- COMPREPLY=( $(compgen -W "${l_overlays}" -- "${cur}") )
+ COMPREPLY=( $(compgen -W "$(l_overlays)" -- "${cur}") )
return 0
;;
-s|--sync)
- COMPREPLY=( $(compgen -W "${l_overlays} ALL" -- "${cur}") )
+ COMPREPLY=( $(compgen -W "$(l_overlays)" -- "${cur}") )
+ COMPREPLY+=( $(compgen -W "ALL" -- "${cur}") )
return 0
;;
-p|--priority)
@@ -61,9 +63,9 @@ _layman() {
;;
esac
- $splitopt && return 0
+ [[ -n ${splitopt} ]] && return 0
- COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ COMPREPLY=( $(compgen -W '${opts[*]}' -- "${cur}") )
} &&
complete -F _layman layman
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-21 19:25 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-21 19:25 UTC (permalink / raw
To: gentoo-commits
commit: 725f857724ac06277423688c3f6ca8f4ea15334f
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Tue May 21 19:25:11 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Tue May 21 19:25:11 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=725f8577
add completion for eshowkw from app-portage/gentoolkit
Closes: https://bugs.gentoo.org/426570
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/eshowkw | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/completions/eshowkw b/completions/eshowkw
new file mode 100644
index 0000000..8420420
--- /dev/null
+++ b/completions/eshowkw
@@ -0,0 +1,45 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# eshowkw completion (from app-portage/gentoolkit)
+#
+
+_eshowkw() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local -A OPTS=(
+ [STANDALONE]='-h --help -v --version -B --bold -C --color -O --overlays
+ -P --prefix -S --ignore-slot'
+ [ARG]='-a --arch -A --align -T --top-position'
+ )
+
+ case ${prev} in
+ -a|--arch)
+ local portdir=$(_portdir)
+ COMPREPLY=($(compgen -W "$( grep -v \# < "${portdir}/profiles/arch.list" )" -- "${cur}"))
+ return
+ ;;
+ -A|--align)
+ COMPREPLY=($(compgen -W "top bottom" -- "${cur}"))
+ return
+ ;;
+ -T|--top-position)
+ COMPREPLY=($(compgen -W "archlist versionlist" -- "${cur}"))
+ return
+ ;;
+ esac
+
+ if [[ ${cur} = -* ]]; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ else
+ _pkgname -A "${cur}"
+ fi
+} &&
+complete -F _eshowkw eshowkw
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-22 4:53 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-22 4:53 UTC (permalink / raw
To: gentoo-commits
commit: b812d24b004dff668f4321c51124ef086a0e506e
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Wed May 22 04:53:29 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 22 04:53:29 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=b812d24b
glsa-check: add missing args
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/glsa-check | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/completions/glsa-check b/completions/glsa-check
index d985429..b1ef0f1 100644
--- a/completions/glsa-check
+++ b/completions/glsa-check
@@ -4,29 +4,28 @@
# Distributed under the terms of the GNU General Public License, v2 or later
_glsa_check() {
- local cur opts
COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- opts="-l --list -d --dump --print -t --test -p --pretend -f --fix -i
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ local opts="-l --list -d --dump --print -t --test -p --pretend -f --fix -i
--inject -n --nocolor -e --emergelike -h --help -V --version -v --verbose
- -c --cve -m --mail"
+ -c --cve -m --mail -q --quiet -r --reverse"
if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ COMPREPLY=($(compgen -W "${opts}" -- "${cur}"))
return 0
fi
# too slow otherwise
- if [[ ! -f ${ROOT}/tmp/gc.out ]] || \
- [[ $(stat ${ROOT}/tmp/gc.out | \
- sed -n -e 's/^Modify: \([[:digit:]]\+-[[:digit:]]\+-[[:digit:]]\+\).*$/\1/p') != "$(date +%F)" ]]
+ local cache_file=${ROOT}/tmp/.completion.glsa-check.cache
+ if [[ ! -f ${cache_file} ]] || \
+ (( $(date +%s) - $(stat -c %Y "${cache_file}") > 4 * 3600 ))
then
glsa-check -nl 2>/dev/null | \
sed -n -e 's/^\([[:digit:]]\+-[[:digit:]]\+\) .*$/\1/p' > \
- ${ROOT}/tmp/gc.out
+ "${cache_file}"
fi
- COMPREPLY=($(compgen -W "${opts} $(< ${ROOT}/tmp/gc.out)" -- ${cur}))
+ COMPREPLY=($(compgen -W "${opts} all new affected $(< "${cache_file}")" -- "${cur}"))
} &&
complete -F _glsa_check glsa-check
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-22 5:08 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-22 5:08 UTC (permalink / raw
To: gentoo-commits
commit: 3c6e22334e041e6816e0e069e94f8d77da078631
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Wed May 22 05:07:58 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed May 22 05:07:58 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=3c6e2233
ebuild: fix, refactor and update completion
Closes: https://bugs.gentoo.org/403123
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/ebuild | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/completions/ebuild b/completions/ebuild
index a268355..b86eee8 100644
--- a/completions/ebuild
+++ b/completions/ebuild
@@ -1,6 +1,6 @@
# Gentoo Linux Bash Shell Command Completion
#
-# Copyright 1999-2013 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License, v2 or later
#
@@ -8,25 +8,26 @@
#
_ebuild()
{
- local cur opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
+ local i noopts seenf cur=${COMP_WORDS[COMP_CWORD]}
+ local cmds=(
+ help setup clean fetch digest manifest unpack compile test preinst
+ install postinst qmerge merge unmerge prerm postrm config package rpm
+ configure prepare instprep
+ )
+ local opts=( --debug --force --ignore-default-opts --skip-manifest --help )
- opts="help setup clean fetch digest manifest unpack compile test preinst \
- install postinst qmerge merge unmerge prerm postrm config package rpm \
- configure prepare"
+ for (( i=1 ; i < ${COMP_CWORD} ; i++ )) ; do
+ [[ ${noopts} || ${COMP_WORDS[$i]/#-*} ]] && seenf=1
+ [[ ${COMP_WORDS[$i]} == "--" ]] && noopts=1
+ done
- if [[ $COMP_CWORD -eq 1 ]] ; then
- COMPREPLY=($(compgen -f -X "!*.ebuild" -- ${cur}) \
- $(compgen -d -- ${cur}) \
- $(compgen -W '--debug --force --help --ignore-default-opts --skip-manifest' -- ${cur}))
-
- elif [[ $COMP_CWORD -eq 2 && "${COMP_WORDS[1]}" = "--debug --force --ignore-default-opts --skip-manifest" ]] ; then
- COMPREPLY=($(compgen -f -X "!*.ebuild" -- ${cur}) $(compgen -d -- ${cur}))
-
- elif [[ $COMP_CWORD -ge 2 ]] ; then
- COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
+ if [[ ${seenf} ]] ; then
+ COMPREPLY=( $(compgen -W '${cmds[*]}' -- "${cur}") )
+ else
+ _filedir ebuild
fi
+
+ [[ ${noopts} ]] || COMPREPLY+=( $(compgen -W '${opts[*]}' -- "${cur}") )
return 0
} &&
complete -o filenames -F _ebuild ebuild
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-05-27 18:50 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-05-27 18:50 UTC (permalink / raw
To: gentoo-commits
commit: 346a97f0c7fd72a29a8c6507adf6fa2e25676ca4
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Mon May 27 18:50:17 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Mon May 27 18:50:17 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=346a97f0
add completion for perl-cleaner from app-admin/perl-cleaner
Based on code from Michal Privoznik <michal.privoznik <AT> gmail.com>
Closes: https://github.com/gentoo-perl/perl-cleaner/pull/10
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/perl-cleaner | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/completions/perl-cleaner b/completions/perl-cleaner
new file mode 100644
index 0000000..a4cf9fd
--- /dev/null
+++ b/completions/perl-cleaner
@@ -0,0 +1,41 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# perl-cleaner completion (from app-admin/perl-cleaner)
+#
+
+_perl_cleaner() {
+ local i cur prev
+ _get_comp_words_by_ref cur prev
+
+ local OPTS=(
+ -h --help -V --version -p --pretend -v --verbose -q --quite
+ --modules --allmodules --libperl --all --reallyall
+ --dont-delete-leftovers -P --package-manager
+ )
+
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ if [[ ${COMP_WORDS[i]} == -- ]]; then
+ local root_command=emerge
+ _command_offset ${i}
+ return
+ fi
+ done
+
+ case ${prev} in
+ -P|--package-manager)
+ COMPREPLY=($(compgen -W 'portage pkgcore paludis' -- "${cur}"))
+ return 0
+ ;;
+ esac
+
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ return 0
+
+} &&
+complete -F _perl_cleaner perl-cleaner
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-06-07 10:20 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-06-07 10:20 UTC (permalink / raw
To: gentoo-commits
commit: 5da9b01ff0e33cf0d34feda669045f42d201cd8c
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 7 10:20:22 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Fri Jun 7 10:20:22 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=5da9b01f
add completion for binutils-config
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/binutils-config | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/completions/binutils-config b/completions/binutils-config
new file mode 100644
index 0000000..ab7fa90
--- /dev/null
+++ b/completions/binutils-config
@@ -0,0 +1,45 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+#
+# binutils-config completion (from sys-devel/binutils-config)
+#
+_binutils-config() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+ local OPTS=(
+ -C --nocolor
+ -c --get-current-profile
+ -l --list-profiles
+ -u --uninstall
+ -d --debug
+ -B --get-bin-path
+ -L --get-lib-path
+ )
+ _list_profiles() {
+ binutils-config --nocolor --list-profiles 2>/dev/null | \
+ sed -r -e 's/\[([^]]*)\] //g' -e 's/ \*//g'
+ }
+
+ if [[ ${cur} == -* ]] ; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ return 0
+ elif [[ ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ COMPREPLY+=( $(compgen -W '$(_list_profiles)' -- "${cur}" ))
+ return 0
+ fi
+
+ case ${prev} in
+ -c|--get-current-profile|-l|--list-profiles)
+ COMPREPLY=()
+ ;;
+ *)
+ COMPREPLY=( $(compgen -W '$(_list_profiles)' -- "${cur}") )
+ ;;
+ esac
+} &&
+complete -F _binutils-config binutils-config
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-06-07 10:20 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-06-07 10:20 UTC (permalink / raw
To: gentoo-commits
commit: 90dceec2bd0941e9a31fe0b906bdc283869dbca9
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 7 10:16:04 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Fri Jun 7 10:16:04 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=90dceec2
gcc-config: fix invalid suggestions & add missing flags
It was using the colored output and the "*" as completion options, which
was causing weird suggestions.
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/gcc-config | 48 ++++++++++++++++++++++++++----------------------
1 file changed, 26 insertions(+), 22 deletions(-)
diff --git a/completions/gcc-config b/completions/gcc-config
index b0d0800..40d8415 100644
--- a/completions/gcc-config
+++ b/completions/gcc-config
@@ -1,42 +1,46 @@
# Gentoo Linux Bash Shell Command Completion
#
-# Copyright 1999-2013 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License, v2 or later
#
-# gcc-config completion command
+# gcc-config completion (from sys-devel/gcc-config)
#
_gcc_config() {
- local cur prev opts
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
- opts="-O --use-old \
- -P --use-portage-chost \
- -c --get-current-profile \
- -l --list-profiles \
- -E --print-environ \
- -B --get-bin-path \
- -L --get-lib-path \
- -X --get-stdcxx-incdir"
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+ local OPTS=(
+ -C --nocolor
+ -O --use-old
+ -f --force
+ -P --use-portage-chost
+ -c --get-current-profile
+ -l --list-profiles
+ -S --split-profile
+ -E --print-environ
+ -B --get-bin-path
+ -L --get-lib-path
+ -X --get-stdcxx-incdir
+ )
+ _list_profiles() {
+ gcc-config --nocolor --list-profiles 2>/dev/null | \
+ sed -r -e 's/\[([^]]*)\] //g' -e 's/ \*//g'
+ }
- if [[ "${cur}" == -* ]] ; then
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ if [[ ${cur} == -* ]] ; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
return 0
elif [[ ${COMP_CWORD} -eq 1 ]] ; then
- COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) \
- $(compgen -W "$(gcc-config -l | sed -r -e 's/(\[([^]]*)\]) //g')" \
- -- ${cur}) )
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ COMPREPLY+=( $(compgen -W '$(_list_profiles)' -- "${cur}" ))
return 0
fi
- case "${prev}" in
+ case ${prev} in
-O|--use-old|-P|--use-portage-chost|-c|--get-current-profile|-l|--list-profiles)
COMPREPLY=()
;;
*)
- COMPREPLY=( $(compgen -W "\
- $(gcc-config -l | sed -r -e 's/(\[([^]]*)\]) //g')" -- ${cur}) )
+ COMPREPLY=( $(compgen -W '$(_list_profiles)' -- "${cur}") )
;;
esac
} &&
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/
@ 2024-06-25 16:31 Arthur Zamarin
0 siblings, 0 replies; 34+ messages in thread
From: Arthur Zamarin @ 2024-06-25 16:31 UTC (permalink / raw
To: gentoo-commits
commit: 20b9dd7d3e216bc07b5209f4f131e29b01363bf5
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 25 16:31:30 2024 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Tue Jun 25 16:31:30 2024 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-bashcomp.git/commit/?id=20b9dd7d
add completion for quickpkg
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
completions/quickpkg | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/completions/quickpkg b/completions/quickpkg
new file mode 100644
index 0000000..e5e826e
--- /dev/null
+++ b/completions/quickpkg
@@ -0,0 +1,39 @@
+# Gentoo Linux Bash Shell Command Completion
+#
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+source "@helpersdir@/gentoo-common.sh"
+
+#
+# quickpkg completion (from sys-apps/portage)
+#
+
+_quickpkg() {
+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ local OPTS=(
+ -h --help --umask --ignore-default-opts --include-config
+ --include-unmodified-config
+ )
+
+ case ${prev} in
+ --umask)
+ COMPREPLY=()
+ return
+ ;;
+ --include-config|--include-unmodified-config)
+ COMPREPLY=( $(compgen -W 'y n' -- "${cur}") )
+ return
+ ;;
+ esac
+
+ if [[ ${cur} = -* ]]; then
+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
+ else
+ _pkgname -I "${cur}"
+ fi
+} &&
+complete -F _quickpkg quickpkg
+
+# vim: ft=sh:et:ts=4:sw=4:tw=80
^ permalink raw reply related [flat|nested] 34+ messages in thread
end of thread, other threads:[~2024-06-25 16:31 UTC | newest]
Thread overview: 34+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-21 19:18 [gentoo-commits] proj/gentoo-bashcomp:master commit in: completions/ Arthur Zamarin
-- strict thread matches above, loose matches on Subject: below --
2024-06-25 16:31 Arthur Zamarin
2024-06-07 10:20 Arthur Zamarin
2024-06-07 10:20 Arthur Zamarin
2024-05-27 18:50 Arthur Zamarin
2024-05-22 5:08 Arthur Zamarin
2024-05-22 4:53 Arthur Zamarin
2024-05-21 19:25 Arthur Zamarin
2024-05-21 18:34 Arthur Zamarin
2024-05-21 17:50 Arthur Zamarin
2024-05-15 20:09 Arthur Zamarin
2024-05-15 19:25 Arthur Zamarin
2024-05-15 19:25 Arthur Zamarin
2024-05-15 19:25 Arthur Zamarin
2024-05-15 19:25 Arthur Zamarin
2024-05-15 19:25 Arthur Zamarin
2024-05-15 19:25 Arthur Zamarin
2024-05-15 19:25 Arthur Zamarin
2024-05-15 19:25 Arthur Zamarin
2024-05-11 3:12 Sam James
2024-05-11 3:12 Sam James
2024-02-25 20:14 Sam James
2024-02-21 7:34 Sam James
2024-02-21 7:34 Sam James
2024-02-21 7:34 Sam James
2024-02-21 7:23 Sam James
2023-03-13 21:27 Sam James
2023-01-14 16:38 Sam James
2018-06-23 22:23 Patrice Clement
2018-03-02 18:35 William Hubbs
2018-03-02 18:06 Michał Górny
2018-03-02 18:06 Michał Górny
2018-03-02 18:06 Michał Górny
2014-08-31 21:19 ` Michał Górny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox