# 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 --key-file|--master-key-file|--header-backup-file|-d) _filedir return 0 ;; 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 'create remove status resize luksFormat luksOpen luksClose luksSuspend luksResume luksAddKey luksRemoveKey luksKillSlot luksDelKey luksUUID isLuks luksDump luksHeaderBackup luksHeaderRestore' -- "$cur" ) ) fi else local args _count_args case $arg in create) case $args in 2) _cryptsetup_name ;; 3) _cryptsetup_device ;; esac ;; remove|status|resize|luksClose|luksSuspend|luksResume) case $args in 2) _cryptsetup_name ;; esac ;; luksFormat|luksAddKey|luksRemoveKey) case $args in 2) _cryptsetup_device ;; 3) _filedir ;; esac ;; luksOpen) case $args in 2) _cryptsetup_device ;; 3) _cryptsetup_name ;; 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 return 0 } && complete -F _cryptsetup cryptsetup # ex: ts=4 sw=4 et filetype=sh