# shellcheck shell=dash

___X_CMD_SCORECARD_INDEX_FP="$___X_CMD_ROOT_DATA/scorecard/project.csv"
___X_CMD_SCORECARD_INDEX_FP_COLOR="$___X_CMD_SCORECARD_INDEX_FP.color"

___x_cmd_scorecard_update(){
    case "$1" in
        -h|--help)  ___x_cmd help -m scorecard update;    return 0 ;;
    esac

    # download the index file from codeberg.org github.com
    local url=
    if ! ___x_cmd websrc is cn;then
        url="https://raw.githubusercontent.com/ossf/scorecard/main/cron/internal/data/projects.csv"
    else
        url="https://codeberg.org/x-cmd-sourcecode/scorecard/raw/branch/main/cron/internal/data/projects.csv"
    fi
    ___x_cmd ensurefp "$___X_CMD_SCORECARD_INDEX_FP"

    scorecard:info \
        -m "Download scorecard projects.csv, thanks to the courtesy of ${url%/"${url#*//*/}"}" \
        --url "$url" --ball "$___X_CMD_SCORECARD_INDEX_FP"
    # ___x_cmd ccmd 10d --
    ___x_cmd curl --location --retry-max-time 10 --retry 0 "$url" > "$___X_CMD_SCORECARD_INDEX_FP.tmp" || {
        ___x_cmd rmrf "$___X_CMD_SCORECARD_INDEX_FP.tmp"
        scorecard:error "Download failed."
        return 1
    }
    ___x_cmd rmrf "$___X_CMD_SCORECARD_INDEX_FP.last"
    if [ -f "$___X_CMD_SCORECARD_INDEX_FP" ];then
        ___x_cmd mv "$___X_CMD_SCORECARD_INDEX_FP" "$___X_CMD_SCORECARD_INDEX_FP.last"
    fi
    ___x_cmd mv "$___X_CMD_SCORECARD_INDEX_FP.tmp" "$___X_CMD_SCORECARD_INDEX_FP"
    scorecard:info "scorecard projects.csv updated successfully."

    scorecard:info "Colorizing scorecard index. It might take 10 seconds."
    ___x_cmd_scorecard_update___inner || {
        ___x_cmd rmrf "$___X_CMD_SCORECARD_INDEX_FP_COLOR"
        return 1
    }
    scorecard:info "Generate successful."
}

___x_cmd_scorecard_update___inner(){
    # ___x_cmd_cmds_awk 'NR > 1' "$___X_CMD_SCORECARD_INDEX_FP" | \
    #     ___x_cmd csv static_tab --color auto | \
    #     command tee "$___X_CMD_SCORECARD_INDEX_FP_COLOR"
    <"$___X_CMD_SCORECARD_INDEX_FP" awk -F ',' 'NR>1{ printf("\033[32m%-50s  \033[34m%s\n", $1, $2); }' >"$___X_CMD_SCORECARD_INDEX_FP_COLOR"
}
