123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- -- credit : https://gist.github.com/soulik
- local function _hx_os_info()
- local raw_os_name, raw_arch_name = '', ''
- -- LuaJIT shortcut
- if jit and jit.os and jit.arch then
- raw_os_name = jit.os
- raw_arch_name = jit.arch
- else
- -- is popen supported?
- local popen_status, popen_result = pcall(io.popen, "")
- if popen_status then
- popen_result:close()
- -- Unix-based OS
- raw_os_name = io.popen('uname -s','r'):read('*l')
- raw_arch_name = io.popen('uname -m','r'):read('*l')
- else
- -- Windows
- local env_OS = os.getenv('OS')
- local env_ARCH = os.getenv('PROCESSOR_ARCHITECTURE')
- if env_OS and env_ARCH then
- raw_os_name, raw_arch_name = env_OS, env_ARCH
- end
- end
- end
- raw_os_name = (raw_os_name):lower()
- raw_arch_name = (raw_arch_name):lower()
- local os_patterns = {
- ['windows'] = 'Windows',
- ['linux'] = 'Linux',
- ['mac'] = 'Mac',
- ['darwin'] = 'Mac',
- ['^mingw'] = 'Windows',
- ['^cygwin'] = 'Windows',
- ['bsd$'] = 'BSD',
- ['SunOS'] = 'Solaris',
- }
-
- local arch_patterns = {
- ['^x86$'] = 'x86',
- ['i[%d]86'] = 'x86',
- ['amd64'] = 'x86_64',
- ['x86_64'] = 'x86_64',
- ['Power Macintosh'] = 'powerpc',
- ['^arm'] = 'arm',
- ['^mips'] = 'mips',
- }
- local os_name, arch_name = 'unknown', 'unknown'
- for pattern, name in pairs(os_patterns) do
- if raw_os_name:match(pattern) then
- os_name = name
- break
- end
- end
- for pattern, name in pairs(arch_patterns) do
- if raw_arch_name:match(pattern) then
- arch_name = name
- break
- end
- end
- return {os_name, arch_name}
- end
|