# shellcheck shell=dash

# x font i ...
# x font nerd i ...

___x_cmd log init font
xrc:mod:lib  font      install  ls  nerd/_index

___x_cmd_font___main(){
    [ "$#" -gt 0 ] ||   set -- nerd

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

        refresh)            ___x_cmd_font_refresh   "$@" ;;

        i|install)          ___x_cmd_font_install  "$@" ;;
        nerd|noto)          ___x_cmd_font_"$op"    "$@" ;;

        cfonts|cfont|c)     ___x_cmd_font_cfont     "$@" ;;
        *)                  ___x_cmd help -m font   "$@"; return 1 ;;
    esac
}

___x_cmd_font___init(){
    ___X_CMD_FONT_NERD_VERSION="${___X_CMD_FONT_NERD_VERSION:-"v3.4.0"}"
    ___X_CMD_FONT_TMP="${___X_CMD_FONT_TMP:-"${___X_CMD_ROOT_TMP}/font"}"
    ___X_CMD_FONT_CACHE="${___X_CMD_FONT_CACHE:-"${___X_CMD_ROOT_CACHE}/font"}"

    # termux win darwin linux
    [ -n "$___X_CMD_FONT_OS" ] || {
        if ___x_cmd os is termux; then
            ___X_CMD_FONT_OS="termux"
        elif ___x_cmd os is wsl; then
            ___X_CMD_FONT_OS="win"
        else
            local x_=""; ___x_cmd __osname_
            ___X_CMD_FONT_OS="$x_"
        fi
    }
    case "$___X_CMD_FONT_OS" in
        termux)    ___X_CMD_FONT_DIR="$HOME/.termux";;
        darwin)    ___X_CMD_FONT_DIR="$HOME/Library/Fonts";;
        *)         ___X_CMD_FONT_DIR="$HOME/.local/share/fonts";; # Linux
    esac
}
___x_cmd_font___init

___x_cmd_font_cfont(){
    # ___x_cmd deno run --allow-read="$HOME/Library/Caches/deno" npm:cfonts "x-cmd" -f huge -a center -g red,blue
    # ___x_cmd deno run --allow-read="$HOME/Library/Caches/deno" npm:cfonts "$@"
    ___x_cmd deno run --allow-read npm:cfonts "$@"
}

___x_cmd_font_refresh(){
    if ___x_cmd_hascmd fc-cache; then
        font:info "Refresh font cache, this may take a moment..."
        if [ -n "$1" ]; then
            ___x_cmd sudo fc-cache -f "$1"
        else
            ___x_cmd log uirotate ___x_cmd sudo fc-cache -f -v
        fi
    else
        font:error -c 'x install fontconfig' 'Refresh failed. fc-cache command not found.'
        return 1
    fi
}

