# shellcheck shell=dash

___x_cmd_lua_path_generate_(){
    local version="${1:-5.4}"

    # local usrshare="/usr/local/share/lua/$version"
    # local usrlib="/usr/local/lib/lua/$version"
    # local usrshare_="$usrshare/?.lua;$usrshare/$sub;"
    # local usrlib_="$usrlib/?.lua;$usrlib/$sub;"

    local sub="?/init.lua"
    local homelib_="$HOME/.luarocks/share/lua/$version"            # ... # For luarocks and library compatibility
    local xlua_="${___X_CMD_ROOT_MOD}/lua/lib/share"
    local ws_=""
    local lm_="./lua_modules/share/lua/$version"
    local local_="./?.lua;./?/init.lua;"

    ___x_cmd os name_
    case "$___X_CMD_OS_NAME_" in
        win)
            sub="?\init.lua"
            homelib_="$(cypath -w "$homelib_")"
            xlua_="$(cypath -w "$xlua_")"
            lm_=".\lua_modules\share\lua\\$version"
            local_=".\?.lua;.\?\init.lua;"

            homelib_="$homelib_\?.lua;$homelib_\\$sub;"
            xlua_="$xlua_\?.lua;$xlua_\\$sub;"
            [ -z "$LUA_PATH_WS" ] || ws_="$LUA_PATH_WS\?.lua;$LUA_PATH_WS\\$sub;"
            lm_="$lm_\?.lua;$lm_\\$sub;"
            ;;
        *)
            homelib_="$homelib_/?.lua;$homelib_/$sub;"
            xlua_="$xlua_/?.lua;$xlua_/$sub;"
            [ -z "$LUA_PATH_WS" ] || ws_="$LUA_PATH_WS/?.lua;$LUA_PATH_WS/$sub;"
            lm_="$lm_/?.lua;$lm_/$sub;"
            ;;
    esac

    x_="${local_}${lm_}${ws_}${homelib_}${xlua_};"     # ; in the ending to insert the default
}

___x_cmd_lua_cpath_generate_(){
    local version="${1:-5.4}"

    local usrlib="/usr/local/lib/lua/$version"
    local homelib_="$HOME/.luarocks/lib/lua/$version"
    local ws_=""
    local lm_="./lua_modules/lib/lua/$version"
    local local_="./?.$ext;"

    local ext=so
    ___x_cmd os name_
    case "$___X_CMD_OS_NAME_" in
        linux)
            ext=so
            usrlib="$usrlib/?.$ext;$usrlib/loadall.$ext;"
            homelib_="$homelib_/?.$ext;$homelib_/loadall.$ext;"
            [ -z "$LUA_PATH_WS" ] || ws_="$LUA_PATH_WS/?.$ext;$LUA_PATH_WS/loadall.$ext;"
            lm_="$lm_/?.$ext;$lm_/loadall.$ext;"
            ;;
        darwin)
            ext=dylib
            usrlib="$usrlib/?.so;$usrlib/?.$ext;$usrlib/loadall.so;$usrlib/loadall.$ext;"
            homelib_="$homelib_/?.so;$homelib_/?.$ext;$homelib_/loadall.so;$homelib_/loadall.$ext;"
            [ -z "$LUA_PATH_WS" ] || ws_="$LUA_PATH_WS/?.so;$LUA_PATH_WS/?.$ext;$LUA_PATH_WS/loadall.so;$LUA_PATH_WS/loadall.$ext;"
            lm_="$lm_/?.so;$lm_/?.$ext;$lm_/loadall.so;$lm_/loadall.$ext;"
            local_="./?.so;$local_"
            ;;
        win)
            ext=dll
            usrlib="$(cygpath -w "$usrlib")"
            homelib_="$(cypath -w "$homelib_")"
            lm_=".\lua_modules\lib\lua\\$version"
            local_=".\?.$ext;"

            usrlib="$usrlib\?.$ext;$usrlib\loadall.$ext;"
            homelib_="$homelib_\?.$ext;$homelib_\loadall.$ext;"
            [ -z "$LUA_PATH_WS" ] || ws_="$LUA_PATH_WS\?.$ext;$LUA_PATH_WS\loadall.$ext;"
            lm_="$lm_\?.$ext;$lm_\loadall.$ext;"
            ;;
    esac

    x_="${local_}${lm_}${ws_}${homelib_}${usrlib}"          # No ; in the ending
}

