diff --git a/.gitignore b/.gitignore index df576e8..2de7bfe 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ install-*.ps1 /fetchraw /inspect /uaparse +/webicached /zigtest /distributables.csv diff --git a/cmd/webicached/main.go b/cmd/webicached/main.go index 4eed606..b7d764c 100644 --- a/cmd/webicached/main.go +++ b/cmd/webicached/main.go @@ -1460,23 +1460,26 @@ func isMetaAsset(name string) bool { return false } -// variantTaggers maps package names to their variant tagger. -// Each tagger lives in its own package under internal/releases/. -var variantTaggers = map[string]storage.VariantTagger{ - "bun": bun.Tagger, - "fish": fish.Tagger, - "git": git.Tagger, - "lsd": lsd.Tagger, - "node": node.Tagger, - "ollama": ollama.Tagger, - "pwsh": pwsh.Tagger, - "xcaddy": xcaddy.Tagger, -} - // tagVariants applies package-specific variant tags to classified assets. +// Each case delegates to a per-installer package under internal/releases/. func tagVariants(pkg string, _ *installerconf.Conf, assets []storage.Asset) { - if t, ok := variantTaggers[pkg]; ok { - t.TagVariants(assets) + switch pkg { + case "bun": + bun.TagVariants(assets) + case "fish": + fish.TagVariants(assets) + case "git": + git.TagVariants(assets) + case "lsd": + lsd.TagVariants(assets) + case "node": + node.TagVariants(assets) + case "ollama": + ollama.TagVariants(assets) + case "pwsh": + pwsh.TagVariants(assets) + case "xcaddy": + xcaddy.TagVariants(assets) } } diff --git a/internal/releases/bun/variants.go b/internal/releases/bun/variants.go index 825abf4..9c793a4 100644 --- a/internal/releases/bun/variants.go +++ b/internal/releases/bun/variants.go @@ -11,12 +11,8 @@ import ( "github.com/webinstall/webi-installers/internal/storage" ) -// Tagger implements storage.VariantTagger for Bun. -var Tagger storage.VariantTagger = tagger{} - -type tagger struct{} - -func (tagger) TagVariants(assets []storage.Asset) { +// TagVariants tags bun-specific build variants and remaps arch fields. +func TagVariants(assets []storage.Asset) { for i := range assets { lower := strings.ToLower(assets[i].Filename) if strings.Contains(lower, "-profile") { diff --git a/internal/releases/fish/variants.go b/internal/releases/fish/variants.go index 21d411b..06abe54 100644 --- a/internal/releases/fish/variants.go +++ b/internal/releases/fish/variants.go @@ -5,12 +5,8 @@ package fish import "github.com/webinstall/webi-installers/internal/storage" -// Tagger implements storage.VariantTagger for fish. -var Tagger storage.VariantTagger = tagger{} - -type tagger struct{} - -func (tagger) TagVariants(assets []storage.Asset) { +// TagVariants tags fish-specific build variants. +func TagVariants(assets []storage.Asset) { for i := range assets { if assets[i].Format == ".pkg" { assets[i].Variants = append(assets[i].Variants, "installer") diff --git a/internal/releases/git/variants.go b/internal/releases/git/variants.go index a94f212..e17ab40 100644 --- a/internal/releases/git/variants.go +++ b/internal/releases/git/variants.go @@ -11,12 +11,8 @@ import ( "github.com/webinstall/webi-installers/internal/storage" ) -// Tagger implements storage.VariantTagger for Git. -var Tagger storage.VariantTagger = tagger{} - -type tagger struct{} - -func (tagger) TagVariants(assets []storage.Asset) { +// TagVariants tags git-specific build variants. +func TagVariants(assets []storage.Asset) { for i := range assets { lower := strings.ToLower(assets[i].Filename) if assets[i].Format == ".exe" { diff --git a/internal/releases/lsd/variants.go b/internal/releases/lsd/variants.go index 00f7fae..2daf639 100644 --- a/internal/releases/lsd/variants.go +++ b/internal/releases/lsd/variants.go @@ -10,12 +10,8 @@ import ( "github.com/webinstall/webi-installers/internal/storage" ) -// Tagger implements storage.VariantTagger for lsd. -var Tagger storage.VariantTagger = tagger{} - -type tagger struct{} - -func (tagger) TagVariants(assets []storage.Asset) { +// TagVariants tags lsd-specific build variants. +func TagVariants(assets []storage.Asset) { for i := range assets { if assets[i].Format == ".deb" { assets[i].Variants = append(assets[i].Variants, "deb") diff --git a/internal/releases/node/variants.go b/internal/releases/node/variants.go index f46e824..c833f0e 100644 --- a/internal/releases/node/variants.go +++ b/internal/releases/node/variants.go @@ -2,13 +2,9 @@ package node import "github.com/webinstall/webi-installers/internal/storage" -// Tagger implements storage.VariantTagger for Node.js. +// TagVariants tags node-specific build variants. // Only .msi files are installers; .exe is the bare binary. -var Tagger storage.VariantTagger = tagger{} - -type tagger struct{} - -func (tagger) TagVariants(assets []storage.Asset) { +func TagVariants(assets []storage.Asset) { for i := range assets { if assets[i].Format == ".msi" { assets[i].Variants = append(assets[i].Variants, "installer") diff --git a/internal/releases/ollama/variants.go b/internal/releases/ollama/variants.go index 75f3242..346663c 100644 --- a/internal/releases/ollama/variants.go +++ b/internal/releases/ollama/variants.go @@ -10,12 +10,8 @@ import ( "github.com/webinstall/webi-installers/internal/storage" ) -// Tagger implements storage.VariantTagger for Ollama. -var Tagger storage.VariantTagger = tagger{} - -type tagger struct{} - -func (tagger) TagVariants(assets []storage.Asset) { +// TagVariants tags ollama-specific build variants. +func TagVariants(assets []storage.Asset) { for i := range assets { lower := strings.ToLower(assets[i].Filename) for _, v := range []string{"rocm", "jetpack5", "jetpack6"} { diff --git a/internal/releases/pwsh/variants.go b/internal/releases/pwsh/variants.go index f9db5f3..f5f8e8a 100644 --- a/internal/releases/pwsh/variants.go +++ b/internal/releases/pwsh/variants.go @@ -10,12 +10,8 @@ import ( "github.com/webinstall/webi-installers/internal/storage" ) -// Tagger implements storage.VariantTagger for PowerShell. -var Tagger storage.VariantTagger = tagger{} - -type tagger struct{} - -func (tagger) TagVariants(assets []storage.Asset) { +// TagVariants tags pwsh-specific build variants. +func TagVariants(assets []storage.Asset) { for i := range assets { lower := strings.ToLower(assets[i].Filename) if strings.Contains(lower, "-fxdependentwindesktop") { diff --git a/internal/releases/xcaddy/variants.go b/internal/releases/xcaddy/variants.go index 2738ffb..8c89f69 100644 --- a/internal/releases/xcaddy/variants.go +++ b/internal/releases/xcaddy/variants.go @@ -5,12 +5,8 @@ package xcaddy import "github.com/webinstall/webi-installers/internal/storage" -// Tagger implements storage.VariantTagger for xcaddy. -var Tagger storage.VariantTagger = tagger{} - -type tagger struct{} - -func (tagger) TagVariants(assets []storage.Asset) { +// TagVariants tags xcaddy-specific build variants. +func TagVariants(assets []storage.Asset) { for i := range assets { if assets[i].Format == ".deb" { assets[i].Variants = append(assets[i].Variants, "deb") diff --git a/internal/storage/storage.go b/internal/storage/storage.go index 492b856..07a8470 100644 --- a/internal/storage/storage.go +++ b/internal/storage/storage.go @@ -51,12 +51,6 @@ type Store interface { BeginRefresh(ctx context.Context, pkg string) (RefreshTx, error) } -// VariantTagger applies package-specific variant tags to classified assets. -// Implementations live in per-installer packages (e.g. internal/releases/bun). -type VariantTagger interface { - TagVariants(assets []Asset) -} - // RefreshTx is a write transaction for replacing a package's assets. type RefreshTx interface { // Put stages assets to be written. May be called multiple times