# mfiutil completion -*- shell-script -*- [[ $OSTYPE == *@(freebsd|dragonflybsd|darwin|linux|solaris)* ]] || return 1 _comp_cmd_mfiutil() { local cur prev words cword comp_args _comp_initialize -- "$@" || return if [[ $cur == -* ]]; then # Complete global options local options="-u -d -e" case "$OSTYPE" in *freebsd*) options+=" -D -t" ;; *dragonflybsd* | *solaris*) options+=" -t" ;; esac local end_of_options= local w for w in "${words[@]:1:cword-1}"; do case "$w" in --) end_of_options=set break ;; -*) ;; *) end_of_options=set break ;; esac done if [[ ! $end_of_options ]]; then _comp_compgen -- -W '$options' return fi fi local REPLY _comp_count_args -a "-*[Dtu]" case $REPLY in 0) # Complete argument to global options case "$prev" in -D) _comp_compgen_filedir ;; -t) case "$OSTYPE" in *freebsd* | *dragonflybsd*) _comp_compgen -- -W 'mfi mrsas' ;; esac ;; esac ;; 1) _comp_compgen -- -W ' version show fail good rebuild syspd drive start abort locate cache name volume clear create delete add remove patrol stop foreign flash bbu ctrlprop' ;; 2) case "$prev" in show) _comp_compgen -- -W ' adapter battery config drives events firmware foreign logstate volumes patrol progress' ;; drive) _comp_compgen -- -W 'progress clear' ;; start) _comp_compgen -- -W 'rebuild patrol learn' ;; abort) _comp_compgen -- -W 'rebuild' ;; volume) _comp_compgen -- -W 'progress' ;; create) _comp_compgen -- -W ' jbod raid0 raid1 raid5 raid6 raid10 raid50 raid60 concat' ;; patrol) _comp_compgen -- -W 'disable auto manual' ;; stop) _comp_compgen -- -W 'patrol' ;; foreign) _comp_compgen -- -W 'scan clear diag preview import' ;; flash) _comp_compgen_filedir ;; bbu) _comp_compgen -- -W 'learn-delay autolearn-mode bbu-mode' ;; ctrlprop) _comp_compgen -- -W 'rebuild alarm' ;; esac ;; 3) case "${words[cword - 2]}.$prev" in locate.*) _comp_compgen -- -W 'on off' ;; cache.*) _comp_compgen -- -W ' enable disable reads writes write-back write-through read-ahead bad-bbu-write-cache write-cache' ;; ctrlprop.alarm) _comp_compgen -- -W 'on off 1 0' ;; esac ;; esac } && complete -F _comp_cmd_mfiutil mfiutil mrsasutil