diff options
Diffstat (limited to 'completions/mdadm')
-rw-r--r-- | completions/mdadm | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/completions/mdadm b/completions/mdadm new file mode 100644 index 0000000..37effd9 --- /dev/null +++ b/completions/mdadm @@ -0,0 +1,149 @@ +# bash completion for mdadm -*- shell-script -*- + +_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 + --config | --bitmap | --backup-file | -!(-*)[cb]) + _filedir + return + ;; + --level | -!(-*)l) + _mdadm_raid_level + return + ;; + --layout | --parity | -!(-*)p) + _mdadm_raid_layout + return + ;; + --auto | -!(-*)a) + _mdadm_auto_flag + return + ;; + --update | -!(-*)U) + _mdadm_update_flag + return + ;; + esac + + $split && return + + local options='--help --help-options --version --verbose --quiet --brief + --force --config= --scan --metadata= --homehost=' + + if [[ $cur == -* ]]; then + if ((cword == 1)); then + COMPREPLY=($(compgen -W "$options --assemble --build --create + --monitor --grow" -- "$cur")) + else + case ${words[cword - 1]} in + --assemble | -!(-*)A*) + COMPREPLY=($(compgen -W "$options --uuid= --super-minor= + --name= --force --run --no-degraded --auto= --bitmap= + --backup-file= --update= --auto-update-homehost" \ + -- "$cur")) + ;; + --build | --create | --grow | -!(-*)[BCG]*) + 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")) + ;; + --follow | --monitor | -!(-*)F) + 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 + +# ex: filetype=sh |