diff options
author | Oliver Kiddle <opk@zsh.org> | 2015-05-03 16:53:47 +0200 |
---|---|---|
committer | Oliver Kiddle <opk@zsh.org> | 2015-05-03 16:53:57 +0200 |
commit | ab7ec8d9851fea8230e1ccfba284c5bfaf457d88 (patch) | |
tree | 837b14c838b96728ebdb530eb20d35737ef8419b /Completion/Solaris/Command/_beadm | |
parent | b29278c69a67089ba225a98478069eb3f32ab4e6 (diff) | |
download | zsh-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/Command/_beadm')
-rw-r--r-- | Completion/Solaris/Command/_beadm | 135 |
1 files changed, 64 insertions, 71 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 |