aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-06-17 15:40:51 +0200
committerGitHub <noreply@github.com>2023-06-17 15:40:51 +0200
commited989357ec71ed8d91deda7122a93f7570e19041 (patch)
tree88216e6504f520d3b32621f1f66bbf03efaf0f77 /lua
parentchore(main): release 1.2.1 (#1355) (diff)
downloadmason-ed989357ec71ed8d91deda7122a93f7570e19041.tar
mason-ed989357ec71ed8d91deda7122a93f7570e19041.tar.gz
mason-ed989357ec71ed8d91deda7122a93f7570e19041.tar.bz2
mason-ed989357ec71ed8d91deda7122a93f7570e19041.tar.lz
mason-ed989357ec71ed8d91deda7122a93f7570e19041.tar.xz
mason-ed989357ec71ed8d91deda7122a93f7570e19041.tar.zst
mason-ed989357ec71ed8d91deda7122a93f7570e19041.zip
refactor(installer): hoist version validation to the compiled installation entrypoint (#1357)
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-core/installer/registry/init.lua10
-rw-r--r--lua/mason-core/installer/registry/providers/cargo.lua16
-rw-r--r--lua/mason-core/installer/registry/providers/composer.lua9
-rw-r--r--lua/mason-core/installer/registry/providers/gem.lua13
-rw-r--r--lua/mason-core/installer/registry/providers/github/release.lua5
-rw-r--r--lua/mason-core/installer/registry/providers/golang.lua12
-rw-r--r--lua/mason-core/installer/registry/providers/npm.lua5
-rw-r--r--lua/mason-core/installer/registry/providers/pypi.lua4
-rw-r--r--lua/mason-core/installer/registry/util.lua2
9 files changed, 22 insertions, 54 deletions
diff --git a/lua/mason-core/installer/registry/init.lua b/lua/mason-core/installer/registry/init.lua
index 27a7da2a..6b03296f 100644
--- a/lua/mason-core/installer/registry/init.lua
+++ b/lua/mason-core/installer/registry/init.lua
@@ -6,6 +6,7 @@ local a = require "mason-core.async"
local link = require "mason-core.installer.registry.link"
local log = require "mason-core.log"
local schemas = require "mason-core.installer.registry.schemas"
+local util = require "mason-core.installer.registry.util"
local M = {}
@@ -132,6 +133,7 @@ function M.parse(spec, opts)
return {
provider = provider,
source = parsed_source,
+ raw_source = source,
purl = purl,
}
end):on_failure(function(err)
@@ -162,13 +164,19 @@ function M.compile(spec, opts)
{ _.T, _.identity },
}
- ---@type { purl: Purl, provider: InstallerProvider, source: ParsedPackageSource }
+ ---@type { purl: Purl, provider: InstallerProvider, source: ParsedPackageSource, raw_source: RegistryPackageSource }
local parsed = try(M.parse(spec, opts):map_err(map_parse_err))
---@async
---@param ctx InstallContext
return function(ctx)
return Result.try(function(try)
+ if ctx.opts.version then
+ try(util.ensure_valid_version(function()
+ return parsed.provider.get_versions(parsed.purl, parsed.raw_source)
+ end))
+ end
+
-- Run installer
try(parsed.provider.install(ctx, parsed.source, parsed.purl))
diff --git a/lua/mason-core/installer/registry/providers/cargo.lua b/lua/mason-core/installer/registry/providers/cargo.lua
index 464fba5b..312a2938 100644
--- a/lua/mason-core/installer/registry/providers/cargo.lua
+++ b/lua/mason-core/installer/registry/providers/cargo.lua
@@ -48,17 +48,11 @@ end
function M.install(ctx, source)
local cargo = require "mason-core.installer.managers.cargo"
- return Result.try(function(try)
- try(util.ensure_valid_version(function()
- return providers.crates.get_all_versions(source.crate)
- end))
-
- try(cargo.install(source.crate, source.version, {
- git = source.git,
- features = source.features,
- locked = source.locked,
- }))
- end)
+ return cargo.install(source.crate, source.version, {
+ git = source.git,
+ features = source.features,
+ locked = source.locked,
+ })
end
---@async
diff --git a/lua/mason-core/installer/registry/providers/composer.lua b/lua/mason-core/installer/registry/providers/composer.lua
index 7cc03ed8..d85dd2ba 100644
--- a/lua/mason-core/installer/registry/providers/composer.lua
+++ b/lua/mason-core/installer/registry/providers/composer.lua
@@ -21,14 +21,7 @@ end
---@param source ParsedComposerSource
function M.install(ctx, source)
local composer = require "mason-core.installer.managers.composer"
-
- return Result.try(function(try)
- try(util.ensure_valid_version(function()
- return providers.packagist.get_all_versions(source.package)
- end))
-
- try(composer.install(source.package, source.version))
- end)
+ return composer.install(source.package, source.version)
end
---@async
diff --git a/lua/mason-core/installer/registry/providers/gem.lua b/lua/mason-core/installer/registry/providers/gem.lua
index 100046d9..9653f116 100644
--- a/lua/mason-core/installer/registry/providers/gem.lua
+++ b/lua/mason-core/installer/registry/providers/gem.lua
@@ -32,16 +32,9 @@ end
---@param source ParsedGemSource
function M.install(ctx, source)
local gem = require "mason-core.installer.managers.gem"
-
- return Result.try(function(try)
- try(util.ensure_valid_version(function()
- return providers.rubygems.get_all_versions(source.package)
- end))
-
- try(gem.install(source.package, source.version, {
- extra_packages = source.extra_packages,
- }))
- end)
+ return gem.install(source.package, source.version, {
+ extra_packages = source.extra_packages,
+ })
end
---@async
diff --git a/lua/mason-core/installer/registry/providers/github/release.lua b/lua/mason-core/installer/registry/providers/github/release.lua
index 9d01ba32..5fe95cab 100644
--- a/lua/mason-core/installer/registry/providers/github/release.lua
+++ b/lua/mason-core/installer/registry/providers/github/release.lua
@@ -88,13 +88,8 @@ end
---@param source ParsedGitHubReleaseSource
function M.install(ctx, source)
local std = require "mason-core.installer.managers.std"
- local providers = require "mason-core.providers"
return Result.try(function(try)
- try(util.ensure_valid_version(function()
- return providers.github.get_all_release_versions(source.repo)
- end))
-
for __, download in ipairs(source.downloads) do
a.scheduler()
local out_dir = vim.fn.fnamemodify(download.out_file, ":h")
diff --git a/lua/mason-core/installer/registry/providers/golang.lua b/lua/mason-core/installer/registry/providers/golang.lua
index f8e68bab..40327bb2 100644
--- a/lua/mason-core/installer/registry/providers/golang.lua
+++ b/lua/mason-core/installer/registry/providers/golang.lua
@@ -36,15 +36,9 @@ end
function M.install(ctx, source)
local golang = require "mason-core.installer.managers.golang"
- return Result.try(function(try)
- try(util.ensure_valid_version(function()
- return providers.golang.get_all_versions(source.package)
- end))
-
- try(golang.install(source.package, source.version, {
- extra_packages = source.extra_packages,
- }))
- end)
+ return golang.install(source.package, source.version, {
+ extra_packages = source.extra_packages,
+ })
end
---@async
diff --git a/lua/mason-core/installer/registry/providers/npm.lua b/lua/mason-core/installer/registry/providers/npm.lua
index 85b204c8..d1865b96 100644
--- a/lua/mason-core/installer/registry/providers/npm.lua
+++ b/lua/mason-core/installer/registry/providers/npm.lua
@@ -35,13 +35,8 @@ end
---@param source ParsedNpmSource
function M.install(ctx, source)
local npm = require "mason-core.installer.managers.npm"
- local providers = require "mason-core.providers"
return Result.try(function(try)
- try(util.ensure_valid_version(function()
- return providers.npm.get_all_versions(source.package)
- end))
-
try(npm.init())
try(npm.install(source.package, source.version, {
extra_packages = source.extra_packages,
diff --git a/lua/mason-core/installer/registry/providers/pypi.lua b/lua/mason-core/installer/registry/providers/pypi.lua
index 6efb9730..c162c120 100644
--- a/lua/mason-core/installer/registry/providers/pypi.lua
+++ b/lua/mason-core/installer/registry/providers/pypi.lua
@@ -41,10 +41,6 @@ function M.install(ctx, source)
local pypi = require "mason-core.installer.managers.pypi"
return Result.try(function(try)
- try(util.ensure_valid_version(function()
- return providers.pypi.get_all_versions(source.package)
- end))
-
try(pypi.init {
upgrade_pip = source.pip.upgrade,
install_extra_args = source.pip.extra_args,
diff --git a/lua/mason-core/installer/registry/util.lua b/lua/mason-core/installer/registry/util.lua
index ed98b738..04492bbf 100644
--- a/lua/mason-core/installer/registry/util.lua
+++ b/lua/mason-core/installer/registry/util.lua
@@ -38,7 +38,7 @@ end
---Checks whether a custom version of a package installation corresponds to a valid version.
---@async
----@param versions_thunk async fun(): Result Result<string>
+---@param versions_thunk async fun(): Result Result<string[]>
function M.ensure_valid_version(versions_thunk)
local ctx = installer.context()
local version = ctx.opts.version