# smartctl(8) completion


comp_include _filedir _get_cword


_smartctl_quietmode()
{
    COMPREPLY=( $( compgen -W 'errorsonly silent' -- $cur ) )
}
_smartctl_device()
{
    COMPREPLY=( $( compgen -W 'ata scsi 3ware' -- $cur ) )
}
_smartctl_tolerance()
{
    COMPREPLY=( $( compgen -W 'warn exit ignore' -- $cur ) )
}
_smartctl_badsum()
{
    COMPREPLY=( $( compgen -W 'normal conservative permissive verypermissive' -- $cur ) )
}
_smartctl_report()
{
    COMPREPLY=( $( compgen -W 'ioctl ataioctl scsiioctl' -- $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' -- $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' -- $cur ) )
}

_smartctl()
{
    local cur prev

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    # --name value style option
    case "$prev" in
        -q)
            _smartctl_quietmode
            ;;
        -d)
            _smartctl_device
            return 0
            ;;
        -t)
            _smartctl_tolerance
            return 0
            ;;
        -b)
            _smartctl_badsum
            return 0
            ;;
        -r)
            _smartctl_report
            return 0
            ;;
        -s)
            _smartctl_feature
            return 0
            ;;
        -o)
            _smartctl_feature
            return 0
            ;;
        -S)
            _smartctl_feature
            return 0
            ;;
        -l)
            _smartctl_log
            return 0
            ;;
        -v)
            _smartctl_vendorattribute
            return 0
            ;;
        -F)
            _smartctl_firmwarebug
            return 0
            ;;
        -P)
            _smartctl_presets
            return 0
            ;;
        -t)
            _smartctl_test
            return 0
            ;;
    esac

    # --name=value style option
    if [[ "$cur" == *=* ]]; then
        prev=${cur/=*/}
        cur=${cur/*=/}
        case "$prev" in
            --quietmode)
                _smartctl_quietmode
                return 0
                ;;
            --device)
                _smartctl_device
                return 0
                ;;
            --tolerance)
                _smartctl_tolerance
                return 0
                ;;
            --badsum)
                _smartctl_badsum
                return 0
                ;;
            --report)
                _smartctl_report
                return 0
                ;;
            --smart)
                _smartctl_feature
                return 0
                ;;
            --offlineauto)
                _smartctl_feature
                return 0
                ;;
            --saveauto)
                _smartctl_feature
                return 0
                ;;
            --log)
                _smartctl_log
                return 0
                ;;
            --vendorattribute)
                _smartctl_vendorattribute
                return 0
                ;;
            --firmwarebug)
                _smartctl_firmwarebug
                return 0
                ;;
            --presets)
                _smartctl_presets
                return 0
                ;;
            --test)
                _smartctl_test
                return 0
                ;;
        esac
    fi


    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-h --help --usage -V --version \
            --copyright --license-i --info -a --all -q \
            --quietmode= -d --device= -T --tolerance= -b --badsum= \
            -r --report= -s --smart= -o --offlineauto= -S \
            --saveauto= -H --health -c --capabilities -A \
            --attributes -l --log= -v --vendorattribute= -F \
            --firmwarebug= -P --presets= -t --test= -C \
            --captive -X --abort' -- $cur ) )
    else
        cur=${cur:=/dev/}
        _filedir
    fi
} # _smartctl()


