# 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) 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