aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-11-09 00:01:46 +0100
committerWilliam Boman <william@redwill.se>2025-02-19 12:15:49 +0100
commit7dd3f5fb20e50a9746a648ec9f26ab90f3864c0d (patch)
tree29d2256c6f8fb200c2f07fc8cfba6f02b0c8cec0
parentrefactor!: change Package API (diff)
downloadmason-7dd3f5fb20e50a9746a648ec9f26ab90f3864c0d.tar
mason-7dd3f5fb20e50a9746a648ec9f26ab90f3864c0d.tar.gz
mason-7dd3f5fb20e50a9746a648ec9f26ab90f3864c0d.tar.bz2
mason-7dd3f5fb20e50a9746a648ec9f26ab90f3864c0d.tar.lz
mason-7dd3f5fb20e50a9746a648ec9f26ab90f3864c0d.tar.xz
mason-7dd3f5fb20e50a9746a648ec9f26ab90f3864c0d.tar.zst
mason-7dd3f5fb20e50a9746a648ec9f26ab90f3864c0d.zip
fix(expr): also interpolate table keys
-rw-r--r--lua/mason-core/installer/compiler/expr.lua3
-rw-r--r--tests/mason-core/installer/compiler/expr_spec.lua13
2 files changed, 16 insertions, 0 deletions
diff --git a/lua/mason-core/installer/compiler/expr.lua b/lua/mason-core/installer/compiler/expr.lua
index a07fc00d..cc5aa07a 100644
--- a/lua/mason-core/installer/compiler/expr.lua
+++ b/lua/mason-core/installer/compiler/expr.lua
@@ -95,6 +95,9 @@ function M.tbl_interpolate(tbl, ctx)
return Result.try(function(try)
local interpolated = {}
for k, v in pairs(tbl) do
+ if type(k) == "string" then
+ k = try(M.interpolate(k, ctx))
+ end
if type(v) == "string" then
interpolated[k] = try(M.interpolate(v, ctx))
elseif type(v) == "table" then
diff --git a/tests/mason-core/installer/compiler/expr_spec.lua b/tests/mason-core/installer/compiler/expr_spec.lua
index 944a5983..4f96c04f 100644
--- a/tests/mason-core/installer/compiler/expr_spec.lua
+++ b/tests/mason-core/installer/compiler/expr_spec.lua
@@ -270,4 +270,17 @@ describe("table interpolation", function()
}, {})
)
end)
+
+ it("should interpolate string keys", function()
+ assert.same(
+ Result.success {
+ ["a-1.2.3"] = "1.2.3",
+ [12] = "12",
+ },
+ expr.tbl_interpolate({
+ ["a-{{version}}"] = "{{version}}",
+ [12] = "12",
+ }, { version = "1.2.3" })
+ )
+ end)
end)