mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			176 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef pkg_add pkg_delete pkg_info
 | |
| 
 | |
| (( $+functions[_bsd_pkg_pkgfiles] )) ||
 | |
| _bsd_pkg_pkgfiles() {
 | |
|   local ret=1 paths portsdir pkgsdir
 | |
| 
 | |
|   case $OSTYPE in
 | |
|   netbsd*)
 | |
|     portsdir=/usr/pkgsrc
 | |
|     ;;
 | |
|   *)
 | |
|     portsdir=${PORTSDIR:-/usr/ports}
 | |
|     ;;
 | |
|   esac
 | |
| 
 | |
|   pkgsdir=${PACKAGES:-$portsdir/packages}/All
 | |
| 
 | |
|   paths=( "${(@)${(@s.:.)PKG_PATH}:#}" )
 | |
|   _files "$@" -g \*.tgz && ret=0
 | |
|   (( $#path )) && _files "$@" -W paths -g \*.tgz && ret=0
 | |
|   compadd "$@" - $pkgsdir/*.tgz && ret=0
 | |
| 
 | |
|   return ret
 | |
| }
 | |
| 
 | |
| (( $+functions[_bsd_pkg_pkgs] )) ||
 | |
| _bsd_pkg_pkgs() {
 | |
|   compadd "$@" - ${PKG_DBDIR:-/var/db/pkg}/*(/:t)
 | |
| }
 | |
| 
 | |
| (( $+functions[_bsd_pkg_pkgs_and_files] )) ||
 | |
| _bsd_pkg_pkgs_and_files() {
 | |
|   local ret=1
 | |
| 
 | |
|   if (( $words[(I)-*F*] )); then
 | |
|     _files "$@" && ret=0
 | |
|   else
 | |
|     _bsd_pkg_pkgs "$@" && 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[specify prefix]:prefix directory:_files -/'
 | |
|       '-R[don'\''t record]'
 | |
|       '-S[run in slave mode]'
 | |
|       '-t[specify mktemp template]:mktemp template:_files -/'
 | |
|       '-v[be verbose]'
 | |
|     )
 | |
| 
 | |
|     case "$OSTYPE" in
 | |
|     freebsd*)
 | |
|       flags=(
 | |
|         $flags[@]
 | |
|         '-r[fetch from remote site]'
 | |
|       )
 | |
|       ;;
 | |
|     netbsd*)
 | |
|       flags=(
 | |
| 	$flags[@]
 | |
| 	'-u[update]'
 | |
| 	'-V[show version and exit]'
 | |
|       )
 | |
|       ;;
 | |
|     esac
 | |
| 
 | |
|     _arguments -s \
 | |
|       $flags[@] \
 | |
|       '*:package to install:_bsd_pkg_pkgfiles'
 | |
|     ;;
 | |
| 
 | |
|   pkg_delete)
 | |
|     flags=(
 | |
|       '-D[don'\''t execute deinstallation scripts]'
 | |
|       '-d[remove empty directories]'
 | |
|       '-f[force deinstallation]'
 | |
|       '-n[don'\''t really deinstall packages]'
 | |
|       '-p[specify prefix]:prefix directory:_files -/'
 | |
|       '-v[be verbose]'
 | |
|     )
 | |
| 
 | |
|     case "$OSTYPE" in
 | |
|     freebsd*)
 | |
|       flags=(
 | |
|         $flags[@]
 | |
| 	'(:)-a[delete all installed packages]'
 | |
|         '-G[do not expand glob patterns]'
 | |
| 	'-i[be interactive]'
 | |
|         '-r[delete recursively]'
 | |
|         '-x[use regular expression]'
 | |
|       )
 | |
|       ;;
 | |
|     netbsd*)
 | |
|       flags=(
 | |
| 	$flags[@]
 | |
| 	'(:)-a[delete 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_pkgs_and_files'
 | |
|     ;;
 | |
| 
 | |
|   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:_bsd_pkg_pkgs'
 | |
|       '-f[show packing list instructions]'
 | |
|       '-I[show index lines]'
 | |
|       '-i[show install scripts]'
 | |
|       '-k[show deinstall scripts]'
 | |
|       '-L[show full pathnames of files]'
 | |
|       '-l[specify prefix string]:prefix string:'
 | |
|       '-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[specify mktemp template]:mktemp template:_files -/'
 | |
| 	'*-W[show which package the file belongs to]:file:_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_pkgs_and_files'
 | |
|     ;;
 | |
|   esac
 | |
| }
 | |
| 
 | |
| _bsd_pkg "$@"
 |