# shellcheck shell=dash

xrc:mod:lib     gtb   meta/info   meta/ls

___x_cmd_gtb_meta(){
    [ $# -gt 0 ]   ||   set - --app

    local op="$1";      shift
    case "$op" in
        -h|--help)
            ___x_cmd help -m gtb meta;  return  ;;
        which|which_|ls)
            ___x_cmd_gtb_meta_"$op"     "$@"    ;;
        *)  ___x_cmd_gtb_meta_ls "$op"  "$@"    ;;
    esac
}

___x_cmd_gtb_meta_info(){
    :
}

___x_cmd_gtb_meta_which(){
    local x_
    ___x_cmd_gtb_meta_which_ || return
    printf "%s\n" "$x_"
}

___x_cmd_gtb_meta_which_(){
    x_="${___X_CMD_GTB_FP_META}/pg_catalog.csv"

    [ ! -f "$x_" ] || return 0
    ___x_cmd_gtb_meta_download
}

___x_cmd_gtb_meta_download(){
    local metafp="${___X_CMD_GTB_FP_META}/pg_catalog.csv"

    if [ -f "$metafp" ]; then
        return 0
    fi

    local url="https://www.gutenberg.org/cache/epub/feeds/pg_catalog.csv.gz"
    local tgt="${___X_CMD_GTB_FP_META}/pg_catalog.csv.gz"

    ___x_cmd ensurefp "$tgt"

    # --retry-all-errors
    gtb:info "download gutenberg meta from url -> $url"
    ___x_cmd curl --fail --retry-connrefused --retry 5 -C - -o "$tgt" "$url" || {
        gtb:error "fail to download from url -> $url"
        return
    }

    ___x_cmd uz \
        "${___X_CMD_GTB_FP_META}/pg_catalog.csv.gz"      \
        "${___X_CMD_GTB_FP_META}/"
}



