about summary refs log tree commit diff
path: root/Completion/Solaris
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2015-05-03 16:53:47 +0200
committerOliver Kiddle <opk@zsh.org>2015-05-03 16:53:57 +0200
commitab7ec8d9851fea8230e1ccfba284c5bfaf457d88 (patch)
tree837b14c838b96728ebdb530eb20d35737ef8419b /Completion/Solaris
parentb29278c69a67089ba225a98478069eb3f32ab4e6 (diff)
downloadzsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar.gz
zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar.xz
zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.zip
35011: update completions for some common Unix commands,
in particular improving FreeBSD support
Diffstat (limited to 'Completion/Solaris')
-rw-r--r--Completion/Solaris/Command/_beadm135
-rw-r--r--Completion/Solaris/Command/_gcore31
-rw-r--r--Completion/Solaris/Command/_ps77
-rw-r--r--Completion/Solaris/Type/_be_name17
-rw-r--r--Completion/Solaris/Type/_zones8
5 files changed, 73 insertions, 195 deletions
diff --git a/Completion/Solaris/Command/_beadm b/Completion/Solaris/Command/_beadm
index 6e498bee3..8422653d8 100644
--- a/Completion/Solaris/Command/_beadm
+++ b/Completion/Solaris/Command/_beadm
@@ -1,76 +1,69 @@
 #compdef beadm
 
