Ville Skyttä c875723bef Include trailing equals sign in options that take arguments that way.
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.
2011-05-02 11:45:55 +03:00

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