summaryrefslogtreecommitdiffstats
path: root/completions/cryptsetup
diff options
context:
space:
mode:
Diffstat (limited to 'completions/cryptsetup')
-rw-r--r--completions/cryptsetup103
1 files changed, 103 insertions, 0 deletions
diff --git a/completions/cryptsetup b/completions/cryptsetup
new file mode 100644
index 0000000..e73e165
--- /dev/null
+++ b/completions/cryptsetup
@@ -0,0 +1,103 @@
+# bash completion for cryptsetup -*- shell-script -*-
+
+_cryptsetup_name()
+{
+ COMPREPLY=($(compgen -X control -W '$(command ls /dev/mapper)' -- "$cur"))
+}
+
+_cryptsetup_device()
+{
+ cur=${cur:=/dev/}
+ _filedir
+}
+
+_cryptsetup()
+{
+ local cur prev words cword split
+ _init_completion -s || return
+
+ case $prev in
+ --help | --version | --cipher | --hash | --*-size | --key-slot | --size | --offset | \
+ --skip | --iter-time | --timeout | --tries | -!(-*)[chslSbopitT])
+ return
+ ;;
+ --key-file | --master-key-file | --header-backup-file | -!(-*)d)
+ _filedir
+ return
+ ;;
+ --type | -!(-*)M)
+ COMPREPLY=($(compgen -W "luks plain loopaes tcrypt" -- "$cur"))
+ return
+ ;;
+ esac
+
+ $split && return
+
+ local arg
+ _get_first_arg
+ if [[ -z $arg ]]; then
+ if [[ $cur == -* ]]; then
+ COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
+ [[ ${COMPREPLY-} == *= ]] && compopt -o nospace
+ else
+ COMPREPLY=($(compgen -W 'open close resize status benchmark
+ repair erase luksFormat luksAddKey luksRemoveKey luksChangeKey
+ luksKillSlot luksUUID isLuks luksDump tcryptDump luksSuspend
+ luksResume luksHeaderBackup luksHeaderRestore' -- "$cur"))
+ fi
+ else
+ local args
+ _count_args "" "-!(-*)[chslSbopitTdM]"
+ case $arg in
+ open | create | luksOpen | loopaesOpen | tcryptOpen)
+ case $args in
+ 2)
+ _cryptsetup_device
+ ;;
+ 3)
+ _cryptsetup_name
+ ;;
+ esac
+ ;;
+ close | remove | luksClose | loopaesClose | tcryptClose | status | resize | \
+ luksSuspend | luksResume)
+ case $args in
+ 2)
+ _cryptsetup_name
+ ;;
+ esac
+ ;;
+ luksFormat | luksAddKey | luksRemoveKey | luksChangeKey)
+ case $args in
+ 2)
+ _cryptsetup_device
+ ;;
+ 3)
+ _filedir
+ ;;
+ esac
+ ;;
+ luksKillSlot | luksDelKey | luksUUID | isLuks | luksDump)
+ case $args in
+ 2)
+ _cryptsetup_device
+ ;;
+ esac
+ ;;
+ luksHeaderBackup | luksHeaderRestore)
+ case $args in
+ 2)
+ _cryptsetup_device
+ ;;
+ 3)
+ COMPREPLY=('--header-backup-file')
+ ;;
+ esac
+ ;;
+ esac
+ fi
+
+} &&
+ complete -F _cryptsetup cryptsetup
+
+# ex: filetype=sh