about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Completion/BSD/Command/_signify31
-rw-r--r--Completion/BSD/Command/_vmctl79
3 files changed, 114 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 2e44a1102..db3b564f3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2018-04-07  Oliver Kiddle  <okiddle@yahoo.co.uk>
 
+	* Matthew Martin: 42604: Completion/BSD/Command/_signify,
+	Completion/BSD/Command/_vmctl: new completions for OpenBSD's
+	signify and vmctl
+
 	* github #24: Klas Mellbourn: Completion/X/Command/_code:
 	Add completion script for Visual Studio Code
 
diff --git a/Completion/BSD/Command/_signify b/Completion/BSD/Command/_signify
new file mode 100644
index 000000000..26571aa2a
--- /dev/null
+++ b/Completion/BSD/Command/_signify
@@ -0,0 +1,31 @@
+#compdef signify
+
+_arguments -s -S -A "-*" : \
+  - checksum \
+  '-C[verify a signed checksum list and the checksum for each file]' \
+  '-p[public key]:public key:_files' \
+  '-q[quiet mode]' \
+  '-x[signature file]:signature file:_files' \
+  '*:file:_files' \
+  - generate \
+  '-G[generate a new key pair]' \
+  '-c[specify comment]:comment:' \
+  '-n[do not ask for passphrase]' \
+  '-p[public key]:public key:_files' \
+  '-s[secret key]:secret key:_files' \
+  - sign \
+  '-S[sign a message and create a signature]' \
+  '-e[embed the message after the signature]' \
+  '-m[file containing message]:message file:_files' \
+  '-s[secret key]:secret key:_files' \
+  '-x[signature file]:signature file:_files' \
+  '-z[embed signature in gzip header]' \
+  - verify \
+  '-V[verify the message and signature match]' \
+  '-e[extract the message from the signature]' \
+  '-m[file containing message to verify or destination to extract]:message file:_files' \
+  '-p[public key]:public key:_files' \
+  '-q[quiet mode]' \
+  '-t[restrict verification to specified key type]:key type:((base\:"base sets" fw\:firmware pkg\:packages syspatch\:syspatches))' \
+  '-x[signature file]:signature file:_files' \
+  '-z[verify signature in gzip header]'
diff --git a/Completion/BSD/Command/_vmctl b/Completion/BSD/Command/_vmctl
new file mode 100644
index 000000000..4e66c2383
--- /dev/null
+++ b/Completion/BSD/Command/_vmctl
@@ -0,0 +1,79 @@
+#compdef vmctl
+
+local context line state state_descr
+local -a subcommands vmctl_status
+local -A opt_args
+
+_vm_name() {
+  compadd "$@" - ${${${(@f)"$(_call_program vmctl_status vmctl status)"}[2,-1]}##* }
+}
+
+_vm_switch() {
+  [[ -r /etc/vm.conf ]] &&
+  compadd "$@" - ${${${(M)${(f)"$(</etc/vm.conf)"}:#switch *}##switch ##\"#}%%\"# *}
+}
+
+subcommands=(
+  console:'connect to the console of the VM'
+  create:'create a VM disk image'
+  load:'load additional configuration'
+  log:'change logging verbosity'
+  pause:'pause a VM'
+  receive:'receive a VM from stdin'
+  reload:'remove stopped VMs and reload config'
+  reset:'reset specified component'
+  send:'send VM to stdout and terminate it'
+  {show,status}:'list VMs running or just the specified id'
+  start:'start a VM'
+  stop:'stop a VM'
+  unpause:'unpause a VM'
+)
+
+if (( CURRENT == 2 )); then
+  _describe subcommand subcommands
+else
+  shift words; (( CURRENT-- ))
+  case $words[1] in
+    console|pause|send|show|status|stop|unpause)
+      _arguments ':id:_vm_name'
+      ;;
+    create)
+      _arguments \
+        ':path:_files' \
+        ': :(-s)' \
+        ':disk size in megabytes: '
+      ;;
+    load)
+      _arguments ':configuration file:_files'
+      ;;
+    log)
+      _arguments ':logging verbosity:(brief verbose)'
+      ;;
+    receive)
+      _arguments ':name: '
+      ;;
+    reset)
+      _arguments ':reset option:((
+        all\:"reset the running state"
+        switches\:"reset the configured switches"
+        vms\:"reset and terminate all VMs"
+      ))'
+      ;;
+    start)
+      if (( CURRENT == 2 )); then
+        _vm_name
+      else
+        shift words; (( CURRENT-- ))
+        _arguments -s \
+          '-b+[boot with the specified kernel or BIOS image]:boot image:_files' \
+          '-c[automatically connect to the VM console]' \
+          '*-d+[disk image file]:disk image:_files' \
+          '-i+[number of network interfaces]:number: ' \
+          '-L[add a local network interface]' \
+          '-m+[memory size in megabytes]:megabytes: ' \
+          '-n+[specify switch to attach]:switch:_vm_switch' \
+	  '-r+[ISO image file for virtual CD-ROM]:ISO image:_files'
+      fi
+      ;;
+  esac
+fi