-_beadm() {
-	local context state line subcmds
-	typeset -A opt_args
+local cmd expl args
 
-	subcmds=( activate create destroy list mount rename unmount )
+if (( CURRENT == 2 )); then
+  _wanted subcommands expl 'subcommand' compadd \
+      activate create destroy list mount rename unmount
+  return
+fi
 
-	if [[ $service == "beadm" ]]; then
-		_arguments -C -A "-*" \
-			'*::command:->subcmd' && return 0
+cmd="$words[2]"
+curcontext="${curcontext%:*}-$cmd:"
+shift words
+(( CURRENT-- ))
 
-		if (( CURRENT == 1 )); then
-			_wanted commands expl 'beadm subcommand' compadd -a subcmds
-			return
-		fi
-		service="$words[1]"
-		curcontext="${curcontext%:*}=$service:"
-	fi
-
-	case $service in
-	(activate)
-		_arguments -A "-*" \
-			':BE name:_be_name'
-		;;
-
-	(create)
-		# TODO: Add support for -o, and for creating snapshots
-		_arguments -A "-*" \
-			'-a[Activate new BE]' \
-			'-d[Description]:' \
-			'-e[Base BE]:BE name or snapshot:_be_name -t all' \
-			'-p[Create new BE in specified ZFS pool]:ZFS pool:_zfs_pool' \
-			':new BE name:'
-		;;
-
-	(destroy)
-		_arguments -A "-*" \
-			'-f[Unmount BE if necessary]' \
-			"-F[Don't prompt for verification]" \
-			':BE or BE snapshot:_be_name'
-		;;
-
-	(list)
-		_arguments -A "-*" \
-			'-a[List subordinate filesystems and snapshots]' \
-			'-d[List subordinate filesystems]' \
-			'-s[List snapshots]' \
-			'-H[Parseable format]' \
-			':BE name:_be_name'
-		;;
-
-	(mount)
-		_arguments -A "-*" \
-			':BE name:_be_name' \
-			':mountpoint:_path_files -/'
-		;;
-
-	(rename)
-		_arguments -A "-*" \
-			':existing BE name:_be_name' \
-			':new BE name:'
-		;;
-
-	(unmount)
-		_arguments -A "-*" \
-			'-f[Force unmount]' \
-			':BE name:_be_name'
-		;;
-
-	(*)
-		_message "unknown beadm subcommand: $service"
-	esac
-}
-
-_beadm "$@"
+case $cmd in
+  activate)
+    _wanted boot-environs expl 'boot environment' _be_name
+  ;;
+  create)
+    [[ $OSTYPE = solaris* ]] && args=(
+      '-a[activate new BE]'
+      '-d[description]:description'
+      '*-o[property]:zfs property'
+      '-p[create new BE in specified zfs pool]:zfs pool:_zfs_pool'
+    )
+    _arguments -A "-*" $args \
+      '-e[base BE]:BE name or snapshot:_be_name -t all' \
+      ':new BE name:'
+  ;;
+  destroy)
+    [[ $OSTYPE = solaris* ]] && args=(
+      '-f[unmount BE if necessary]'
+    )
+    _arguments -A "-*" \
+      "-F[don't prompt for verification]" \
+      ':BE or BE snapshot:_be_name'
+  ;;
+  list)
+    if [[ $OSTYPE = solaris* ]]; then
+      args=( '-d[list subordinate filesystems]' )
+    elif [[ $OSTYPE = freebsd* ]]; then
+      args=( '-D[display space usage of boot environment]' )
+    fi
+    _arguments -A "-*" \
+      '-a[list subordinate filesystems and snapshots]' \
+      '-s[list snapshots]' \
+      '-H[parseable format]' \
+      ':boot environment:_be_name'
+  ;;
+  mount)
+    _arguments -A "-*" \
+      ':BE name:_be_name' \
+      ':mountpoint:_path_files -/'
+  ;;
+  rename)
+    _arguments -A "-*" \
+      ':existing boot environment name:_be_name' \
+      ':new boot environment:'
+  ;;
+  u(n|)mount)
+    _arguments -A "-*" \
+      '-f[force unmount]' \
+      ':boot environment:_be_name'
+  ;;
+  *)
+    _message "unknown beadm subcommand: $service"
+  ;;
+esac
diff --git a/Completion/Solaris/Command/_gcore b/Completion/Solaris/Command/_gcore
deleted file mode 100644
index d4ac9a03a..000000000
--- a/Completion/Solaris/Command/_gcore
+++ /dev/null
@@ -1,31 +0,0 @@
-#compdef gcore
-
-_gcore() {
-	local -a content
-
-	content=(
-		"anon[anonymous private mappings]"
-		"ctf[CTF type information]"
-		"data[writable private file mappings]"
-		"dism[DISM mappings]"
-		"heap[process heap]"
-		"ism[ISM mappings]"
-		"rodata[read-only private file mappings]"
-		"shanon[anonymous shared mappings]"
-		"shfile[file-backed shared mappings]"
-		"shm[System V shared memory]"
-		"stack[process stack]"
-		"symtab[symbol table sections for loaded files]"
-		"text[readable and executable private file mappings]"
-	)
-
-	_arguments -s \
-		'-p[use per-process core file repository]' \
-		'-g[use global core file repository]' \
-		'-F[force grabbing the target process]' \
-		'-c[set core file content]:_values -s + "content" $content' \
-		'-o[set core file base name]:' \
-		'*:pids:_pids'
-}
-
-_gcore "$@"
diff --git a/Completion/Solaris/Command/_ps b/Completion/Solaris/Command/_ps
deleted file mode 100644
index 5ae61832a..000000000
--- a/Completion/Solaris/Command/_ps
+++ /dev/null
@@ -1,77 +0,0 @@
-#compdef ps
-
-_ps()
-{
-	local -a o_opt
-
-o_opt=(
-	"user[user ID]"
-	"ruser[real user ID]"
-	"group[group ID]"
-	"rgroup[real group ID]"
-	"pid[process ID]"
-	"ppid[parent process ID]"
-	"pgid[process group ID]"
-	"pcpu[ratio of CPU time used recently to CPU time available]"
-	"vsz[total size of the process in virtual memory, in kilobytes]"
-	"nice[decimal value of the system scheduling priority of the process]"
-	"etime[elapsed time since the process was started]"
-	"time[cumulative CPU time of the process]"
-	"tty[name of the controlling terminal of the process]"
-	"comm[name of the command being executed]"
-	"args[command with all its arguments as a string]"
-	"f[flags associated with the process]"
-	"s[state of the process]"
-	"c[processor utilization for scheduling]"
-	"uid[effective user ID number]"
-	"ruid[real user ID number]"
-	"gid[effective group ID number]"
-	"rgid[real group ID numberu]"
-	"projid[project ID number]"
-	"project[project name]"
-	"zoneid[zone ID number]"
-	"zone[zone name]"
-	"sid[process ID of the session leader]"
-	"taskid[task ID of the process]"
-	"class[scheduling class]"
-	"pri[priority, higher number - higher priority]"
-	"opri[obsolete priority, lower number - higher priority]"
-	"lwp[lwd ID number]"
-	"nlwp[number of lwps in the process]"
-	"psr[number of the processor to which the process or lwp is bound]"
-	"pset[ID of the processor set to which the process or lwp is bound]"
-	"addr[memory address of the process]"
-	"osz[total size of the process in virtual memory, in pages]"
-	"wchan[address of an event for which the process is sleeping]"
-	"stime[starting time or date of the process]"
-	"rss[resident set size of the process, in kilobytes]"
-	"pmem[ratio of resident set size to physical memory on the machine, in %]"
-	"fname[first 8 bytes of base name of process's executable file]"
-	"ctid[contract ID number]"
-	"lgrp[home lgroup]"
-)
-_arguments \
-	'-a[information about all processes most frequently requested]' \
-	'-c[information in a format that reflects scheduler properties]' \
-	'-d[information about all processes except session leaders]' \
-	'-e[information about every process]' \
-	'-f[full listing]' \
-	'-g[only process data whose group leaders ID number(s) appears in grplist]:group leader ID list' \
-	'-G[information for processes whose real group ID numbers are in gidlist]:real group ID list' \
-	'-H[prints the home lgroup of the process]' \
-	'-j[prints session ID and process group ID]' \
-	'-l[long listing]' \
-	'-L[information about each light weight process]' \
-	'-o[specify output format]:property:_values -s , "property" $o_opt' \
-	'-p[only process data whose process ID numbers are given in proclist]:process ID list' \
-	'-P[Prints the number of the processor to which the process or lwp is bound]' \
-	'-s[information on all session leaders whose IDs appear in sidlist]:session leader ID list' \
-	'-t[lists only process data associated with term]:term' \
-	'-u[only process data whose effective user ID number or login name is given in uidlist]:UID:_users' \
-	'-U[information for processes whose real user ID numbers or login names are in uidlist]:UID:_users' \
-	'-y[both RSS and SZ is reported in kilobytes, instead pages (used with -l)]' \
-	'-z[lists only processes in the specified zones]:zone list' \
-	'-Z[prints the name of the zone with which the process is associated]'
-}
-
-_ps "$@"
diff --git a/Completion/Solaris/Type/_be_name b/Completion/Solaris/Type/_be_name
index b25a8ff22..4b80c65f2 100644
--- a/Completion/Solaris/Type/_be_name
+++ b/Completion/Solaris/Type/_be_name
@@ -1,18 +1,13 @@
 #autoload
 
