MCPcopy Create free account
hub / github.com/github/gh-aw / parseCreateDiscussionsConfig

Method parseCreateDiscussionsConfig

pkg/workflow/create_discussion.go:32–111  ·  view source on GitHub ↗

parseCreateDiscussionsConfig handles create-discussion configuration

(outputMap map[string]any)

Source from the content-addressed store, hash-verified

30
31// parseCreateDiscussionsConfig handles create-discussion configuration
32func (c *Compiler) parseCreateDiscussionsConfig(outputMap map[string]any) *CreateDiscussionsConfig {
33 config := parseCreateEntityConfig(
34 outputMap,
35 "create-discussion",
36 CreateParseOptions{
37 BoolFields: []string{"close-older-discussions", "footer"},
38 IntFields: []string{"max"},
39 HandleExpires: true,
40 },
41 discussionLog,
42 func(err error) *CreateDiscussionsConfig {
43 discussionLog.Printf("Failed to unmarshal config: %v", err)
44 // For backward compatibility, handle nil/empty config
45 return &CreateDiscussionsConfig{}
46 },
47 nil,
48 func(_ map[string]any, config *CreateDiscussionsConfig, expiresDisabled bool) {
49 // Set default max if not specified
50 if config.Max == nil {
51 config.Max = defaultIntStr(1)
52 }
53
54 // Set default expires to 7 days (168 hours) if not specified and not explicitly disabled
55 if config.Expires == 0 && !expiresDisabled {
56 config.Expires = 168 // 7 days = 168 hours
57 discussionLog.Print("Using default expiration: 7 days (168 hours)")
58 } else if expiresDisabled {
59 config.Expires = 0
60 discussionLog.Print("Expiration explicitly disabled")
61 }
62
63 // Set default fallback-to-issue to true if not specified
64 if config.FallbackToIssue == nil {
65 trueVal := true
66 config.FallbackToIssue = &trueVal
67 discussionLog.Print("Using default fallback-to-issue: true")
68 }
69 },
70 )
71 if config == nil {
72 return nil
73 }
74
75 // Normalize and validate category naming convention
76 config.Category = normalizeDiscussionCategory(config.Category, discussionLog, c.markdownPath)
77
78 // Log configured values
79 if config.TitlePrefix != "" {
80 discussionLog.Printf("Title prefix configured: %q", config.TitlePrefix)
81 }
82 if config.Category != "" {
83 discussionLog.Printf("Discussion category configured: %q", config.Category)
84 }
85 if len(config.Labels) > 0 {
86 discussionLog.Printf("Labels configured: %v", config.Labels)
87 }
88 if len(config.AllowedLabels) > 0 {
89 discussionLog.Printf("Allowed labels configured: %v", config.AllowedLabels)

Calls 5

parseCreateEntityConfigFunction · 0.85
defaultIntStrFunction · 0.85
PrintMethod · 0.80
PrintfMethod · 0.45