mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-04-06 18:36:50 +00:00
ref: simplify variant taggers to plain functions with switch dispatch
Drop VariantTagger interface and map-based lookup. Each per-installer package now exports a plain TagVariants function. webicached dispatches via a switch on package name, consistent with fetchRaw and classifyPackage.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -9,6 +9,7 @@ install-*.ps1
|
||||
/fetchraw
|
||||
/inspect
|
||||
/uaparse
|
||||
/webicached
|
||||
/zigtest
|
||||
/distributables.csv
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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") {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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" {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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"} {
|
||||
|
||||
@@ -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") {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user