# bash completion for autodist

_autodist() {
    local cur prev words cword
    _init_completion || return

    local repos='' archs=''
    if [ -r /etc/autodist/config ]; then
        eval "$(grep -E '^AUTODIST_REPOSITORIES=|^AUTODIST_ARCHS=' /etc/autodist/config 2>/dev/null)"
        repos="${AUTODIST_REPOSITORIES[*]}"
        archs="${AUTODIST_ARCHS[*]}"
    fi

    local opts="-a --autobuild -p --prepare -u --update -b --build -i --install -s --send
                -c --cleanlogs -d --debug -h --help -t --test -q --quiet -r --rebuild
                -v --verbose --force --force-install --list-jobs --list-pkgs
                --repository --repository-strict --server --severity --arch
                --user --rebuild-srpms"

    case "$prev" in
        --repository|--server)
            COMPREPLY=($(compgen -W "$repos" -- "$cur"))
            return ;;
        --severity)
            COMPREPLY=($(compgen -W "0 1 2" -- "$cur"))
            return ;;
        --arch)
            COMPREPLY=($(compgen -W "$archs" -- "$cur"))
            return ;;
        --list-pkgs|--user)
            return ;;
    esac

    if [[ "$cur" == -* ]]; then
        COMPREPLY=($(compgen -W "$opts" -- "$cur"))
        return
    fi

    local jobs=''
    for f in /etc/autodist/distdb /etc/autodist/distdb.d/*.db; do
        [ -r "$f" ] && jobs="$jobs $(sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)\s*=.*/\1/p' "$f" 2>/dev/null)"
    done
    COMPREPLY=($(compgen -W "$jobs" -- "$cur"))
}
complete -F _autodist autodist
