c875723bef
This way it's clearer to users that an argument is expected. It's likely that this commit does not catch all such cases, but it should do it for most of the affected commands I have installed.
115 lines
2.9 KiB
Bash
115 lines
2.9 KiB
Bash
# bash completion for cryptsetup
|
|
|
|
have cryptsetup || return
|
|
|
|
_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
|
|
|
|
# Local variables:
|
|
# mode: shell-script
|
|
# sh-basic-offset: 4
|
|
# sh-indent-comment: t
|
|
# indent-tabs-mode: nil
|
|
# End:
|
|
# ex: ts=4 sw=4 et filetype=sh
|