diff options
| author | William Boman <william@redwill.se> | 2022-05-11 16:10:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-11 16:10:57 +0200 |
| commit | 5e3385d90668c792919c7e2791620a6c0d569538 (patch) | |
| tree | 4b0158d3ac7765db47411d57ec754a96f8eaf1f9 /lua/nvim-lsp-installer/platform.lua | |
| parent | chore!: remove zeta_note (diff) | |
| download | mason-5e3385d90668c792919c7e2791620a6c0d569538.tar mason-5e3385d90668c792919c7e2791620a6c0d569538.tar.gz mason-5e3385d90668c792919c7e2791620a6c0d569538.tar.bz2 mason-5e3385d90668c792919c7e2791620a6c0d569538.tar.lz mason-5e3385d90668c792919c7e2791620a6c0d569538.tar.xz mason-5e3385d90668c792919c7e2791620a6c0d569538.tar.zst mason-5e3385d90668c792919c7e2791620a6c0d569538.zip | |
chore: further decouple module structure (#685)
Diffstat (limited to 'lua/nvim-lsp-installer/platform.lua')
| -rw-r--r-- | lua/nvim-lsp-installer/platform.lua | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/lua/nvim-lsp-installer/platform.lua b/lua/nvim-lsp-installer/platform.lua deleted file mode 100644 index 3e931356..00000000 --- a/lua/nvim-lsp-installer/platform.lua +++ /dev/null @@ -1,155 +0,0 @@ -local Data = require "nvim-lsp-installer.data" -local Result = require "nvim-lsp-installer.core.result" -local lazy = Data.lazy -local M = {} - -local uname = vim.loop.os_uname() - ----@alias Platform ----| '"win"' ----| '"unix"' ----| '"linux"' ----| '"mac"' - -local arch_aliases = { - ["x86_64"] = "x64", - ["i386"] = "x86", - ["i686"] = "x86", -- x86 compat - ["aarch64"] = "arm64", - ["aarch64_be"] = "arm64", - ["armv8b"] = "arm64", -- arm64 compat - ["armv8l"] = "arm64", -- arm64 compat -} - -M.arch = arch_aliases[uname.machine] or uname.machine - -M.is_win = vim.fn.has "win32" == 1 -M.is_unix = vim.fn.has "unix" == 1 -M.is_mac = vim.fn.has "mac" == 1 -M.is_linux = not M.is_mac and M.is_unix - --- @return string @The libc found on the system, musl or glibc (glibc if ldd is not found) -function M.get_libc() - local _, _, libc_exit_code = os.execute "ldd --version 2>&1 | grep -q musl" - if libc_exit_code == 0 then - return "musl" - else - return "glibc" - end -end - --- PATH separator -M.path_sep = M.is_win and ";" or ":" - -M.is_headless = #vim.api.nvim_list_uis() == 0 - ----@generic T ----@param platform_table table<Platform, T> ----@return T -local function get_by_platform(platform_table) - if M.is_mac then - return platform_table.mac or platform_table.unix - elseif M.is_linux then - return platform_table.linux or platform_table.unix - elseif M.is_unix then - return platform_table.unix - elseif M.is_win then - return platform_table.win - else - return nil - end -end - -function M.when(cases) - local case = get_by_platform(cases) - if case then - return case() - else - error "Current platform is not supported." - end -end - ----@type async fun(): table -M.os_distribution = lazy(function() - ---Parses the provided contents of an /etc/\*-release file and identifies the Linux distribution. - ---@param contents string @The contents of a /etc/\*-release file. - ---@return table<string, any> - local function parse_linux_dist(contents) - local lines = vim.split(contents, "\n") - - local entries = {} - - for i = 1, #lines do - local line = lines[i] - local index = line:find "=" - if index then - local key = line:sub(1, index - 1) - local value = line:sub(index + 1) - entries[key] = value - end - end - - if entries.ID == "ubuntu" then - -- Parses the Ubuntu OS VERSION_ID into their version components, e.g. "18.04" -> {major=18, minor=04} - local version_id = entries.VERSION_ID:gsub([["]], "") - local version_parts = vim.split(version_id, "%.") - local major = tonumber(version_parts[1]) - local minor = tonumber(version_parts[2]) - - return { - id = "ubuntu", - version_id = version_id, - version = { major = major, minor = minor }, - } - else - return { - id = "linux-generic", - } - end - end - - return M.when { - linux = function() - local spawn = require "nvim-lsp-installer.core.spawn" - return spawn.bash({ "-c", "cat /etc/*-release" }) - :map_catching(function(result) - return parse_linux_dist(result.stdout) - end) - :recover(function() - return { id = "linux-generic" } - end) - :get_or_throw() - end, - mac = function() - return Result.success { id = "macOS" } - end, - win = function() - return Result.success { id = "windows" } - end, - } -end) - ----@type async fun() Result @of String -M.get_homebrew_prefix = lazy(function() - assert(M.is_mac, "Can only locate Homebrew installation on Mac systems.") - local spawn = require "nvim-lsp-installer.core.spawn" - return spawn.brew({ "--prefix" }) - :map_catching(function(result) - return vim.trim(result.stdout) - end) - :map_err(function() - return "Failed to locate Homebrew installation." - end) -end) - -M.is = setmetatable({}, { - __index = function(_, key) - local platform, arch = unpack(vim.split(key, "_", { plain = true })) - if arch and M.arch ~= arch then - return false - end - return M["is_" .. platform] == true - end, -}) - -return M |
