[58784] trunk/dports/sysutils/bash-completion
raimue at macports.org
raimue at macports.org
Mon Oct 5 01:05:13 PDT 2009
Revision: 58784
http://trac.macports.org/changeset/58784
Author: raimue at macports.org
Date: 2009-10-05 01:05:08 -0700 (Mon, 05 Oct 2009)
Log Message:
-----------
sysutils/bash-completion:
Rewritten completion for the port command. It is much faster now by directly
passing glob expressions with the port commands.
Fixes #11441 and #21630
Modified Paths:
--------------
trunk/dports/sysutils/bash-completion/Portfile
trunk/dports/sysutils/bash-completion/files/port
Modified: trunk/dports/sysutils/bash-completion/Portfile
===================================================================
--- trunk/dports/sysutils/bash-completion/Portfile 2009-10-05 08:02:06 UTC (rev 58783)
+++ trunk/dports/sysutils/bash-completion/Portfile 2009-10-05 08:05:08 UTC (rev 58784)
@@ -4,7 +4,7 @@
name bash-completion
version 1.0
-revision 2
+revision 3
epoch 1
categories sysutils
platforms darwin
Modified: trunk/dports/sysutils/bash-completion/files/port
===================================================================
--- trunk/dports/sysutils/bash-completion/files/port 2009-10-05 08:02:06 UTC (rev 58783)
+++ trunk/dports/sysutils/bash-completion/files/port 2009-10-05 08:05:08 UTC (rev 58784)
@@ -6,135 +6,141 @@
#
_port()
{
- local cur prev mode count portdir portdiropt i port
-
- COMPREPLY=()
- cur=${COMP_WORDS[COMP_CWORD]}
- prev=${COMP_WORDS[COMP_CWORD-1]}
+ local cur prev mode count portdir cmdfile i port
- count=0
- for i in ${COMP_WORDS[@]}; do
- [ $count -eq $COMP_CWORD ] && break
- # Last parameter was the portdir, now go back to mode selection
- if [ "${COMP_WORDS[((count))]}" == "$portdir" -a "$mode" == "portdir" ]; then
- mode=""
- fi
- if [ -z "$mode" ]; then
- case $i in
- -D)
- mode=portdir
- portdir=${COMP_WORDS[((count+1))]}
- portdiropt="-D $portdir"
- ;;
- activate|archive|build|cat|cd|checksum|clean|compact|configure|\
- contents|deactivate|dependents|deps|destroot|dir|distcheck|dmg|\
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ count=0
+ for i in ${COMP_WORDS[@]}; do
+ [ $count -eq $COMP_CWORD ] && break
+ # Last parameter was a required parameter, now go back to mode selection
+ if [ "${COMP_WORDS[((count))]}" == "$portdir" -a "$mode" == "portdir" ] \
+ || [ "${COMP_WORDS[((count))]}" == "$cmdfile" -a "$mode" == "cmdfile" ]; then
+ mode=""
+ fi
+ if [ -z "$mode" ]; then
+ case $i in
+ -D)
+ mode=portdir
+ portdir=${COMP_WORDS[((count+1))]}
+ ;;
+ -F)
+ mode=cmdfile
+ cmdfile=${COMP_WORDS[((count+1))]}
+ ;;
+ activate|archive|build|cat|cd|checksum|clean|configure|contents|\
+ deactivate|dependents|deps|destroot|dir|distcheck|distfiles|dmg|\
dpkg|echo|ed|edit|exit|extract|fetch|file|gohome|help|info|\
install|installed|lint|list|livecheck|load|location|mdmg|mirror|\
- mpkg|outdated|patch|pkg|platform|provides|quit|rpm|search|selfupdate|\
- srpm|submit|sync|test|trace|unarchive|uncompact|uninstall|unload|\
- upgrade|url|usage|variants|version|work)
+ mpkg|notes|outdated|patch|pkg|platform|portpkg|provides|quit|\
+ rpm|search|select|selfupdate|srpm|submit|sync|test|trace|unarchive|\
+ uninstall|unload|upgrade|url|usage|variants|version|work)
mode=$i
- ;;
- esac
- elif [ -z "$port" ]; then
- case $mode in
- uninstall|upgrade|contents)
- if [ $( port installed | awk ' !/The following ports/ {print $1}' \
- | uniq | grep '^'$i'$') ]; then
- port=$i
- fi
- ;;
- *)
- if [ $(port $portdiropt list | awk '{ print $1 }' | grep '^'$i'$') ]; then
- port=$i
- fi
- ;;
- esac
- fi
- count=$((++count))
- done
+ ;;
+ esac
+ elif [ -z "$port" ]; then
+ case $mode in
+ contents|uninstall|upgrade)
+ if port -q installed "$i" | awk '{print $1}' | grep -q '^'$i'$'; then
+ port=$i
+ fi
+ ;;
+ *)
+ if port -q search --exact "$i" | grep -q '^'$i'$'; then
+ port=$i
+ fi
+ ;;
+ esac
+ fi
+ count=$((++count))
+ done
- if [ -n "$port" ]; then
+ if [ -n "$port" ]; then
# complete variants
- case $mode in
- contents|uninstall)
- # installed variants
- COMPREPLY=( $( port installed \
- | awk '/'$port'/ { print $2 }' | tr '\r' ' ' 2> /dev/null ) )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) )
- return 0
- ;;
- activate)
- # inactive variants
- COMPREPLY=( $( port installed | grep -v '(active)' \
- | awk '/'$port'/ { print $2 }' | tr '\r' ' ' 2> /dev/null ) )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) )
- return 0
- ;;
- deactivate)
- # active variants
- COMPREPLY=( $( port installed | grep '(active)' \
- | awk '/'$port'/ { print $2 }' | tr '\r' ' ' 2> /dev/null ) )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) )
- return 0
- ;;
- *)
- # all variants
- COMPREPLY=( $(port $portdiropt variants $port | tr '\r' ' ' | grep -v "has no variants") )
- COMPREPLY=( $( compgen -P'+' -W '${COMPREPLY[@]}' -- $cur ) )
- return 0
- ;;
- esac
+ case $mode in
+ contents|uninstall)
+ # installed variants
+ COMPREPLY=( $( port -q installed "$port" \
+ | awk '{print $2}' | tr '\r' ' ' 2>/dev/null ) )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) )
+ return 0
+ ;;
+ activate)
+ # inactive variants
+ COMPREPLY=( $( port -q installed "$port" | grep -v '(active)' \
+ | awk '{print $2}' | tr '\r' ' ' 2>/dev/null ) )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) )
+ return 0
+ ;;
+ deactivate)
+ # active variants
+ COMPREPLY=( $( port -q installed "$port" | grep '(active)' \
+ | awk '{print $2}' | tr '\r' ' ' 2>/dev/null ) )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) )
+ return 0
+ ;;
+ *)
+ # all variants
+ COMPREPLY=( $( port -q info --line --variants "$port" | tr '\r,' ' ' ) )
+ COMPREPLY=( $( compgen -P'+' -W '${COMPREPLY[@]}' -- $cur ) )
+ return 0
+ ;;
+ esac
- fi
+ fi
- if [ -n "$mode" ]; then
- # complete port names
- case $mode in
- uninstall|upgrade|contents)
- # installed ports
- COMPREPLY=( $( port installed \
- | sed -ne 's|^ \('$cur'[^ ]*\).*$|\1|p' | uniq ) )
- return 0
- ;;
- activate)
- # inactive ports
- COMPREPLY=( $( port installed | grep -v '(active)' \
- | sed -ne 's|^ \('$cur'[^ ]*\).*$|\1|p' | uniq ) )
- return 0
- ;;
- deactivate)
- # active ports
- COMPREPLY=( $( port installed | grep '(active)' \
- | sed -ne 's|^ \('$cur'[^ ]*\).*$|\1|p' | uniq ) )
- return 0
- ;;
- provides|portdir)
- _filedir
- return 0
- ;;
- installed|outdated|list|sync|selfupdate)
- # no port
- return 0
- ;;
- *)
- # all ports
- COMPREPLY=( $( port $portdiropt list \
- | awk '/^'$cur'/ { print $1 }' | sort 2> /dev/null ) )
- return 0
- ;;
- esac
- fi
+ if [ -n "$mode" ]; then
+ # complete port names
+ case $mode in
+ contents|installed|outdated|uninstall|upgrade)
+ # installed ports
+ COMPREPLY=( $( port -q installed "$cur*" \
+ | awk '{print $1}' | uniq ) )
+ return 0
+ ;;
+ activate)
+ # inactive ports
+ COMPREPLY=( $( port -q installed "$cur*" | grep -v '(active)' \
+ | awk '{print $1}' | uniq ) )
+ return 0
+ ;;
+ deactivate)
+ # active ports
+ COMPREPLY=( $( port -q installed "$cur*" | grep '(active)' \
+ | awk '{print $1}' | uniq ) )
+ return 0
+ ;;
+ provides|cmdfile)
+ _filedir
+ return 0
+ ;;
+ portdir)
+ _filedir -d
+ return 0
+ ;;
+ selfupdate|search|sync)
+ # no port
+ return 0
+ ;;
+ *)
+ # all ports
+ COMPREPLY=( $( port -q search --glob "$cur*" 2>/dev/null | uniq ) )
+ return 0
+ ;;
+ esac
+ fi
- COMPREPLY=( $( compgen -W '-b -c -d -f -i -k -n -o -p -q -R -s -t -u -v -x \
- activate archive build cat cd checksum clean compact configure \
- contents deactivate dependents deps destroot dir distcheck dmg \
+ COMPREPLY=( $( compgen -W '-b -c -d -f -k -n -o -p -q -R -s -t -u -v -y \
+ activate archive build cat cd checksum clean configure contents \
+ deactivate dependents deps destroot dir distcheck distfiles dmg \
dpkg echo ed edit exit extract fetch file gohome help info \
install installed lint list livecheck load location mdmg mirror \
- mpkg outdated patch pkg platform provides quit rpm search selfupdate \
- srpm submit sync test trace unarchive uncompact uninstall unload \
- upgrade url usage variants version work' -- $cur ) )
- return 0
+ mpkg notes outdated patch pkg platform portpkg provides quit \
+ rpm search select selfupdate srpm submit sync test trace unarchive \
+ uninstall unload upgrade url usage variants version work' -- $cur ) )
+ return 0
}
complete -F _port $filenames port
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20091005/0b6063e9/attachment-0001.html>
More information about the macports-changes
mailing list