# shellcheck shell=bash disable=SC2034,SC2154
# shellcheck disable=SC2039,3043
xrc:mod:lib fjo                 \
    repo/util                   \
    repo/collaborator/_index    \
    repo/branch/_index          \
    repo/fs/_index              \
    repo/pr/_index              \
    repo/team/_index            \
    repo/release/_index

xrc:mod:lib fjo     \
    repo/ls             \
    repo/ll             \
    repo/create         \
    repo/edit           \
    repo/info           \
    repo/rm             \
    repo/tag



___x_cmd_fjo_repo(){
    param:scope     ___x_cmd_fjo
    param:subcmd ___x_cmd_fjo_repo                                   \
        ls                   "list repo of owner"                    \
        ll                   "List repo by owner"                    \
        create               "create repo"                           \
        "edit|ed"            "update repo"                           \
        "info"               "Show detailed information of repo"     \
        rm                   "Remove repo"                           \
        "collaborator|c"     "manage collaborator"                   \
        "cl|clone"           "Clone repo"                            \
        branch               "manage branch"                         \
        fs                   "download repo file"                    \
        fsp                  "download public repo file"             \
        pr                   "manage pr"                             \
        hook                 "repo webhook manage"                   \
        release              "repo release manage"                   \
        team                 "List repository teams"                 \
        tag                  "list repo tags"
    param:subcmd:try
    param:run

    fjo:info "Running -> x fjo repo ls"
    ___x_cmd_fjo_repo_ls "$@"
}




___x_cmd_fjo_repo____ui_handler(){
    if [ -n "$ENFORCE_JSON" ] || [ -n "$json" ]; then
        ___x_cmd_cmds_cat
        ___x_cmd_fjo_http_error
        return
    fi
    (
        local _id=""
        case "$1" in
            Info)
                x jo env . _id=.id url=.html_url fjo_resp_msg=.message fjo_resp_err=.errors \
                    full_name=.full_name private=.private
                _inf_msg="Getting $owner_repo repo information successfully"
                _err_msg="Getting $owner_repo repo information failure"
                ;;
            Creating|Edit)
                x jo env . _id=.id url=.html_url fjo_resp_msg=.message fjo_resp_err=.errors \
                    owner=.owner.login full_name=.full_name private=.private
                _inf_msg="$1 repo ${owner_repo:-$name} successfully"
                _err_msg="$1 ${owner_repo:-$name} repo failure"
                ;;
        esac

        local visibility
        if [ "$private" = "true" ]; then
            visibility="private"
        else
            visibility="public"
        fi

        if [ -n "$_id" ]; then
            ___x_cmd_ui_tf  true "${_inf_msg}:" ${full_name:+"Name: $full_name"} ${owner:+"Repo_Owner: $owner"} ${visibility:+"Visibility: $visibility"} ${url:+"URL: $url"}
        else
            ___x_cmd_ui_tf false "${_err_msg}:" >&2
            ___x_cmd_fjo____handle_resp
            return 1
        fi
    )
}



