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.
160 lines
4.5 KiB
Bash
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
|