// Command module-meta-dump loads ./modules via the same loader the // controller uses (module.LoadDir) and prints the WI-07 UI-metadata // enrichment as JSON — used by controller/.test/wi07-diff-maps.mjs to // prove the manifest-derived values match the dashboard's old inline // maps. Run from the repo root: go run ./tools/module-meta-dump package main import ( "encoding/json" "fmt" "os" module "github.com/dbledeez/panel/pkg/module" ) type meta struct { ID string `json:"id"` Ports []module.Port `json:"ports,omitempty"` BrowseableRoots []module.BrowseableRoot `json:"browseable_roots,omitempty"` ReadyPattern string `json:"ready_pattern,omitempty"` Appearance *module.Appearance `json:"appearance,omitempty"` } func main() { dir := "./modules" if len(os.Args) > 1 { dir = os.Args[1] } ms, err := module.LoadDir(dir) if err != nil { fmt.Fprintln(os.Stderr, "load:", err) os.Exit(1) } out := map[string]meta{} for _, m := range ms { e := meta{ID: m.ID, Ports: m.Ports, ReadyPattern: m.ReadyPattern, Appearance: m.Appearance} if m.Runtime.Docker != nil { e.BrowseableRoots = m.Runtime.Docker.BrowseableRoots } out[m.ID] = e } enc := json.NewEncoder(os.Stdout) enc.SetIndent("", " ") enc.Encode(out) }