# bash completion for cryptsetup -*- shell-script -*- proc _cryptsetup_name { setvar COMPREPLY = ''( $( compgen -X control -W '$( command ls /dev/mapper )' \ -- "$cur" ) ) } proc _cryptsetup_device { setvar cur = ${cur:=/dev/} _filedir } proc _cryptsetup { local cur prev words cword split _init_completion -s || return case (prev) { --key-file|--master-key-file|--header-backup-file|-d { _filedir return 0 } } $split && return local arg _get_first_arg if [[ -z $arg ]] { if [[ "$cur" == -* ]] { setvar COMPREPLY = ''( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace } else { setvar COMPREPLY = ''( $( compgen -W 'create remove status resize luksFormat luksOpen luksClose luksSuspend luksResume luksAddKey luksRemoveKey luksKillSlot luksDelKey luksUUID isLuks luksDump luksHeaderBackup luksHeaderRestore' -- "$cur" ) ) } } else { local args _count_args case (arg) { create { case (args) { 2 { _cryptsetup_name } 3 { _cryptsetup_device } } } remove|status|resize|luksClose|luksSuspend|luksResume { case (args) { 2 { _cryptsetup_name } } } luksFormat|luksAddKey|luksRemoveKey { case (args) { 2 { _cryptsetup_device } 3 { _filedir } } } luksOpen { case (args) { 2 { _cryptsetup_device } 3 { _cryptsetup_name } } } luksKillSlot|luksDelKey|luksUUID|isLuks|luksDump { case (args) { 2 { _cryptsetup_device } } } luksHeaderBackup|luksHeaderRestore { case (args) { 2 { _cryptsetup_device } 3 { setvar COMPREPLY = ''( '--header-backup-file' ) } } } } } return 0 } && complete -F _cryptsetup cryptsetup # ex: ts=4 sw=4 et filetype=sh