# bash completion for Slackware Linux pkgtools

[ -f /etc/slackware-version ] &&
{

have pkgtool &&
_pkgtool()
{
    COMPREPLY=()
    local cur="${COMP_WORDS[COMP_CWORD]}"
    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--sets --ignore-tagfiles --tagfile \
            --source-mounted --source_dir --target_dir --source_device' \
            -- "$cur" ) )
        return 0
    fi

    local prev=${COMP_WORDS[COMP_CWORD-1]}

    case $prev in
        --source_dir|--target_dir)
            _filedir -d
            return 0
            ;;
        --sets)
            # argument required but no completions available
            return 0
            ;;
        --source_device)
            COMPREPLY=( $( compgen -f -d -- "${cur:-/dev/}" ) )
            return 0
            ;;
        --tagfile)
            _filedir
            return 0
            ;;
    esac
} &&
complete -F _pkgtool pkgtool

have removepkg &&
_removepkg()
{
    COMPREPLY=()
    local cur=`_get_cword`
    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-copy -keep -preserve -warn' \
            -- "$cur" ) )
        return 0
    fi

    COMPREPLY=( $( cd /var/log/packages; compgen -f -- "$cur" ) )
} &&
complete -F _removepkg removepkg

have upgradepkg &&
_upgradepkg()
{
    COMPREPLY=()
    local cur=`_get_cword`
    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--dry-run --install-new --reinstall \
            --verbose' -- "$cur") )
        return 0
    fi

    _filedir "t[bglx]z"
} && complete -F _upgradepkg upgradepkg

have installpkg &&
_installpkg()
{
    COMPREPLY=()
    local cur=`_get_cword`
    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--warn --md5sum --root --infobox --terse \
            --menu --ask --priority --tagfile' -- "$cur") )
        return 0
    fi

    local prev=`_get_pword`

    case $prev in
        --root)
            _filedir -d
            return 0
            ;;
        --priority)
            COMPREPLY=( $( compgen -W 'ADD REC OPT SKP' -- "$cur" ) )
            return 0
            ;;
        --tagfile)
            _filedir
            return 0
            ;;
    esac

    _filedir "t[bglx]z"
} && complete -F _installpkg installpkg

have makepkg &&
_makepkg()
{
    COMPREPLY=()
    local cur=`_get_cword`
    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-l --linkadd -p --prepend \
            -c --chown' -- "$cur") )
        return 0
    fi

    local prev=`_get_pword`

    case $prev in
        -l|--linkadd|-c|--chown)
            COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) )
            return 0
            ;;
    esac

    _filedir
} && complete -F _makepkg makepkg

have explodepkg &&
complete -o plusdirs -f -X '!*.t[bglx]z' explodepkg

}
