summaryrefslogtreecommitdiffstats
path: root/completions/mdadm
diff options
context:
space:
mode:
Diffstat (limited to 'completions/mdadm')
-rw-r--r--completions/mdadm149
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