fix: separate general vs installer-specific vs legacy filters

- yq: move man_page_only from general isMetaAsset to yq-specific tagger
- node: restore .exe as stored asset with "bare-exe" variant (installable
  by Go, excluded from legacy)
- ollama: rename Ollama-darwin.zip variant from "installer" to "app"
  (.app bundle is installable by Go, just not by legacy Node.js)

The distinction: general classification/filter (isMetaAsset) handles
truly non-installable files. Installer-specific taggers handle assets
that are installable but need variant tagging. Legacy filter strips
variants and unsupported formats for Node.js compat.
This commit is contained in:
AJ ONeal
2026-03-10 14:58:37 -06:00
parent d8ecac6d6a
commit 6eeed80610
5 changed files with 39 additions and 11 deletions

View File

@@ -159,11 +159,12 @@ Status: `[x]` reviewed, `[-]` known acceptable, `[ ]` needs work
- [-] hugo-extended — 14 extras: non-extended assets leaking in; keep as-is for now
- [x] kubectx — asset_filter splits shared release
- [x] kubens — asset_filter splits shared release
- [x] node — nodedist "exe" format code doesn't map to a real file; skipped
- [x] ollama — Ollama-darwin.zip tagged as installer; .tgz filename
differs from live's .tar.gz but maps to same format
- [x] node — .exe bare binary stored with "bare-exe" variant (Go can serve,
legacy excludes); .msi tagged as installer
- [x] ollama — Ollama-darwin.zip tagged as "app" variant (Go can install,
legacy excludes); .tgz normalized to .tar.gz in filename
- [-] uuidv7 — exotic arches correctly classified; resolver filters by request
- [x] yq — man_page_only now caught by isMetaAsset
- [x] yq — man_page_only tagged as "man-pages" variant in yq-specific tagger
- [x] ffmpeg — asset_filter=ffmpeg excludes ffprobe/ffplay; .LICENSE/.README
now caught by isMetaAsset

View File

@@ -51,6 +51,7 @@ import (
"github.com/webinstall/webi-installers/internal/releases/ollama"
"github.com/webinstall/webi-installers/internal/releases/pwsh"
"github.com/webinstall/webi-installers/internal/releases/xcaddy"
"github.com/webinstall/webi-installers/internal/releases/yq"
"github.com/webinstall/webi-installers/internal/releases/zigdist"
"github.com/webinstall/webi-installers/internal/storage"
"github.com/webinstall/webi-installers/internal/storage/fsstore"
@@ -724,9 +725,7 @@ func expandNodeFile(pkg, version, channel, date string, lts bool, baseURL, file
case "msi":
formats = []string{".msi"}
case "exe":
// Node.js "exe" index entry doesn't correspond to a real download.
// The MSI installer is the actual Windows installer; skip exe.
return nil
formats = []string{".exe"}
case "7z":
formats = []string{".7z"}
case "":
@@ -1462,7 +1461,7 @@ func isMetaAsset(name string) bool {
for _, contains := range []string{
"checksums", "sha256sum", "sha512sum",
"buildable-artifact",
"man_page_only", ".LICENSE", ".README",
".LICENSE", ".README",
} {
if strings.Contains(lower, contains) {
return true
@@ -1498,6 +1497,8 @@ func tagVariants(pkg string, _ *installerconf.Conf, assets []storage.Asset) {
pwsh.TagVariants(assets)
case "xcaddy":
xcaddy.TagVariants(assets)
case "yq":
yq.TagVariants(assets)
}
}

View File

@@ -3,11 +3,17 @@ package node
import "github.com/webinstall/webi-installers/internal/storage"
// TagVariants tags node-specific build variants.
// Only .msi files are installers; .exe is the bare binary.
//
// .msi is a Windows installer. .exe is the bare node.exe binary — valid
// and installable by Go, but not present in the legacy Node.js cache
// (the nodedist classifier doesn't construct that filename).
func TagVariants(assets []storage.Asset) {
for i := range assets {
if assets[i].Format == ".msi" {
switch assets[i].Format {
case ".msi":
assets[i].Variants = append(assets[i].Variants, "installer")
case ".exe":
assets[i].Variants = append(assets[i].Variants, "bare-exe")
}
}
}

View File

@@ -20,8 +20,9 @@ func TagVariants(assets []storage.Asset) {
}
}
// Ollama-darwin.zip (capital O) is the macOS .app bundle.
// Installable by Go (extract .app), but not in legacy cache.
if strings.HasPrefix(assets[i].Filename, "Ollama-") {
assets[i].Variants = append(assets[i].Variants, "installer")
assets[i].Variants = append(assets[i].Variants, "app")
}
}
}

View File

@@ -0,0 +1,19 @@
// Package yq provides variant tagging for yq releases.
//
// yq publishes a man-page-only tarball alongside binaries.
package yq
import (
"strings"
"github.com/webinstall/webi-installers/internal/storage"
)
// TagVariants tags yq-specific build variants.
func TagVariants(assets []storage.Asset) {
for i := range assets {
if strings.Contains(strings.ToLower(assets[i].Filename), "man_page_only") {
assets[i].Variants = append(assets[i].Variants, "man-pages")
}
}
}