aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/receipt.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2025-05-06 02:57:26 +0200
committerWilliam Boman <william@redwill.se>2025-05-06 02:57:26 +0200
commitf74983e782b7394f5737df99f8823e196a23291d (patch)
tree15ee15a22ad4e8dff13c050a361c99f08d831212 /lua/mason-core/receipt.lua
parentrefactor(registry): change lua registries to not instantiate Package themselves (diff)
downloadmason-f74983e782b7394f5737df99f8823e196a23291d.tar
mason-f74983e782b7394f5737df99f8823e196a23291d.tar.gz
mason-f74983e782b7394f5737df99f8823e196a23291d.tar.bz2
mason-f74983e782b7394f5737df99f8823e196a23291d.tar.lz
mason-f74983e782b7394f5737df99f8823e196a23291d.tar.xz
mason-f74983e782b7394f5737df99f8823e196a23291d.tar.zst
mason-f74983e782b7394f5737df99f8823e196a23291d.zip
feat: associate package instances with registry source and record it in receipt
Diffstat (limited to 'lua/mason-core/receipt.lua')
-rw-r--r--lua/mason-core/receipt.lua27
1 files changed, 21 insertions, 6 deletions
diff --git a/lua/mason-core/receipt.lua b/lua/mason-core/receipt.lua
index ecd20a2c..42a7e882 100644
--- a/lua/mason-core/receipt.lua
+++ b/lua/mason-core/receipt.lua
@@ -12,13 +12,16 @@ local M = {}
---@field share? table<string, string>
---@field opt? table<string, string>
+---@alias InstallReceiptRegistry { proto: '"github"' | '"lua"' | '"file"' }
+
---@class InstallReceipt
----@field public name string
----@field public schema_version InstallReceiptSchemaVersion
----@field public metrics {start_time:integer, completion_time:integer}
----@field public source InstallReceiptSource
----@field public links InstallReceiptLinks
----@field public install_options PackageInstallOpts
+---@field name string
+---@field schema_version InstallReceiptSchemaVersion
+---@field metrics {start_time:integer, completion_time:integer}
+---@field source InstallReceiptSource
+---@field links InstallReceiptLinks
+---@field install_options PackageInstallOpts
+---@field registry InstallReceiptRegistry
local InstallReceipt = {}
InstallReceipt.__index = InstallReceipt
@@ -70,6 +73,10 @@ function InstallReceipt:get_raw_source()
end
end
+function InstallReceipt:get_registry()
+ return self.registry
+end
+
function InstallReceipt:get_install_options()
return self.install_options
end
@@ -148,12 +155,19 @@ function InstallReceiptBuilder:with_start_time(seconds, microseconds)
return self
end
+---@param registry InstallReceiptRegistry
+function InstallReceiptBuilder:with_registry(registry)
+ self.registry = registry
+ return self
+end
+
function InstallReceiptBuilder:build()
assert(self.name, "name is required")
assert(self.start_time, "start_time is required")
assert(self.completion_time, "completion_time is required")
assert(self.source, "source is required")
assert(self.install_options, "install_options is required")
+ assert(self.registry, "registry is required")
return InstallReceipt:new {
name = self.name,
schema_version = "2.0",
@@ -163,6 +177,7 @@ function InstallReceiptBuilder:build()
},
install_options = self.install_options,
source = self.source,
+ registry = self.registry,
links = self.links,
}
end