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

160 lines
4.5 KiB
Bash

# bash completion for mdadm
have mdadm || return
_mdadm_raid_level()
{
local mode
for (( i=1; i < cword; i++ )); do
case ${words[i]} in
-C|--create)
mode=create
break
;;
-B|--build)
mode=build
break
;;
esac
done
case $mode in
create)
COMPREPLY=( $( compgen -W 'linear raid0 0 stripe raid1 1 mirror \
raid4 4 raid5 5 raid6 6 raid10 10 multipath mp faulty' \
-- "$cur" ) )
;;
build)
COMPREPLY=( $( compgen -W 'linear stripe raid0 0 raid1 multipath \
mp faulty' -- "$cur" ) )
;;
esac
}
_mdadm_raid_layout()
{
local level
for (( i=1; i < cword; i++ )); do
if [[ "${words[i]}" == -@(l|-level) ]]; then
level=${words[i+1]}
break
fi
done
case $level in
raid5)
COMPREPLY=( $( compgen -W 'left-asymmetric left-symmetric \
right-asymmetric right-symmetric la ra ls rs' -- "$cur" ) )
;;
raid10)
COMPREPLY=( $( compgen -W 'n o p' -- "$cur" ) )
;;
faulty)
COMPREPLY=( $( compgen -W 'write-transient wt read-transient rt \
write-persistent wp read-persistent rp write-all read-fixable \
rf clear flush none' -- $cur ) )
;;
esac
}
_mdadm_auto_flag()
{
COMPREPLY=( $( compgen -W 'no yes md mdp part p' -- "$cur" ) )
}
_mdadm_update_flag()
{
COMPREPLY=( $( compgen -W 'sparc2.2 summaries uuid name homehost resync \
byteorder super-minor' -- "$cur" ) )
}
_mdadm()
{
local cur prev words cword split
_init_completion -s || return
case $prev in
-c|--config|-b|--bitmap|--backup-file)
_filedir
return 0
;;
-l|--level)
_mdadm_raid_level
return 0
;;
-p|--layout|--parity)
_mdadm_raid_layout
return 0
;;
-a|--auto)
_mdadm_auto_flag
return 0
;;
-U|--update)
_mdadm_update_flag
return 0
;;
esac
$split && return 0
local options
options='--help --help-options --version --verbose --quiet \
--brief --force --config= --scan --metadata= --homehost='
if [[ "$cur" == -* ]]; then
if [[ $cword -eq 1 ]] ; then
COMPREPLY=( $( compgen -W "$options --assemble --build \
--create --monitor --grow" -- "$cur" ) )
else
case ${words[cword-1]} in
-A|--assemble)
COMPREPLY=( $( compgen -W "$options --uuid= \
--super-minor= --name= --force --run \
--no-degraded --auto= --bitmap= --backup-file= \
--update= --auto-update-homehost" -- "$cur" ) )
;;
-B|-C|-G|--build|--create|--grow)
COMPREPLY=( $( compgen -W "$options --raid-devices= \
--spare-devices= --size= --chunk= --rounding= \
--level= --layout= --parity= --bitmap= \
--bitmap-chunk= --write-mostly --write-behind= \
--assume-clean --backup-file= --name= --run \
--force --auto=" -- "$cur" ) )
;;
-F|--follow|--monitor)
COMPREPLY=( $( compgen -W "$options --mail --program \
--alert --syslog --delay --daemonise \
--pid-file --oneshot --test" -- "$cur" ) )
;;
/dev/*|--add|--fail|--remove)
COMPREPLY=( $( compgen -W "$options --add --re-add \
--remove --fail --set-faulty" -- "$cur" ) )
;;
*)
COMPREPLY=( $( compgen -W "$options --query --detail \
--examine --sparc2.2 --examine-bitmap --run \
--stop --readonly --readwrite \
--zero-superblock --test" -- "$cur" ) )
;;
esac
fi
[[ $COMPREPLY == *= ]] && compopt -o nospace
else
cur=${cur:=/dev/}
_filedir
fi
} &&
complete -F _mdadm mdadm
# 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