aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/jobs/version-check/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/nvim-lsp-installer/jobs/version-check/init.lua')
-rw-r--r--lua/nvim-lsp-installer/jobs/version-check/init.lua95
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)