# shellcheck shell=dash

___x_cmd_cb_codeurl(){
    param:void
    case "$1" in
        -h|--help)          ___x_cmd help -m cb codeurl   "$@"; return ;;
    esac

    local x_=""
    ___x_cmd_cb_codeurl_ "$@"
    [ -n "$x_" ] || return 1
    printf "%s\n" "$x_"
}

___x_cmd_cb_codeurl_(){
    x_=""

    local url="$1"
    local owner_repo=""

    case "$url" in
        https://codeberg.org/*/*/src/*)
            owner_repo="${url#'https://codeberg.org/'}"
            owner_repo="${owner_repo%%'/src/'*}"
            local blob_after="${url#*'/src/'}"
            x_="https://codeberg.org/${owner_repo}/raw/${blob_after}"
            ;;
        https://codeberg.org/*/*/wiki|https://codeberg.org*/*/wiki/*)
            owner_repo="${url#'https://codeberg.org/'}"
            owner_repo="${owner_repo%%'/wiki'*}"
            local file="${url#*'/wiki'}"
            [ -n "$file" ] || file="/Home"
            x_="https://codeberg.org/${owner_repo}/wiki/raw${file}.md"
            ;;
        https://codeberg.org/*/*/*)
            x_=""
            ;;
        https://codeberg.org/*/*)
            owner_repo="${url#https://codeberg.org/}"
            owner_repo="${owner_repo%/}"
            local default_branch="main"
            default_branch="$(___x_cmd cb repo info --json "${owner_repo}" | x jq -r .default_branch)"
            x_="https://codeberg.org/${owner_repo}/raw/branch/${default_branch}/README.md"
            ;;
    esac
}
