# 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