diff --git a/pkg/workflow/add_comment.go b/pkg/workflow/add_comment.go index 8a3bcc5801..e2d4a998c5 100644 --- a/pkg/workflow/add_comment.go +++ b/pkg/workflow/add_comment.go @@ -32,8 +32,6 @@ func (c *Compiler) parseCommentsConfig(outputMap map[string]any) *AddCommentsCon return nil } - addCommentLog.Print("Parsing add-comment configuration") - // Get config data for pre-processing before YAML unmarshaling configData, _ := outputMap["add-comment"].(map[string]any) @@ -53,12 +51,13 @@ func (c *Compiler) parseCommentsConfig(outputMap map[string]any) *AddCommentsCon return nil } - // Unmarshal into typed config struct - var config AddCommentsConfig - if err := unmarshalConfig(outputMap, "add-comment", &config, addCommentLog); err != nil { + config := parseConfigScaffold(outputMap, "add-comment", addCommentLog, func(err error) *AddCommentsConfig { addCommentLog.Printf("Failed to unmarshal config: %v", err) // For backward compatibility, handle nil/empty config - config = AddCommentsConfig{} + return &AddCommentsConfig{} + }) + if config == nil { + return nil } // Set default max if not specified @@ -66,7 +65,7 @@ func (c *Compiler) parseCommentsConfig(outputMap map[string]any) *AddCommentsCon config.Max = defaultIntStr(1) } - return &config + return config } // buildAddCommentPermissions computes the permissions for the add_comment job based on config. diff --git a/pkg/workflow/add_reviewer.go b/pkg/workflow/add_reviewer.go index b61249df6d..6311d15c66 100644 --- a/pkg/workflow/add_reviewer.go +++ b/pkg/workflow/add_reviewer.go @@ -21,8 +21,6 @@ func (c *Compiler) parseAddReviewerConfig(outputMap map[string]any) *AddReviewer return nil } - addReviewerLog.Print("Parsing add-reviewer configuration") - // Get config data for pre-processing before YAML unmarshaling configData, _ := outputMap["add-reviewer"].(map[string]any) @@ -46,12 +44,13 @@ func (c *Compiler) parseAddReviewerConfig(outputMap map[string]any) *AddReviewer return nil } - // Unmarshal into typed config struct - var config AddReviewerConfig - if err := unmarshalConfig(outputMap, "add-reviewer", &config, addReviewerLog); err != nil { + config := parseConfigScaffold(outputMap, "add-reviewer", addReviewerLog, func(err error) *AddReviewerConfig { addReviewerLog.Printf("Failed to unmarshal config: %v", err) // For backward compatibility, handle nil/empty config - config = AddReviewerConfig{} + return &AddReviewerConfig{} + }) + if config == nil { + return nil } // Set default max if not specified @@ -61,5 +60,5 @@ func (c *Compiler) parseAddReviewerConfig(outputMap map[string]any) *AddReviewer addReviewerLog.Printf("Parsed add-reviewer config: allowed_reviewers=%d, target=%s", len(config.Reviewers), config.Target) - return &config + return config } diff --git a/pkg/workflow/close_entity_helpers.go b/pkg/workflow/close_entity_helpers.go index 221da19abb..812c564a17 100644 --- a/pkg/workflow/close_entity_helpers.go +++ b/pkg/workflow/close_entity_helpers.go @@ -90,12 +90,9 @@ type CloseEntityJobParams struct { func (c *Compiler) parseCloseEntityConfig(outputMap map[string]any, params CloseEntityJobParams, logger *logger.Logger) *CloseEntityConfig { // Check if the key exists if _, exists := outputMap[params.ConfigKey]; !exists { - logger.Printf("No configuration found for %s", params.ConfigKey) return nil } - logger.Printf("Parsing %s configuration", params.ConfigKey) - // Get config data for pre-processing before YAML unmarshaling configData, _ := outputMap[params.ConfigKey].(map[string]any) @@ -105,12 +102,13 @@ func (c *Compiler) parseCloseEntityConfig(outputMap map[string]any, params Close return nil } - // Unmarshal into typed config struct - var config CloseEntityConfig - if err := unmarshalConfig(outputMap, params.ConfigKey, &config, logger); err != nil { + config := parseConfigScaffold(outputMap, params.ConfigKey, logger, func(err error) *CloseEntityConfig { logger.Printf("Failed to unmarshal config: %v", err) // For backward compatibility, handle nil/empty config - config = CloseEntityConfig{} + return &CloseEntityConfig{} + }) + if config == nil { + return nil } // Set default max if not specified @@ -121,7 +119,7 @@ func (c *Compiler) parseCloseEntityConfig(outputMap map[string]any, params Close logger.Printf("Parsed %s configuration: max=%s, target=%s", params.ConfigKey, *config.Max, config.Target) - return &config + return config } // closeEntityDefinition holds all parameters for a close entity type diff --git a/pkg/workflow/create_discussion.go b/pkg/workflow/create_discussion.go index 4c740ee620..c5bfbf9c62 100644 --- a/pkg/workflow/create_discussion.go +++ b/pkg/workflow/create_discussion.go @@ -34,8 +34,6 @@ func (c *Compiler) parseDiscussionsConfig(outputMap map[string]any) *CreateDiscu return nil } - discussionLog.Print("Parsing create-discussion configuration") - // Get the config data to check for special cases before unmarshaling configData, _ := outputMap["create-discussion"].(map[string]any) @@ -56,12 +54,13 @@ func (c *Compiler) parseDiscussionsConfig(outputMap map[string]any) *CreateDiscu return nil } - // Unmarshal into typed config struct - var config CreateDiscussionsConfig - if err := unmarshalConfig(outputMap, "create-discussion", &config, discussionLog); err != nil { + config := parseConfigScaffold(outputMap, "create-discussion", discussionLog, func(err error) *CreateDiscussionsConfig { discussionLog.Printf("Failed to unmarshal config: %v", err) // For backward compatibility, handle nil/empty config - config = CreateDiscussionsConfig{} + return &CreateDiscussionsConfig{} + }) + if config == nil { + return nil } // Set default max if not specified @@ -120,7 +119,7 @@ func (c *Compiler) parseDiscussionsConfig(outputMap map[string]any) *CreateDiscu discussionLog.Printf("Fallback to issue configured: %t", *config.FallbackToIssue) } - return &config + return config } // Returns normalized category (or original if it's a category ID) diff --git a/pkg/workflow/create_issue.go b/pkg/workflow/create_issue.go index 87be1954f1..374cdf1ee6 100644 --- a/pkg/workflow/create_issue.go +++ b/pkg/workflow/create_issue.go @@ -32,8 +32,6 @@ func (c *Compiler) parseIssuesConfig(outputMap map[string]any) *CreateIssuesConf return nil } - createIssueLog.Print("Parsing create-issue configuration") - // Get the config data to check for special cases before unmarshaling configData, _ := outputMap["create-issue"].(map[string]any) @@ -55,12 +53,13 @@ func (c *Compiler) parseIssuesConfig(outputMap map[string]any) *CreateIssuesConf return nil } - // Unmarshal into typed config struct - var config CreateIssuesConfig - if err := unmarshalConfig(outputMap, "create-issue", &config, createIssueLog); err != nil { + config := parseConfigScaffold(outputMap, "create-issue", createIssueLog, func(err error) *CreateIssuesConfig { createIssueLog.Printf("Failed to unmarshal config: %v", err) // For backward compatibility, handle nil/empty config - config = CreateIssuesConfig{} + return &CreateIssuesConfig{} + }) + if config == nil { + return nil } // Handle single string assignee (YAML unmarshaling won't convert string to []string) @@ -85,7 +84,7 @@ func (c *Compiler) parseIssuesConfig(outputMap map[string]any) *CreateIssuesConf createIssueLog.Printf("Issue expiration configured: %d hours", config.Expires) } - return &config + return config } // hasCopilotAssignee checks if "copilot" is in the assignees list diff --git a/pkg/workflow/create_pull_request.go b/pkg/workflow/create_pull_request.go index c8812e3003..99ebfae009 100644 --- a/pkg/workflow/create_pull_request.go +++ b/pkg/workflow/create_pull_request.go @@ -54,8 +54,6 @@ func (c *Compiler) parsePullRequestsConfig(outputMap map[string]any) *CreatePull return nil } - createPRLog.Print("Parsing create-pull-request configuration") - // Get the config data to check for special cases before unmarshaling configData, _ := outputMap["create-pull-request"].(map[string]any) @@ -129,12 +127,13 @@ func (c *Compiler) parsePullRequestsConfig(outputMap map[string]any) *CreatePull return nil } - // Unmarshal into typed config struct - var config CreatePullRequestsConfig - if err := unmarshalConfig(outputMap, "create-pull-request", &config, createPRLog); err != nil { + config := parseConfigScaffold(outputMap, "create-pull-request", createPRLog, func(err error) *CreatePullRequestsConfig { createPRLog.Printf("Failed to unmarshal config: %v", err) // For backward compatibility, handle nil/empty config - config = CreatePullRequestsConfig{} + return &CreatePullRequestsConfig{} + }) + if config == nil { + return nil } // Log expires if configured @@ -153,5 +152,5 @@ func (c *Compiler) parsePullRequestsConfig(outputMap map[string]any) *CreatePull createPRLog.Printf("Pull request max count configured: %s", *config.Max) } - return &config + return config }