summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2001-09-16 17:14:17 +0000
committerBart Schaefer <barts@users.sourceforge.net>2001-09-16 17:14:17 +0000
commit63708beb77387c546804e1ab3cc9e4dd007f4a6f (patch)
treebc06027284b49bd4ab1b303fb5e5ebef5380b12b
parentd4e869d1009ffe97b13c28c74c736d6072dcf019 (diff)
downloadzsh-63708beb77387c546804e1ab3cc9e4dd007f4a6f.tar.gz
zsh-63708beb77387c546804e1ab3cc9e4dd007f4a6f.zip
Akinori MUSHA: Improved BSD package completion.
-rw-r--r--ChangeLog5
-rw-r--r--Completion/BSD/Command/_bsd_pkg178
2 files changed, 144 insertions, 39 deletions
diff --git a/ChangeLog b/ChangeLog
index 4d775d86e..72a8aa4e6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2001-09-16 Bart Schaefer <schaefer@zsh.org>
+
+ * Akinori MUSHA: 15815: Completion/BSD/Command/_bsd_pkg: More
+ detailed completion of package options on different BSD flavors.
+
2001-09-15 Bart Schaefer <schaefer@zsh.org>
* 15812: Doc/Makefile.in, Doc/Zsh/zle.yo: Include mod_tcp.yo in
diff --git a/Completion/BSD/Command/_bsd_pkg b/Completion/BSD/Command/_bsd_pkg
index 5089bc1a3..26c722886 100644
--- a/Completion/BSD/Command/_bsd_pkg
+++ b/Completion/BSD/Command/_bsd_pkg
@@ -2,65 +2,165 @@
(( $+functions[_bsd_pkg_packages] )) ||
_bsd_pkg_packages() {
- local ret=1 paths
+ local ret=1 paths portsdir
+
+ case $OSTYPE in
+ netbsd*)
+ portsdir=/usr/pkg
+ ;;
+ *)
+ portsdir=${PORTSDIR:-/usr/ports}
+ ;;
+ esac
paths=( "${(@)${(@s.:.)PKG_PATH}:#}" )
_files "$@" -g \*.tgz && ret=0
(( $#path )) && _files "$@" -W paths -g \*.tgz && ret=0
- compadd "$@" - /usr/ports/packages/All/*.tgz && ret=0
+ compadd "$@" - $portsdir/packages/All/*.tgz && ret=0
+
+ return ret
+}
+
+(( $+functions[_bsd_pkg_or_file] )) ||
+_bsd_pkg_or_file() {
+ local ret=1
+
+ if (( $words[(I)-*F*] )); then
+ _files "$@" && ret=0
+ else
+ compadd "$@" - ${PKGDBDIR:-/var/db/pkg}/*(/:t) && ret=0
+ fi
return ret
}
_bsd_pkg() {
+ local flags
+
case "$service" in
pkg_add)
+ flags=(
+ '-f[force installation]'
+ '-I[don'\''t execute installation scripts]'
+ '-M[run in master mode]'
+ '-n[don'\''t really install packages]'
+ '-p:prefix directory:_files -/'
+ '-R[don'\''t record]'
+ '-S[run in slave mode]'
+ '-t:mktemp template:_files -/'
+ '-v[be verbose]'
+ )
+
+ case "$OSTYPE" in
+ freebsd*)
+ flags=(
+ $flags[@]
+ '-r[use remote fetching]'
+ )
+ ;;
+ netbsd*)
+ flags=(
+ $flags[@]
+ '-u[update]'
+ '-V[show version and exit]'
+ )
+ ;;
+ esac
+
_arguments -s \
- '-v[be verbose]' \
- '-I[don'\''t execute installation scripts]' \
- '-n[don'\''t really install packages]' \
- '-R[don'\''t record]' \
- '-r[use remote fetching]' \
- '-f[force installation]' \
- '-M[run in master mode]' \
- '-S[run in slave mode]' \
- '-t:mktemp template:_files -/' \
- '-p:prefix directory:_files -/' \
- '*:package to install:_bsd_pkg_packages'
+ $flags[@] \
+ '*:package to install:_bsd_pkg_packages'
;;
pkg_delete)
+ flags=(
+ '-D[don'\''t execute deinstallation scripts]'
+ '-d[remove empty directories]'
+ '-f[force deinstallation]'
+ '-n[don'\''t really deinstall packages]'
+ '-p:prefix directory:_files -/'
+ '-v[be verbose]'
+ )
+
+ case "$OSTYPE" in
+ freebsd*)
+ flags=(
+ $flags[@]
+ '(:)-a[show all installed packages]'
+ '-G[do not expand glob patterns]'
+ '-i[be interactive]'
+ '-x[use regular expression]'
+ )
+ ;;
+ netbsd*)
+ flags=(
+ $flags[@]
+ '(:)-a[show all installed packages]'
+ '-F[specify each package by an installed file]'
+ '-i[be interactive]'
+ '-O[only delete the package'\''s entries]'
+ '-R[delete upward recursively]'
+ '-r[delete recursively]'
+ '-V[show version and exit]'
+ )
+ ;;
+ esac
+
_arguments -s \
- '-v[be verbose]' \
- '-D[don'\''t execute deinstallation scripts]' \
- '-n[don'\''t really deinstall packages]' \
- '-d[remove empty directories]' \
- '-f[force deinstallation]' \
- '-p:prefix directory:_files -/' \
- '*:package to deinstall:compadd - /var/db/pkg/*(\:t)'
+ $flags[@] \
+ '(-a)*:package name:_bsd_pkg_or_file'
;;
pkg_info)
+ flags=(
+ '(:)-a[show all installed packages]'
+ '-c[show comment fields]'
+ '-D[show install-message files]'
+ '-d[show long descriptions]'
+ '-e[test if package is installed]:package name:compadd - ${PKG_DBDIR:-/var/db/pkg}/*(\:t)'
+ '-f[show packing list instructions]'
+ '-I[show index lines]'
+ '-i[show install scripts]'
+ '-k[show deinstall scripts]'
+ '-L[show full pathnames of files]'
+ '-l:prefix directory:_files -/'
+ '-m[show mtree files]'
+ '-p[show installation prefixes]'
+ '-q[be quiet]'
+ '-R[show list list of installed requiring packages]'
+ '-r[show requirements scripts]'
+ '-v[be verbose]'
+ )
+
+ case "$OSTYPE" in
+ freebsd*)
+ flags=(
+ $flags[@]
+ '-G[do not expand glob patterns]'
+ '-g[show files that'\''s modified]'
+ '-o[show origin]'
+ '-s[show total size occupied by each package]'
+ '-t:mktemp template:_files -/'
+ '*-W:show which package the file belongs to:_files'
+ '-x[use regular expression]'
+ )
+ ;;
+ netbsd*)
+ flags=(
+ $flags[@]
+ '-B[show build information]'
+ '-b[show RCS Id strings]'
+ '-F[specify each package by an installed file]'
+ '-S[show total size occupied by each package and its dependents]'
+ '-s[show total size occupied by each package]'
+ '-V[show version and exit]'
+ )
+ ;;
+ esac
+
_arguments -s \
- '(:)-a[show all installed packages]' \
- '-v[be verbose]' \
- '-p[show installation prefixes]' \
- '-q[be quiet]' \
- '-c[show comment fields]' \
- '-d[show long descriptions]' \
- '-D[show install-message files]' \
- '-f[show packing list instructions]' \
- '-i[show install scripts]' \
- '-I[show index lines]' \
- '-k[show deinstall scripts]' \
- '-r[show requirements scripts]' \
- '-R[show list list of installed requiring packages]' \
- '-m[show mtree files]' \
- '-L[show full pathnames of files]' \
- '-e[test if package is installed]:package name:compadd - /var/db/pkg/*(\:t)' \
- '-l:prefix directory:_files -/' \
- '-t:mktemp template:_files -/' \
- '(-a)*:package name:compadd - /var/db/pkg/*(\:t)'
+ $flags[@] \
+ '(-a)*:package name:_bsd_pkg_or_file'
;;
esac
}