From 68c67dafe62c403458aa6bb75cb73a151c8b7c34 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Sat, 14 Feb 2026 20:46:58 +0100 Subject: [PATCH] add error logging to LoadMetadata, fix deploy sed command - Log YAML parse errors in LoadMetadata instead of silently swallowing - Add debug log for successful metadata loads (tagline, useCases, optConfig counts) - Fix CLAUDE.md deploy command: use sudo, target only image: line in sed Co-Authored-By: Claude Opus 4.6 --- CLAUDE.md | 2 +- controller/internal/stacks/metadata.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 9a56d4f..b374639 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -113,7 +113,7 @@ The build script: ### Step 3: Deploy on the demo node ```bash -ssh kisfenyo@192.168.0.162 "cd /opt/docker/felhom-controller && docker pull gitea.dooplex.hu/admin/felhom-controller: && sed -i 's|felhom-controller:[^ ]*|felhom-controller:|' docker-compose.yml && docker compose up -d" +ssh kisfenyo@192.168.0.162 "cd /opt/docker/felhom-controller && sudo docker pull gitea.dooplex.hu/admin/felhom-controller: && sudo sed -i 's|image: gitea.dooplex.hu/admin/felhom-controller:.*|image: gitea.dooplex.hu/admin/felhom-controller:|' docker-compose.yml && sudo docker compose up -d" ``` ### Step 4: Verify the deployment diff --git a/controller/internal/stacks/metadata.go b/controller/internal/stacks/metadata.go index 49734d0..bed2214 100644 --- a/controller/internal/stacks/metadata.go +++ b/controller/internal/stacks/metadata.go @@ -1,6 +1,7 @@ package stacks import ( + "fmt" "os" "path/filepath" "strings" @@ -92,13 +93,16 @@ func LoadMetadata(stackDir string) Metadata { } if err := yaml.Unmarshal(data, &meta); err != nil { - // Parse error — still return defaults + fmt.Fprintf(os.Stderr, "[ERROR] Failed to parse .felhom.yml in %s: %v\n", stackDir, err) dirName := filepath.Base(stackDir) meta.DisplayName = toTitleCase(strings.ReplaceAll(dirName, "-", " ")) meta.Slug = dirName return meta } + fmt.Fprintf(os.Stderr, "[DEBUG] Loaded metadata for %s: tagline=%q, useCases=%d, optConfig=%d\n", + filepath.Base(stackDir), meta.AppInfo.Tagline, len(meta.AppInfo.UseCases), len(meta.OptionalConfig)) + // Fill in defaults for missing fields dirName := filepath.Base(stackDir) if meta.Slug == "" {