diff options
Diffstat (limited to 'lua/nvim-lsp-installer/jobs/version-check/init.lua')
| -rw-r--r-- | lua/nvim-lsp-installer/jobs/version-check/init.lua | 95 |
1 files changed, 20 insertions, 75 deletions
diff --git a/lua/nvim-lsp-installer/jobs/version-check/init.lua b/lua/nvim-lsp-installer/jobs/version-check/init.lua index da33ea9d..ef36fefa 100644 --- a/lua/nvim-lsp-installer/jobs/version-check/init.lua +++ b/lua/nvim-lsp-installer/jobs/version-check/init.lua @@ -1,12 +1,11 @@ -local a = require "nvim-lsp-installer.core.async" local Result = require "nvim-lsp-installer.core.result" -local process = require "nvim-lsp-installer.process" -local pip3 = require "nvim-lsp-installer.installers.pip3" -local gem = require "nvim-lsp-installer.installers.gem" -local cargo_check = require "nvim-lsp-installer.jobs.outdated-servers.cargo" -local gem_check = require "nvim-lsp-installer.jobs.outdated-servers.gem" -local pip3_check = require "nvim-lsp-installer.jobs.outdated-servers.pip3" -local spawn = require "nvim-lsp-installer.core.async.spawn" +local npm = require "nvim-lsp-installer.core.managers.npm" +local cargo = require "nvim-lsp-installer.core.managers.cargo" +local pip3 = require "nvim-lsp-installer.core.managers.pip3" +local gem = require "nvim-lsp-installer.core.managers.gem" +local go = require "nvim-lsp-installer.core.managers.go" +local git = require "nvim-lsp-installer.core.managers.git" +local composer = require "nvim-lsp-installer.core.managers.composer" local M = {} @@ -26,89 +25,35 @@ local function noop() return Result.failure "Unable to detect version." end ----@type Record<InstallReceiptSourceType, fun(server: Server, receipt: InstallReceipt): Result> +---@type Record<InstallReceiptSourceType, async fun(server: Server, receipt: InstallReceipt): Result> local version_checker = { ["npm"] = function(server, receipt) - return spawn.npm({ - "ls", - "--json", - cwd = server.root_dir, - }):map_catching(function(result) - local npm_packages = vim.json.decode(result.stdout) - return npm_packages.dependencies[receipt.primary_source.package].version - end) + return npm.get_installed_primary_package_version(receipt, server.root_dir) end, ["pip3"] = function(server, receipt) - return spawn.python3({ - "-m", - "pip", - "list", - "--format", - "json", - cwd = server.root_dir, - env = process.graft_env(pip3.env(server.root_dir)), - }):map_catching(function(result) - local pip_packages = vim.json.decode(result.stdout) - local normalized_pip_package = pip3_check.normalize_package(receipt.primary_source.package) - for _, pip_package in ipairs(pip_packages) do - if pip_package.name == normalized_pip_package then - return pip_package.version - end - end - error "Unable to find pip package." - end) + return pip3.get_installed_primary_package_version(receipt, server.root_dir) end, ["gem"] = function(server, receipt) - return spawn.gem({ - "list", - cwd = server.root_dir, - env = process.graft_env(gem.env(server.root_dir)), - }):map_catching(function(result) - local gems = gem_check.parse_gem_list_output(result.stdout) - if gems[receipt.primary_source.package] then - return gems[receipt.primary_source.package] - else - error "Failed to find gem package version." - end - end) + return gem.get_installed_primary_package_version(receipt, server.root_dir) end, ["cargo"] = function(server, receipt) - return spawn.cargo({ - "install", - "--list", - "--root", - server.root_dir, - cwd = server.root_dir, - }):map_catching(function(result) - local crates = cargo_check.parse_installed_crates(result.stdout) - a.scheduler() -- needed because vim.fn.* call - local package = vim.fn.fnamemodify(receipt.primary_source.package, ":t") - if crates[package] then - return crates[package] - else - error "Failed to find cargo package version." - end - end) + return cargo.get_installed_primary_package_version(receipt, server.root_dir) + end, + ["composer"] = function(server, receipt) + return composer.get_installed_primary_package_version(receipt, server.root_dir) end, ["git"] = function(server) - return spawn.git({ - "rev-parse", - "--short", - "HEAD", - cwd = server.root_dir, - }):map_catching(function(result) - return vim.trim(result.stdout) - end) + return git.get_installed_revision(server.root_dir) + end, + ["go"] = function(server, receipt) + return go.get_installed_primary_package_version(receipt, server.root_dir) end, - ["opam"] = noop, - ["dotnet"] = noop, - ["r_package"] = noop, ["github_release_file"] = version_in_receipt "release", ["github_tag"] = version_in_receipt "tag", ["jdtls"] = version_in_receipt "version", } ---- Async function. +---@async ---@param server Server ---@return Result function M.check_server_version(server) |
