diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-03-12 18:08:41 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-03-12 18:08:41 +0900 |
| commit | faac5c4a839e81323760a9a6cd09407f769eef10 (patch) | |
| tree | c524de485b45456c40b289d5628316e250b52773 | |
| parent | 620062cca92b6241c15f96f86a9c6f0f7882ecca (diff) | |
internal/rosa: store artifact results in struct
This is cleaner and makes adding additional values easier.
Signed-off-by: Ophestra <cat@gensokyo.uk>
| -rw-r--r-- | internal/rosa/all.go | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/internal/rosa/all.go b/internal/rosa/all.go index 8817fb02..d1116e88 100644 --- a/internal/rosa/all.go +++ b/internal/rosa/all.go @@ -256,9 +256,10 @@ var ( artifactsM [PresetEnd]Metadata // artifacts stores the result of Metadata.f. - artifacts [_toolchainEnd][len(artifactsM)]pkg.Artifact - // versions stores the version of [PArtifact]. - versions [_toolchainEnd][len(artifactsM)]string + artifacts [_toolchainEnd][len(artifactsM)]struct { + a pkg.Artifact + v string + } // artifactsOnce is for lazy initialisation of artifacts. artifactsOnce [_toolchainEnd][len(artifactsM)]sync.Once ) @@ -266,20 +267,23 @@ var ( // GetMetadata returns [Metadata] of a [PArtifact]. func GetMetadata(p PArtifact) *Metadata { return &artifactsM[p] } -// Load returns the resulting [pkg.Artifact] of [PArtifact]. -func (t Toolchain) Load(p PArtifact) pkg.Artifact { +// construct constructs a [pkg.Artifact] corresponding to a [PArtifact] once. +func (t Toolchain) construct(p PArtifact) { artifactsOnce[t][p].Do(func() { - artifacts[t][p], versions[t][p] = artifactsM[p].f(t) + artifacts[t][p].a, artifacts[t][p].v = artifactsM[p].f(t) }) - return artifacts[t][p] +} + +// Load returns the resulting [pkg.Artifact] of [PArtifact]. +func (t Toolchain) Load(p PArtifact) pkg.Artifact { + t.construct(p) + return artifacts[t][p].a } // Version returns the version string of [PArtifact]. func (t Toolchain) Version(p PArtifact) string { - artifactsOnce[t][p].Do(func() { - artifacts[t][p], versions[t][p] = artifactsM[p].f(t) - }) - return versions[t][p] + t.construct(p) + return artifacts[t][p].v } // ResolveName returns a [PArtifact] by name. |
