diff --git a/pkg/merger/merger.go b/pkg/merger/merger.go index 0666b55..867c09e 100644 --- a/pkg/merger/merger.go +++ b/pkg/merger/merger.go @@ -50,6 +50,11 @@ func MergeConfigFiles( if config.Integrations.Jira == nil { config.Integrations.Jira = extraConfig.Integrations.Jira } else { + // enabled/disabled + if extraConfig.Integrations.Jira.Enabled != nil { + config.Integrations.Jira.Enabled = extraConfig.Integrations.Jira.Enabled + config.Integrations.Jira.Disabled = !*extraConfig.Integrations.Jira.Enabled + } if extraConfig.Integrations.Jira.ProjectKey != "" { config.Integrations.Jira.ProjectKey = extraConfig.Integrations.Jira.ProjectKey } @@ -68,6 +73,18 @@ func MergeConfigFiles( if extraConfig.Integrations.Jira.PriorityThreshold != "" { config.Integrations.Jira.PriorityThreshold = extraConfig.Integrations.Jira.PriorityThreshold } + if len(extraConfig.Integrations.Jira.Labels) > 0 { + config.Integrations.Jira.Labels = extraConfig.Integrations.Jira.Labels + } + if extraConfig.Integrations.Jira.CommentOnClose != nil { + config.Integrations.Jira.CommentOnClose = extraConfig.Integrations.Jira.CommentOnClose + } + if extraConfig.Integrations.Jira.TitleTemplate != "" { + config.Integrations.Jira.TitleTemplate = extraConfig.Integrations.Jira.TitleTemplate + } + if extraConfig.Integrations.Jira.DescriptionTemplate != "" { + config.Integrations.Jira.DescriptionTemplate = extraConfig.Integrations.Jira.DescriptionTemplate + } if extraConfig.Integrations.Jira.Priorities != nil { config.Integrations.Jira.Priorities = extraConfig.Integrations.Jira.Priorities diff --git a/pkg/models/integrations.go b/pkg/models/integrations.go index 2a3a7c7..a90de00 100644 --- a/pkg/models/integrations.go +++ b/pkg/models/integrations.go @@ -5,14 +5,19 @@ type Integrations struct { } type Jira struct { - Disabled bool `yaml:"disabled,omitempty"` - ProjectKey string `yaml:"project_key,omitempty"` - IssueType string `yaml:"issue_type,omitempty"` - SeverityThreshold string `yaml:"severity_threshold,omitempty"` - PriorityThreshold string `yaml:"priority_threshold,omitempty"` - OnFixTransition string `yaml:"on_fix_transition,omitempty"` - Priorities *Priorities `yaml:"priorities,omitempty"` - Assignee *Assignee `yaml:"assignee,omitempty"` + Disabled bool `yaml:"disabled,omitempty"` + Enabled *bool `yaml:"enabled,omitempty"` + ProjectKey string `yaml:"project_key,omitempty"` + IssueType string `yaml:"issue_type,omitempty"` + SeverityThreshold string `yaml:"severity_threshold,omitempty"` + PriorityThreshold string `yaml:"priority_threshold,omitempty"` + OnFixTransition string `yaml:"on_fix_transition,omitempty"` + CommentOnClose *bool `yaml:"comment_on_close,omitempty"` + Labels []string `yaml:"labels,omitempty"` + TitleTemplate string `yaml:"title_template,omitempty"` + DescriptionTemplate string `yaml:"description_template,omitempty"` + Priorities *Priorities `yaml:"priorities,omitempty"` + Assignee *Assignee `yaml:"assignee,omitempty"` } // Mapping of Nullify Finding severities to Jira Priorities. diff --git a/pkg/parser/parse.go b/pkg/parser/parse.go index 354544b..ace5c0e 100644 --- a/pkg/parser/parse.go +++ b/pkg/parser/parse.go @@ -30,6 +30,18 @@ func sanitizeConfig(config *models.Configuration) { config.PriorityThreshold = strings.ToUpper(config.PriorityThreshold) } + if config.Integrations.Jira != nil { + j := config.Integrations.Jira + // Normalize Jira thresholds + j.SeverityThreshold = strings.ToUpper(strings.Trim(j.SeverityThreshold, " ")) + j.PriorityThreshold = strings.ToUpper(strings.Trim(j.PriorityThreshold, " ")) + // Map jira.enabled to Disabled for internal use + if j.Enabled != nil { + j.Disabled = !*j.Enabled + } + config.Integrations.Jira = j + } + for name, n := range config.Notifications { if n.Events.All != nil { n.Events.All.MinimumSeverity = strings.ToUpper(n.Events.All.MinimumSeverity)