# Author:       Li Junhao   l@x-cmd.com             # xrc
# shellcheck    shell=sh    disable=SC3043,SC1091

___x_cmd_tmp(){
    case "$1" in
        path_)          shift 1; ___x_cmd_tmp_path_ "$@" ;;

        path)           shift 1; ___x_cmd_tmp_path "$@" ;;
        root)           shift 1; ___x_cmd_tmp_root "$@" ;;

        # create file
        touch)          shift 1; ___x_cmd_tmp_touch "$@" ;;

        # create dir
        dir)            shift 1; ___x_cmd_tmp_dir "$@" ;;

        *)              ___x_cmd_tmp_path "$@" ;;
    esac
}

___x_cmd_tmp_path(){
    ___x_cmd_tmp_path_ "$@" || return
    printf "%s\n" "$___X_CMD_TMP_PATH_"
}

___x_cmd_tmp_path_(){
    if [ -n "$___X_CMD_TMP_ROOT" ]; then
        ___X_CMD_TMP_PATH_="$___X_CMD_TMP_ROOT"
    else
        case "$TMPDIR" in
            */)     ___X_CMD_TMP_PATH_="${TMPDIR%/*}"   ;;
            *)      ___X_CMD_TMP_PATH_="$TMPDIR"        ;; # git-bash not endwith '/'
        esac
    fi
    
    if [ "$#" -ne 0 ]; then
        local IFS=" "; local i; for i in "$@"; do
            i="${i#*/}"
            ___X_CMD_TMP_PATH_="${___X_CMD_TMP_PATH_}/${i%/*}"
        done
    fi
}

___x_cmd_tmp_root(){
    if [ -n "$1" ]; then
        ___X_CMD_TMP_ROOT="$1"
    else
        printf "%s\n" "$___X_CMD_TMP_ROOT"
    fi
}

___x_cmd_tmp_dir(){
    ___x_cmd_tmp_path_ "$@" 
    x mkdirp "$___X_CMD_TMP_PATH_"
}

___x_cmd_tmp_touch(){
    ___x_cmd_tmp_path_ "$@" 
    x touch "$___X_CMD_TMP_PATH_"
}
