parseCreateDiscussionsConfig handles create-discussion configuration
(outputMap map[string]any)
| 30 | |
| 31 | // parseCreateDiscussionsConfig handles create-discussion configuration |
| 32 | func (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) |