summaryrefslogtreecommitdiff
path: root/completions/smartctl
diff options
context:
space:
mode:
Diffstat (limited to 'completions/smartctl')
-rw-r--r--completions/smartctl146
1 files changed, 146 insertions, 0 deletions
diff --git a/completions/smartctl b/completions/smartctl
new file mode 100644
index 00000000..74e42816
--- /dev/null
+++ b/completions/smartctl
@@ -0,0 +1,146 @@
+# bash completion for smartctl(8)
+
+have smartctl &&
+{
+_smartctl_quietmode()
+{
+ COMPREPLY=( $( compgen -W 'errorsonly silent noserial' -- "$cur" ) )
+}
+_smartctl_device()
+{
+ local i opts='ata scsi sat marvell hpt cciss'
+ for (( i=0; i <= 31; i++ )) ; do
+ opts="$opts 3ware,$i"
+ done
+ COMPREPLY=( $( compgen -W "$opts" -- "$cur" ) )
+}
+_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' -- "$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()
+{
+ COMPREPLY=( $( compgen -W 'offline short long conveyance select \
+ afterselect,on afterselect,off pending scttempint' -- "$cur" ) )
+}
+
+
+_smartctl()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ 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
+ ;;
+ -t|--test)
+ _smartctl_test
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --version --info --all --quietmode \
+ --device --tolerance --badsum --report --nocheck --smart \
+ --offlineauto --saveauto --health --capabilities --attributes \
+ --log --vendorattribute --firmwarebug --presets --test --captive \
+ --abort' -- "$cur" ) )
+ 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