-local -a type be_names
-local name uuid activate mtpt space policy created snap
+local -a type be_names expl
 
 zparseopts -D -E -a type t+:
 
-beadm list -H | while IFS=\; read name uuid active mtpt space policy created; do
-	be_names=( $be_names $name )
-done
+be_names=( ${${(f)"$(_call_program boot-environs beadm list -H)"}%%;*} )
 
-if [[ -n $type[(r)all] ]]; then
-	beadm list -sH | while IFS=\; read name snap space policy created; do
-		be_names=( $be_names $snap )
-	done
-fi
+[[ -n $type[(r)all] ]] &&
+  be_names+=( ${${${(f)"$(_call_program boot-environs beadm list -sH)"}#*;}%%;*} )
 
-compadd "$@" - $be_names
+_description boot-environs expl 'boot environment'
+compadd "$@" "$expl[@]" -a be_names
diff --git a/Completion/Solaris/Type/_zones b/Completion/Solaris/Type/_zones
index 0c2d273a2..92064d2b8 100644
--- a/Completion/Solaris/Type/_zones
+++ b/Completion/Solaris/Type/_zones
@@ -1,13 +1,11 @@
 #autoload
 
-local -a type typearg
-local zonelist
+local -a type typearg expl
 
 zparseopts -D -E -a type t+:
 
 [[ -n $type[(r)c] ]] && typearg=-c
 [[ -n $type[(r)i] ]] && typearg=-i
 
-zonelist=( ${="$(zoneadm list $typearg)"} )
-
-compadd "$@" - $zonelist
+_description zones expl zone
+compadd "$@" "$expl[@]" - ${="$(_call_program zones /usr/sbin/zoneadm list $typearg)"}