# astra-subscription(1) completion                                       -*- shell-script -*-

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

    local commands="register unregister attach status clear import export"
    local register_opts="--username --password --organization --server-url --force --auto-attach"
    local attach_opts="--pool-id"
    local status_opts="--consumer --product-os --product-id --list"
    local status_list_opts="--available --pool-id"
    local import_opts="--file"
    local export_opts="--file --product-id"

    if [[ ${words[0]} == "astra-subscription" && $cword == 1 ]]; then
        COMPREPLY=($(compgen -W "${commands} --help --version" -- "${cur}"))
        return
    fi

    case ${words[1]} in
        register)
            case $prev in
                -[!-]*u|-u|--username|-[!-]*p|-p|--password|-[!-]*o|-o|--organization|-[!-]*s|-s|--server-url)
                    return
                    ;;
                *)
                    COMPREPLY=($(compgen -W "${register_opts} --help --verbose" -- "${cur}"))
                    ;;
            esac
            ;;
        attach)
            case $prev in
                -[!-]*p|-p|--pool-id)
                    return
                    ;;
                *)
                    COMPREPLY=($(compgen -W "${attach_opts} --help --verbose" -- "${cur}"))
                    ;;
            esac
            ;;
        status)
            if [[ $cword == 2 ]]; then
                COMPREPLY=($(compgen -W "${status_opts} --help --verbose" -- "${cur}"))
                return
            fi 
            
            case ${words[2]} in
                -[!-]*c|-c|--consumer|-[!-]*o|-o|--product-os|-[!-]*i|-i|--product-id)
                    return
                    ;;
                -[!-]*l*|-l*|--list)
                    case $prev in
                        -[!-]*p|-p|--pool-id)
                            return
                            ;;
                        *)
                            COMPREPLY=($(compgen -W "${status_list_opts}" -- "${cur}"))
                            ;;
                    esac
                    ;;
            esac
            ;;
        import)
            case $prev in
                -[!-]*f|-f|--file)
                    COMPREPLY=($(compgen -f -- "${cur}"))
                    ;;
                *)
                    COMPREPLY=($(compgen -W "${import_opts} --help --verbose" -- "${cur}"))
                    ;;
            esac
            ;;
        export)
            case $prev in
                -[!-]*i|-i|--product-id)
                    return
                    ;;
                -[!-]*f|-f|--file)
                    COMPREPLY=($(compgen -f -- "${cur}"))
                    ;;
                *)
                    COMPREPLY=($(compgen -W "${export_opts} --help --verbose" -- "${cur}"))
                    ;;
            esac
            ;;
        *)
            COMPREPLY=($(compgen -W "--help --verbose" -- "${cur}"))
            ;;
    esac
}

complete -o nospace -F _astra_subscription astra-subscription

