os.platform = nil if os.platform == nil then local libExt = package.cpath:match("%p[\\|/]?\\.%p(%a+)") if libExt == 'dll' then os.platform = "Windows" elseif libExt == 'so' then os.platform = "Linux" elseif libExt == 'dylib' then os.platform = "MacOS" end end os.copy = function(src, dest) if os.platform == "Windows" then src = string.gsub(src, "/", "\\") src = os.text.toencoding(src) dest = os.text.toencoding(dest) os.execute('copy "' .. src .. '" "' .. dest .. '" >NUL') else os.execute('cp "' .. src .. '" "' .. dest .. '"') end end os.mkdir = function(dir) if os.exists(dir) then return end if os.platform == "Windows" then dir = os.text.toencoding(dir) os.execute('mkdir "' .. dir .. '"') else os.execute('mkdir -p "' .. dir .. '"') end end os.exists = function(path) if os.platform == "Windows" then path = string.gsub(path, "/", "\\") path = os.text.toencoding(path) local _, _, code = os.execute('if exist "' .. path .. '" (exit 0) else (exit 1)') return code == 0 else local _, _, code = os.execute('test -e "' .. path .. '"') return code == 0 end end string.starts_with = function(str, start) return str:sub(1, #start) == start end string.ends_with = function(str, ending) return ending == "" or str:sub(-#ending) == ending end return { os = os, string = string }