# shellcheck shell=dash
___x_cmd_gx_ws_collaborator(){
    local X_help_cmd='___x_cmd_gx_help ws collaborator'
    help:arg:parse
    [ $# -gt 0 ] ||     set -- ls

    local op="$1";      shift
    case "$op" in
        ls|add|rm)           ___x_cmd_gx_ws_collaborator___management  "$op"  "$@" ;;
        # apply)               ___x_cmd_gx_ws_collaborator_apply                "$@" ;;
        open)                ___x_cmd_gx_ws_collaborator_open                 "$@" ;;
    esac
}

___x_cmd_gx_ws_collaborator___management(){
    local op="$1"; shift

    local x_
    ___x_cmd_gx_ws_provider_ || return
    local provider="$x_"

    ___x_cmd_gx_ws_repopath_ || return
    local p="$x_"

    gx:debug "x $provider repo collaborator $op -r $p $*"
    x "$provider" repo collaborator "$op" -r "$p" "$@"
}


# ___x_cmd_gx_ws_collaborator_apply(){
#     local x_
#     ___x_cmd_gx_ws_provider_ || return
#     local provider="$x_"

#     ___x_cmd_gx_ws_repopath_ || return
#     local p="$x_"

#     x "$provider" repo collaborator add -r "$p" "$@"
# }
___x_cmd_gx_ws_collaborator_open(){
    local x_
    ___x_cmd_gx_ws_gethttpurl_ || return
    local httpurl="$x_"

    ___x_cmd_gx_ws_repopath_ || return
    local p="$x_"

    ___x_cmd_gx_ws_provider_ || return
    local provider="$x_"

    case "$provider" in
        gh|gt)         x browse "$httpurl/$p/settings"           ;;
        gitcode|gl)    x browse "$httpurl/$p/-/project_members"  ;;
        *)             return 1                                  ;;
    esac
}
