aboutsummaryrefslogtreecommitdiff
path: root/zsh_completions
diff options
context:
space:
mode:
Diffstat (limited to 'zsh_completions')
-rw-r--r--zsh_completions/usbkey48
1 files changed, 48 insertions, 0 deletions
diff --git a/zsh_completions/usbkey b/zsh_completions/usbkey
new file mode 100644
index 0000000..0de1375
--- /dev/null
+++ b/zsh_completions/usbkey
@@ -0,0 +1,48 @@
+#compdef usbkey
+#autoload
+
+_usbkey_mounted() {
+ mount | grep "/media/usbkey" | grep -q "/dev/mapper/usbkey"
+}
+
+_usbkey () {
+ local cmd
+ if (( CURRENT > 2)); then
+ _usbkey_mounted || return
+ operation=${words[2]}
+ # Run the completion for the subcommand
+ case "${operation}" in
+ ssh-import)
+ [ -d "/media/usbkey/ssh" ] || return
+ local keys=()
+ for F in $(find "/media/usbkey/ssh" -name '*.pub'); do
+ F="${F#/media/usbkey/ssh/}"
+ keys+=("${F%.pub}")
+ done
+ _describe -t keys 'usbkey' keys
+ ;;
+ # TODO
+ esac
+ else
+ local operations=(
+ "mount:Mount key of usb driver"
+ "unmount:Unmount usb driver"
+ "sync:Synchronize drive to bakup drive"
+ )
+ if _usbkey_mounted; then
+ operations+=(
+ "gpg-import:Import gpg key"
+ "ssh-import:Import ssh key"
+ "ssh-generate:Generate new ssh key"
+ "ssh-list:List all keys in store"
+ "openvpn-list:List all keys"
+ "openvpn-get:Get keys for some host"
+ "openvpn-generate:Generate key for new host"
+ )
+ fi
+ _describe -t operations 'usbkey' operations
+ _arguments : "--help[Output help message]"
+ fi
+}
+
+_usbkey