From 73be6989ff1deff46af6fa5b7411cdef426a8ba2 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 10 Jun 2025 23:55:06 -0400 Subject: [PATCH] fix: ensure invalid cron triggers fail a deploy --- plugins/app-json/triggers.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/plugins/app-json/triggers.go b/plugins/app-json/triggers.go index 35d88240c..92a896e4e 100644 --- a/plugins/app-json/triggers.go +++ b/plugins/app-json/triggers.go @@ -1,6 +1,7 @@ package appjson import ( + "encoding/json" "fmt" "os" "path" @@ -140,6 +141,35 @@ func TriggerCorePostExtract(appName string, sourceWorkDir string) error { } } + if hasAppJSON(appName) { + b, err := os.ReadFile(processSpecificAppJSON) + if err != nil { + return err + } + + content := strings.TrimSpace(string(b)) + if content == "" { + return nil + } + + var appJSON AppJSON + if err := json.Unmarshal([]byte(content), &appJSON); err != nil { + return fmt.Errorf("Unable to unmarshal app.json: %v", err.Error()) + } + + if appJSON.Cron != nil { + for i, c := range appJSON.Cron { + if c.Command == "" { + return fmt.Errorf("Missing cron command for app %s (index %d)", appName, i) + } + + if c.Schedule == "" { + return fmt.Errorf("Missing cron schedule for app %s (index %d)", appName, i) + } + } + } + } + // TODO: add validation to app.json file by ensuring it can be deserialized return nil }