mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-05-25 10:02:47 +00:00
fix(webicached): conf-driven variant exclusion; fix sttr darwin universal
- TagVariants now applies confVariants from releases.conf as case-folded substring matches before package-specific logic, removing the need to hardcode simple variant names in Go - gitea: variants = gogit (excludes Windows gogit builds) - lsd: variants = msvc (moved from Go to conf) - pwsh: variants = fxdependent fxdependentWinDesktop appimage - bun: variants = profile (moved from Go to conf) - sttr: darwin_all tagged as universal2 so arm64 and amd64 Mac users are served; pkg.tar.zst excluded (Arch Linux package format) - add .claude/ to .gitignore
This commit is contained in:
@@ -12,6 +12,7 @@ package classify
|
||||
import (
|
||||
"path"
|
||||
"regexp"
|
||||
"slices"
|
||||
"strings"
|
||||
|
||||
"github.com/webinstall/webi-installers/internal/buildmeta"
|
||||
@@ -268,16 +269,11 @@ func IsMetaAsset(name string) bool {
|
||||
return true
|
||||
}
|
||||
}
|
||||
for _, exact := range []string{
|
||||
return slices.Contains([]string{
|
||||
"install.sh",
|
||||
"install.ps1",
|
||||
"compat.json",
|
||||
"b3sums",
|
||||
"dist-manifest.json",
|
||||
} {
|
||||
if lower == exact {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}, lower)
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import (
|
||||
"github.com/webinstall/webi-installers/internal/releases/chromedist"
|
||||
"github.com/webinstall/webi-installers/internal/releases/cmake"
|
||||
"github.com/webinstall/webi-installers/internal/releases/fish"
|
||||
"github.com/webinstall/webi-installers/internal/releases/gitea"
|
||||
"github.com/webinstall/webi-installers/internal/releases/flutterdist"
|
||||
"github.com/webinstall/webi-installers/internal/releases/git"
|
||||
"github.com/webinstall/webi-installers/internal/releases/golang"
|
||||
@@ -41,7 +40,7 @@ import (
|
||||
"github.com/webinstall/webi-installers/internal/releases/postgres"
|
||||
"github.com/webinstall/webi-installers/internal/releases/sass"
|
||||
"github.com/webinstall/webi-installers/internal/releases/servicemandist"
|
||||
"github.com/webinstall/webi-installers/internal/releases/sttr"
|
||||
sttrdist "github.com/webinstall/webi-installers/internal/releases/sttr"
|
||||
"github.com/webinstall/webi-installers/internal/releases/uuidv7"
|
||||
"github.com/webinstall/webi-installers/internal/releases/watchexec"
|
||||
"github.com/webinstall/webi-installers/internal/releases/xcaddy"
|
||||
@@ -98,7 +97,7 @@ func Package(pkg string, conf *installerconf.Conf, d *rawcache.Dir, gitTagDir *r
|
||||
assets = append(assets, gitAssets...)
|
||||
}
|
||||
|
||||
TagVariants(pkg, assets)
|
||||
TagVariants(pkg, conf.Variants, assets)
|
||||
assets = expandUniversal(assets)
|
||||
NormalizeVersions(pkg, assets)
|
||||
processGitTagHEAD(assets)
|
||||
@@ -194,9 +193,19 @@ func NormalizeVersions(pkg string, assets []storage.Asset) {
|
||||
}
|
||||
}
|
||||
|
||||
// TagVariants applies package-specific variant tags to classified assets.
|
||||
// Each case delegates to a per-installer package under internal/releases/.
|
||||
func TagVariants(pkg string, assets []storage.Asset) {
|
||||
// TagVariants applies variant tags to classified assets.
|
||||
// conf variants (from releases.conf) are applied first: each variant is
|
||||
// matched as a case-folded substring of the filename. Package-specific
|
||||
// logic runs after for cases that require more than a substring check.
|
||||
func TagVariants(pkg string, confVariants []string, assets []storage.Asset) {
|
||||
for i := range assets {
|
||||
lower := strings.ToLower(assets[i].Filename)
|
||||
for _, v := range confVariants {
|
||||
if strings.Contains(lower, strings.ToLower(v)) {
|
||||
assets[i].Variants = append(assets[i].Variants, v)
|
||||
}
|
||||
}
|
||||
}
|
||||
switch pkg {
|
||||
case "atomicparsley":
|
||||
atomicparsleydist.TagVariants(assets)
|
||||
@@ -210,8 +219,6 @@ func TagVariants(pkg string, assets []storage.Asset) {
|
||||
flutterdist.TagVariants(assets)
|
||||
case "git":
|
||||
gitdist.TagVariants(assets)
|
||||
case "gitea":
|
||||
gitea.TagVariants(assets)
|
||||
case "lsd":
|
||||
lsddist.TagVariants(assets)
|
||||
case "node":
|
||||
|
||||
@@ -21,9 +21,6 @@ import (
|
||||
func TagVariants(assets []storage.Asset) {
|
||||
for i := range assets {
|
||||
lower := strings.ToLower(assets[i].Filename)
|
||||
if strings.Contains(lower, "-profile") {
|
||||
assets[i].Variants = append(assets[i].Variants, "profile")
|
||||
}
|
||||
if assets[i].Arch == "x86_64" {
|
||||
if strings.Contains(lower, "-baseline") {
|
||||
// Baseline is plain x86_64 — strip the suffix from
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
// Package lsd provides variant tagging for lsd (LSDeluxe) releases.
|
||||
//
|
||||
// lsd publishes .deb packages and windows-msvc builds alongside
|
||||
// the standard archives.
|
||||
// lsd publishes .deb packages alongside the standard archives.
|
||||
// msvc builds are excluded via releases.conf variants.
|
||||
package lsddist
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/webinstall/webi-installers/internal/storage"
|
||||
)
|
||||
import "github.com/webinstall/webi-installers/internal/storage"
|
||||
|
||||
// TagVariants tags lsd-specific build variants.
|
||||
func TagVariants(assets []storage.Asset) {
|
||||
@@ -16,8 +12,5 @@ func TagVariants(assets []storage.Asset) {
|
||||
if assets[i].Format == ".deb" {
|
||||
assets[i].Variants = append(assets[i].Variants, "deb")
|
||||
}
|
||||
if strings.Contains(strings.ToLower(assets[i].Filename), "-msvc") {
|
||||
assets[i].Variants = append(assets[i].Variants, "msvc")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,15 +23,8 @@ var winVersionRe = regexp.MustCompile(`(?i)-win(?:7|8|81|10|2008|2012|2016)`)
|
||||
func TagVariants(assets []storage.Asset) {
|
||||
for i := range assets {
|
||||
lower := strings.ToLower(assets[i].Filename)
|
||||
switch {
|
||||
case strings.Contains(lower, "-fxdependentwindesktop"):
|
||||
assets[i].Variants = append(assets[i].Variants, "fxdependentWinDesktop")
|
||||
case strings.Contains(lower, "-fxdependent"):
|
||||
assets[i].Variants = append(assets[i].Variants, "fxdependent")
|
||||
case winVersionRe.MatchString(lower):
|
||||
if winVersionRe.MatchString(lower) {
|
||||
assets[i].Variants = append(assets[i].Variants, "win-version-specific")
|
||||
case strings.HasSuffix(lower, ".appimage"):
|
||||
assets[i].Variants = append(assets[i].Variants, "appimage")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
// Package sttr provides variant tagging for sttr releases.
|
||||
//
|
||||
// sttr ships a darwin_all (universal macOS) archive alongside per-arch builds.
|
||||
// These universal archives have no arch in the filename — Go classifies them as
|
||||
// os="darwin", arch="" which the Node builds-cacher rejects with FORMAT CHANGE
|
||||
// (Node's classifier extracts a different arch from "all"). Production Node
|
||||
// also stores these as os="", arch="" (unroutable).
|
||||
//
|
||||
// .sbom.json files are software bill-of-materials metadata — not installable
|
||||
// archives. They pass through the format filter (ext="") but should not be
|
||||
// served.
|
||||
// sttr_Darwin_all.tar.gz is the only macOS release — a universal binary
|
||||
// with no arch token. Mark it universal2 so expandUniversal serves it
|
||||
// to both arm64 and amd64 Mac users.
|
||||
package sttrdist
|
||||
|
||||
import (
|
||||
@@ -17,20 +11,11 @@ import (
|
||||
"github.com/webinstall/webi-installers/internal/storage"
|
||||
)
|
||||
|
||||
// TagVariants tags sttr-specific build variants for exclusion from legacy export.
|
||||
// TagVariants tags sttr-specific build variants.
|
||||
func TagVariants(assets []storage.Asset) {
|
||||
for i := range assets {
|
||||
lower := strings.ToLower(assets[i].Filename)
|
||||
// darwin_all / Darwin_all: universal macOS archive with no arch info.
|
||||
// Node's classifier extracts a different result → FORMAT CHANGE.
|
||||
// Production LIVE_cache has these as os="", arch="" (unroutable).
|
||||
if strings.Contains(lower, "darwin_all") {
|
||||
assets[i].Variants = append(assets[i].Variants, "universal-all")
|
||||
continue
|
||||
}
|
||||
// .sbom.json: software bill-of-materials, not an installable archive.
|
||||
if strings.HasSuffix(lower, ".sbom.json") {
|
||||
assets[i].Variants = append(assets[i].Variants, "metadata")
|
||||
if strings.Contains(strings.ToLower(assets[i].Filename), "darwin_all") {
|
||||
assets[i].Arch = "universal2"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user