mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-04-06 18:36:50 +00:00
ref: move IsMetaAsset to classify package, share between tools
Moved isMetaAsset from cmd/webicached to classify.IsMetaAsset so both webicached and comparecache use the same logic. Removed duplicated isMetaFile from comparecache. The comparecache isLiveNoise now delegates to classify.IsMetaAsset and adds live-specific filters (.deb, .rpm, -src-).
This commit is contained in:
@@ -24,6 +24,7 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/webinstall/webi-installers/internal/classify"
|
||||
"github.com/webinstall/webi-installers/internal/lexver"
|
||||
)
|
||||
|
||||
@@ -416,7 +417,7 @@ func categorize(d *packageDiff) {
|
||||
metaOnlyInLive := 0
|
||||
nonMetaOnlyInLive := 0
|
||||
for _, f := range d.OnlyInLive {
|
||||
if isMetaFile(f) {
|
||||
if classify.IsMetaAsset(f) {
|
||||
metaOnlyInLive++
|
||||
} else {
|
||||
nonMetaOnlyInLive++
|
||||
@@ -425,7 +426,7 @@ func categorize(d *packageDiff) {
|
||||
metaOnlyInGo := 0
|
||||
nonMetaOnlyInGo := 0
|
||||
for _, f := range d.OnlyInGo {
|
||||
if isMetaFile(f) {
|
||||
if classify.IsMetaAsset(f) {
|
||||
metaOnlyInGo++
|
||||
} else {
|
||||
nonMetaOnlyInGo++
|
||||
@@ -463,79 +464,30 @@ func categorize(d *packageDiff) {
|
||||
// isLiveNoise returns true for filenames that the Node.js cache keeps
|
||||
// but Go intentionally filters out. Pre-filtering these from the live
|
||||
// side prevents them from appearing as live-extra-assets noise.
|
||||
//
|
||||
// This includes everything classify.IsMetaAsset catches plus formats
|
||||
// that Go's legacy export strips (.deb, .rpm, etc.).
|
||||
func isLiveNoise(name string) bool {
|
||||
if classify.IsMetaAsset(name) {
|
||||
return true
|
||||
}
|
||||
|
||||
lower := strings.ToLower(name)
|
||||
|
||||
// Formats Go filters from legacy export.
|
||||
// Formats Go filters from legacy export but Node.js keeps.
|
||||
for _, suffix := range []string{
|
||||
".deb", ".rpm", ".asc", ".sig", ".gpg",
|
||||
".sbom", ".spdx", ".pem", ".sigstore",
|
||||
".sha256", ".sha256sum", ".sha512", ".sha512sum",
|
||||
".md5", ".md5sum",
|
||||
".d.ts", ".pub",
|
||||
".deb", ".rpm", ".gpg",
|
||||
} {
|
||||
if strings.HasSuffix(lower, suffix) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// Exact basenames.
|
||||
base := lower
|
||||
if i := strings.LastIndex(base, "/"); i >= 0 {
|
||||
base = base[i+1:]
|
||||
}
|
||||
for _, exact := range []string{
|
||||
"sha256sums", "sha512sums",
|
||||
"checksums.txt", "install.sh", "install.ps1",
|
||||
} {
|
||||
if base == exact {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// Substring patterns.
|
||||
for _, pat := range []string{
|
||||
"checksums", "sha256sum", "sha512sum",
|
||||
} {
|
||||
if strings.Contains(lower, pat) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// .txt files (release notes, checksums, etc.) — not installable.
|
||||
if strings.HasSuffix(lower, ".txt") {
|
||||
// Source tarballs (e.g. gitea-src-1.25.4.tar.gz).
|
||||
if strings.Contains(lower, "-src-") || strings.HasPrefix(lower, "src-") {
|
||||
return true
|
||||
}
|
||||
|
||||
// Source tarballs (e.g. gitea-src-1.25.4.tar.gz) — not installable.
|
||||
if strings.Contains(lower, "-src-") || strings.HasPrefix(lower, "src-") ||
|
||||
lower == "src.tar.gz" || lower == "src.zip" {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func isMetaFile(name string) bool {
|
||||
lower := strings.ToLower(name)
|
||||
for _, suffix := range []string{
|
||||
".sha256", ".sha256sum", ".sha512", ".sha512sum",
|
||||
".md5", ".md5sum", ".sig", ".asc", ".pem",
|
||||
"checksums.txt", "sha256sums", "sha512sums",
|
||||
".sbom", ".spdx", ".json.sig", ".sigstore",
|
||||
".d.ts", ".pub",
|
||||
} {
|
||||
if strings.HasSuffix(lower, suffix) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
for _, contains := range []string{
|
||||
"checksums", "sha256sum", "sha512sum",
|
||||
} {
|
||||
if strings.Contains(lower, contains) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
@@ -1449,39 +1449,8 @@ func classifyZigDist(d *rawcache.Dir) ([]storage.Asset, error) {
|
||||
|
||||
// --- Helpers ---
|
||||
|
||||
func isMetaAsset(name string) bool {
|
||||
lower := strings.ToLower(name)
|
||||
for _, suffix := range []string{
|
||||
".txt",
|
||||
".sha256", ".sha256sum", ".sha512", ".sha512sum",
|
||||
".md5", ".md5sum", ".sig", ".asc", ".pem",
|
||||
".sbom", ".spdx", ".json.sig", ".sigstore",
|
||||
"_src.tar.gz", "_src.tar.xz", "_src.zip",
|
||||
"-src.tar.gz", "-src.tar.xz", "-src.zip",
|
||||
".d.ts", ".pub",
|
||||
} {
|
||||
if strings.HasSuffix(lower, suffix) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
for _, contains := range []string{
|
||||
"checksums", "sha256sum", "sha512sum",
|
||||
"buildable-artifact",
|
||||
".LICENSE", ".README",
|
||||
} {
|
||||
if strings.Contains(lower, contains) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
for _, exact := range []string{
|
||||
"install.sh", "install.ps1", "compat.json",
|
||||
} {
|
||||
if lower == exact {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
// isMetaAsset delegates to classify.IsMetaAsset.
|
||||
var isMetaAsset = classify.IsMetaAsset
|
||||
|
||||
// tagVariants applies package-specific variant tags to classified assets.
|
||||
// Each case delegates to a per-installer package under internal/releases/.
|
||||
|
||||
@@ -205,3 +205,39 @@ func detectFormat(lower string) buildmeta.Format {
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// IsMetaAsset returns true if the filename is a non-installable meta file
|
||||
// (checksums, signatures, source tarballs, documentation, etc.).
|
||||
func IsMetaAsset(name string) bool {
|
||||
lower := strings.ToLower(name)
|
||||
for _, suffix := range []string{
|
||||
".txt",
|
||||
".sha256", ".sha256sum", ".sha512", ".sha512sum",
|
||||
".md5", ".md5sum", ".sig", ".asc", ".pem",
|
||||
".sbom", ".spdx", ".json.sig", ".sigstore",
|
||||
"_src.tar.gz", "_src.tar.xz", "_src.zip",
|
||||
"-src.tar.gz", "-src.tar.xz", "-src.zip",
|
||||
".d.ts", ".pub",
|
||||
} {
|
||||
if strings.HasSuffix(lower, suffix) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
for _, substr := range []string{
|
||||
"checksums", "sha256sum", "sha512sum",
|
||||
"buildable-artifact",
|
||||
".LICENSE", ".README",
|
||||
} {
|
||||
if strings.Contains(lower, substr) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
for _, exact := range []string{
|
||||
"install.sh", "install.ps1", "compat.json",
|
||||
} {
|
||||
if lower == exact {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user