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.
177 lines
4.6 KiB
Bash
177 lines
4.6 KiB
Bash
# bash completion for smartctl(8)
|
|
|
|
have smartctl || return
|
|
|
|
_smartctl_quietmode()
|
|
{
|
|
COMPREPLY=( $( compgen -W 'errorsonly silent noserial' -- "$cur" ) )
|
|
}
|
|
_smartctl_device()
|
|
{
|
|
case $cur in
|
|
areca*|3ware*|megaraid*|cciss*)
|
|
COMPREPLY+=( ${cur%%,*},{0..31} )
|
|
COMPREPLY=( $( compgen -W '"${COMPREPLY[@]}"' -- "$cur" ) )
|
|
;;
|
|
hpt*)
|
|
COMPREPLY+=( hpt,{1..4}/{1..8} hpt,{1..4}/{1..8}/{1..5} )
|
|
COMPREPLY=( $( compgen -W '"${COMPREPLY[@]}"' -- "$cur" ) )
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W "ata scsi sat usbcypress usbjmicron
|
|
usbsunplus marvell areca 3ware hpt megaraid cciss auto test" \
|
|
-- "$cur" ) )
|
|
case "${COMPREPLY[@]}" in
|
|
areca|3ware|hpt|megaraid|cciss)
|
|
compopt -o nospace
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
}
|
|
_smartctl_tolerance()
|
|
{
|
|
COMPREPLY=( $( compgen -W 'normal conservative permissive \
|
|
verypermissive' -- "$cur" ) )
|
|
}
|
|
_smartctl_badsum()
|
|
{
|
|
COMPREPLY=( $( compgen -W 'warn exit ignore' -- "$cur" ) )
|
|
}
|
|
_smartctl_report()
|
|
{
|
|
COMPREPLY=( $( compgen -W 'ioctl ataioctl scsiioctl' -- "$cur" ) )
|
|
}
|
|
_smartctl_powermode()
|
|
{
|
|
COMPREPLY=( $( compgen -W 'never sleep standby idle' -- "$cur" ) )
|
|
}
|
|
_smartctl_feature()
|
|
{
|
|
COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) )
|
|
}
|
|
_smartctl_log()
|
|
{
|
|
COMPREPLY=( $( compgen -W 'error selftest selective directory background
|
|
sasphy sasphy,reset sataphy sataphy,reset scttemp scttempsts
|
|
scttemphist scterc gplog smartlog xerror xselftest' -- "$cur" ) )
|
|
}
|
|
_smartctl_vendorattribute()
|
|
{
|
|
COMPREPLY=( $( compgen -W 'help 9,minutes 9,seconds 9,halfminutes \
|
|
9,temp 192,emergencyretractcyclect 193,loadunload \
|
|
194,10xCelsius 194,unknown 198,offlinescanuncsectorct \
|
|
200,writeerrorcount 201,detectedtacount 220,temp' -- "$cur" ) )
|
|
}
|
|
_smartctl_firmwarebug()
|
|
{
|
|
COMPREPLY=( $( compgen -W 'none samsung samsung2 samsung3 swapid' \
|
|
-- "$cur" ) )
|
|
}
|
|
_smartctl_presets()
|
|
{
|
|
COMPREPLY=( $( compgen -W 'use ignore show showall' -- "$cur" ) )
|
|
}
|
|
_smartctl_test()
|
|
{
|
|
[[ $cur == @(pending|scttempint|vendor), ]] && return 0
|
|
COMPREPLY=( $( compgen -W 'offline short long conveyance select,
|
|
select,redo select,next afterselect,on afterselect,off pending,
|
|
scttempint, vendor,' -- "$cur" ) )
|
|
[[ $COMPREPLY == *, ]] && compopt -o nospace
|
|
}
|
|
_smartctl_drivedb()
|
|
{
|
|
local prefix=
|
|
if [[ $cur == +* ]] ; then
|
|
prefix=+
|
|
cur="${cur#+}"
|
|
fi
|
|
_filedir h
|
|
[[ -n $prefix ]] && COMPREPLY=( "${COMPREPLY[@]/#/$prefix}" )
|
|
}
|
|
|
|
_smartctl()
|
|
{
|
|
local cur prev words cword split
|
|
_init_completion -s || return
|
|
|
|
case $prev in
|
|
-q|--quietmode)
|
|
_smartctl_quietmode
|
|
;;
|
|
-d|--device)
|
|
_smartctl_device
|
|
return 0
|
|
;;
|
|
-T|--tolerance)
|
|
_smartctl_tolerance
|
|
return 0
|
|
;;
|
|
-b|--badsum)
|
|
_smartctl_badsum
|
|
return 0
|
|
;;
|
|
-r|--report)
|
|
_smartctl_report
|
|
return 0
|
|
;;
|
|
-n|--nocheck)
|
|
_smartctl_powermode
|
|
return 0
|
|
;;
|
|
-s|--smart|-o|--offlineauto|-S|--saveauto)
|
|
_smartctl_feature
|
|
return 0
|
|
;;
|
|
-l|--log)
|
|
_smartctl_log
|
|
return 0
|
|
;;
|
|
-v|--vendorattribute)
|
|
_smartctl_vendorattribute
|
|
return 0
|
|
;;
|
|
-F|--firmwarebug)
|
|
_smartctl_firmwarebug
|
|
return 0
|
|
;;
|
|
-P|--presets)
|
|
_smartctl_presets
|
|
return 0
|
|
;;
|
|
-B|--drivedb)
|
|
_smartctl_drivedb
|
|
return 0
|
|
;;
|
|
-t|--test)
|
|
_smartctl_test
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
$split && return 0
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
COMPREPLY=( $( compgen -W '--help --version --info --all --xall
|
|
--scan --scan-open --quietmode= --device= --tolerance= --badsum=
|
|
--report= --nocheck= --smart= --offlineauto= --saveauto= --health
|
|
--capabilities --attributes --log= --vendorattribute=
|
|
--firmwarebug= --presets= --drivedb= --test= --captive --abort' \
|
|
-- "$cur" ) )
|
|
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
|
else
|
|
cur=${cur:=/dev/}
|
|
_filedir
|
|
fi
|
|
} &&
|
|
complete -F _smartctl smartctl
|
|
|
|
# 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
|