package apps import ( "strings" _ "embed" ) // embeddedVersionsRaw is the manifest written by the top-level build.sh // at compile time. Format is one `=` line per app — // e.g. `archive=v0.0.5-beta · 2026-05-01 14:00:00 · abc1234`. An empty // or missing value indicates the embedded slot was not populated (a fresh // clone where build.sh hasn't run yet). // //go:embed embedded/versions.txt var embeddedVersionsRaw []byte // EmbeddedVersions returns the build label of each tool baked into the // binary, keyed by canonical app name. Apps with empty values are // omitted. Caller copies the map if mutation is needed. func EmbeddedVersions() map[string]string { out := make(map[string]string, 5) for _, line := range strings.Split(string(embeddedVersionsRaw), "\n") { line = strings.TrimSpace(line) if line == "" || strings.HasPrefix(line, "#") { continue } eq := strings.IndexByte(line, '=') if eq <= 0 { continue } key := strings.TrimSpace(line[:eq]) val := strings.TrimSpace(line[eq+1:]) if val != "" { out[key] = val } } return out }