diff --git a/COMPARISON.md b/COMPARISON.md index c1f3714..60a1233 100644 --- a/COMPARISON.md +++ b/COMPARISON.md @@ -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 diff --git a/cmd/webicached/main.go b/cmd/webicached/main.go index 0e96689..f05d3bb 100644 --- a/cmd/webicached/main.go +++ b/cmd/webicached/main.go @@ -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) } } diff --git a/internal/releases/node/variants.go b/internal/releases/node/variants.go index c833f0e..66f8a36 100644 --- a/internal/releases/node/variants.go +++ b/internal/releases/node/variants.go @@ -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") } } } diff --git a/internal/releases/ollama/variants.go b/internal/releases/ollama/variants.go index c4056e0..eeb0882 100644 --- a/internal/releases/ollama/variants.go +++ b/internal/releases/ollama/variants.go @@ -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") } } } diff --git a/internal/releases/yq/variants.go b/internal/releases/yq/variants.go new file mode 100644 index 0000000..d87494a --- /dev/null +++ b/internal/releases/yq/variants.go @@ -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") + } + } +}