From 5b25e13f905b26cd4ab2be64fec072c18a943220 Mon Sep 17 00:00:00 2001 From: William Boman Date: Sun, 16 Apr 2023 03:22:37 +0200 Subject: feat(github): add $MASON_VERSION to build context (#1218) --- lua/mason-core/installer/registry/init.lua | 4 ++-- lua/mason-core/installer/registry/providers/github.lua | 18 +++++++++++++----- .../installer/registry/providers/github_spec.lua | 8 +++++++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/lua/mason-core/installer/registry/init.lua b/lua/mason-core/installer/registry/init.lua index 23b1a379..3ece857d 100644 --- a/lua/mason-core/installer/registry/init.lua +++ b/lua/mason-core/installer/registry/init.lua @@ -40,7 +40,7 @@ end ---@class InstallerProvider ---@field parse fun(source: RegistryPackageSource, purl: Purl, opts: PackageInstallOpts): Result ----@field install async fun(ctx: InstallContext, source: ParsedPackageSource): Result +---@field install async fun(ctx: InstallContext, source: ParsedPackageSource, purl: Purl): Result ---@class ParsedPackageSource @@ -166,7 +166,7 @@ function M.compile(spec, opts) return function(ctx) return Result.try(function(try) -- Run installer - try(parsed.provider.install(ctx, parsed.source)) + try(parsed.provider.install(ctx, parsed.source, parsed.purl)) -- Expand & register links if spec.bin then diff --git a/lua/mason-core/installer/registry/providers/github.lua b/lua/mason-core/installer/registry/providers/github.lua index 243f021d..4b552d8f 100644 --- a/lua/mason-core/installer/registry/providers/github.lua +++ b/lua/mason-core/installer/registry/providers/github.lua @@ -30,7 +30,8 @@ local build = { ---@async ---@param ctx InstallContext ---@param source ParsedGitHubBuildSource - install = function(ctx, source) + ---@param purl Purl + install = function(ctx, source, purl) local std = require "mason-core.installer.managers.std" return Result.try(function(try) try(std.clone(source.repo, { rev = source.rev })) @@ -44,11 +45,18 @@ local build = { async_uv.shutdown(stdin) async_uv.close(stdin) end), + env = { + MASON_VERSION = purl.version, + }, } end, win = function() local powershell = require "mason-core.managers.powershell" - return powershell.command(source.build.run, {}, ctx.spawn) + return powershell.command(source.build.run, { + env = { + MASON_VERSION = purl.version, + }, + }, ctx.spawn) end, }) end) @@ -188,11 +196,11 @@ end ---@async ---@param ctx InstallContext ---@param source ParsedGitHubReleaseSource | ParsedGitHubBuildSource -function M.install(ctx, source) +function M.install(ctx, source, purl) if source.asset then - return release.install(ctx, source) + return release.install(ctx, source, purl) elseif source.build then - return build.install(ctx, source) + return build.install(ctx, source, purl) else return Result.failure "Unknown source type." end diff --git a/tests/mason-core/installer/registry/providers/github_spec.lua b/tests/mason-core/installer/registry/providers/github_spec.lua index c70e0b10..58917f4d 100644 --- a/tests/mason-core/installer/registry/providers/github_spec.lua +++ b/tests/mason-core/installer/registry/providers/github_spec.lua @@ -401,13 +401,19 @@ describe("github provider :: installing", function() build = { run = [[npm install && npm run compile]], }, - }) + }, purl { version = "2023-03-09" }) end) assert.is_true(result:is_success()) assert.spy(std.clone).was_called(1) assert.spy(std.clone).was_called_with("namespace/name", { rev = "2023-03-09" }) assert.spy(ctx.spawn.bash).was_called(1) + assert.spy(ctx.spawn.bash).was_called_with(match.tbl_containing { + on_spawn = match.is_function(), + env = match.same { + MASON_VERSION = "2023-03-09", + }, + }) assert.spy(uv.write).was_called(2) assert.spy(uv.write).was_called_with(stdin, "set -euxo pipefail;\n") assert.spy(uv.write).was_called_with(stdin, "npm install && npm run compile") -- cgit v1.2.3-70-g09d2