diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Completion/BSD/Command/_bsd_pkg | 178 |
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 } |