diff options
author | Bart Schaefer <barts@users.sourceforge.net> | 2001-09-16 17:14:34 +0000 |
---|---|---|
committer | Bart Schaefer <barts@users.sourceforge.net> | 2001-09-16 17:14:34 +0000 |
commit | 4137bfe57fdb5f4c94c5e71b9acb10f3f160e60b (patch) | |
tree | fad3e8905e01cda951cd2bd1c479bc8654215787 | |
parent | 17f350181c3011181004dc19fcd4920019acefb8 (diff) | |
download | zsh-4137bfe57fdb5f4c94c5e71b9acb10f3f160e60b.tar.gz zsh-4137bfe57fdb5f4c94c5e71b9acb10f3f160e60b.tar.xz zsh-4137bfe57fdb5f4c94c5e71b9acb10f3f160e60b.zip |
Akinori MUSHA: Improved BSD package completion.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Completion/BSD/Command/_bsd_pkg | 168 |
2 files changed, 173 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index b0a94c8c3..ed881e7b5 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-12 Oliver Kiddle <opk@zsh.org> * 15792: Doc/Zsh/manual.yo, Doc/Zsh/metafaq.yo: update url diff --git a/Completion/BSD/Command/_bsd_pkg b/Completion/BSD/Command/_bsd_pkg new file mode 100644 index 000000000..26c722886 --- /dev/null +++ b/Completion/BSD/Command/_bsd_pkg @@ -0,0 +1,168 @@ +#compdef pkg_add pkg_delete pkg_info + +(( $+functions[_bsd_pkg_packages] )) || +_bsd_pkg_packages() { + 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 "$@" - $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 \ + $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 \ + $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 \ + $flags[@] \ + '(-a)*:package name:_bsd_pkg_or_file' + ;; + esac +} + +_bsd_pkg "$@" |