# shellcheck shell=dash

___x_cmd log init zig

xrc shim cosmo
xrc:mod:lib     zig     initcc  zen  target/_index   xrun   fetch   env     ddgo    pm/_index   zon

# TODO: add some ui into it
___x_cmd_zig___main(){
    [ "$#" -gt 0 ] ||       set -- --help

    local op="$1";          shift
    case "$op" in
        -h|--help)          ___x_cmd help -m zig     "$@" ; return   ;;

        --xrun|xrun)        ___x_cmd_zig___xrun             "$@" ;;

        target|targets)     ___x_cmd_zig_target             "$@" ;;
        checkcc)            ___x_cmd_zig_checkcc            "$@" ;;
        initcc)             ___x_cmd_zig_initcc             "$@" ;;

        f|fetch)            ___x_cmd_zig_fetch              "$@" ;;
        env)                ___x_cmd_zig_env                "$@" ;;
        :|ddgo)             ___x_cmd_zig_ddgo               "$@" ;;

        pm|zon|zen)
                            ___x_cmd_zig_"$op"              "$@" ;;

        *)                  ___x_cmd_zig___command "$op"    "$@" ;;
    esac
}

___x_cmd_zig___ensure(){
    ___x_cmd_hascmd zig || {
        if ___x_cmd_is_stdout2tty; then
            local id=
            local cmd=
            x ui select id,cmd "zig command not found, Next"   \
                "x env use zig"         \
                "x env try zig"         \
                "return 1"              \
            || return
            eval "$cmd"
        else
            N=zig M="zig command not found. Install it by 'x env use zig'" log:ret:1
        fi
    }
}

___x_cmd_zig___command(){
    ___x_cmd_zig___ensure || return

    ___x_cmd_cmds zig "$@"
}


