parseLinkSubIssueConfig handles link-sub-issue configuration
(outputMap map[string]any)
| 18 | |
| 19 | // parseLinkSubIssueConfig handles link-sub-issue configuration |
| 20 | func (c *Compiler) parseLinkSubIssueConfig(outputMap map[string]any) *LinkSubIssueConfig { |
| 21 | linkSubIssueLog.Print("Parsing link-sub-issue configuration") |
| 22 | if configData, exists := outputMap["link-sub-issue"]; exists { |
| 23 | linkSubIssueConfig := &LinkSubIssueConfig{} |
| 24 | |
| 25 | if configMap, ok := configData.(map[string]any); ok { |
| 26 | linkSubIssueLog.Print("Found link-sub-issue config map") |
| 27 | |
| 28 | // Parse target config (target-repo) with validation |
| 29 | targetConfig, isInvalid := ParseTargetConfig(configMap) |
| 30 | if isInvalid { |
| 31 | return nil // Invalid configuration (e.g., wildcard target-repo), return nil to cause validation error |
| 32 | } |
| 33 | linkSubIssueConfig.SafeOutputTargetConfig = targetConfig |
| 34 | // Override AllowedRepos with expression-aware parsing (supports GitHub Actions expressions) |
| 35 | linkSubIssueConfig.AllowedRepos = ParseStringArrayOrExprFromConfig(configMap, "allowed-repos", linkSubIssueLog) |
| 36 | |
| 37 | // Parse common base fields with default max of 5 |
| 38 | c.parseBaseSafeOutputConfig(configMap, &linkSubIssueConfig.BaseSafeOutputConfig, 5) |
| 39 | |
| 40 | // Parse parent-required-labels |
| 41 | linkSubIssueConfig.ParentRequiredLabels = ParseStringArrayFromConfig(configMap, "parent-required-labels", linkSubIssueLog) |
| 42 | |
| 43 | // Parse parent-title-prefix |
| 44 | linkSubIssueConfig.ParentTitlePrefix = extractStringFromMap(configMap, "parent-title-prefix", linkSubIssueLog) |
| 45 | |
| 46 | // Parse sub-required-labels |
| 47 | linkSubIssueConfig.SubRequiredLabels = ParseStringArrayFromConfig(configMap, "sub-required-labels", linkSubIssueLog) |
| 48 | |
| 49 | // Parse sub-title-prefix |
| 50 | linkSubIssueConfig.SubTitlePrefix = extractStringFromMap(configMap, "sub-title-prefix", linkSubIssueLog) |
| 51 | |
| 52 | linkSubIssueLog.Printf("Parsed link-sub-issue config: max=%d, parent_labels=%d, sub_labels=%d, target_repo=%s", |
| 53 | linkSubIssueConfig.Max, len(linkSubIssueConfig.ParentRequiredLabels), |
| 54 | len(linkSubIssueConfig.SubRequiredLabels), linkSubIssueConfig.TargetRepoSlug) |
| 55 | } else { |
| 56 | // If configData is nil or not a map, still set the default max |
| 57 | linkSubIssueConfig.Max = defaultIntStr(5) |
| 58 | } |
| 59 | |
| 60 | return linkSubIssueConfig |
| 61 | } |
| 62 | |
| 63 | return nil |
| 64 | } |