# shellcheck shell=dash

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

    [ -f "$___X_CMD_SCORECARD_INDEX_FP" ] || \
        ___x_cmd_scorecard_update || N=scorecard M="Fail to download index ->   'x scorecard update'" log:ret:1

    if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_manual; then
        ___x_cmd_scorecard_search___app "$@"
        return
    fi

    [ $# -gt 0 ] ||  N=scorecard M="Please provide criteria." log:ret:64
    ___x_cmd_cmds grep "$@" "$___X_CMD_SCORECARD_INDEX_FP"
}

___x_cmd_scorecard___fz_data(){
    local data_file
    local query
    data_file="$___X_CMD_SCORECARD_INDEX_FP_COLOR"
    [ -f "$data_file" ] || data_file="$___X_CMD_SCORECARD_INDEX_FP"
    {
        query="$*"
        [ -n "$query" ] || query=""
        ___x_cmd fzf -q "$query" \
            --ansi --height 90% --layout=reverse \
            --preview='___x_cmdexe scorecard info --preview {1}'
    } < "$data_file"
}

___x_cmd_scorecard_search___app(){
    local selected=
    selected="$( ___X_CMD_RUNMODE="$___X_CMD_RUNMODE" ___x_cmdexe scorecard --fzdata "$@" )"

    [ -n "$selected" ] || return 1

    local id=
    local proj="${selected%% *}"
    scorecard:debug "Selected ${selected}"
    ___x_cmd ui select id "More about project -> $proj"\
        "x scorecard info  ${proj}"     \
        "x scorecard open  ${proj}"     \
        "return 0"

    case "$id" in
        1)      ___x_cmd scorecard info  "${proj}" ;;
        2)      ___x_cmd scorecard open  "${proj}" ;;
        *)      return 0 ;;
    esac
}

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

    local proj="$1"; [ -n "$proj" ] || M='Provide a project address.' N=pkg log:ret:1
    ___x_cmd open "https://scorecard.dev/viewer/?uri=${proj}"
}
