Skip to content

Commit cb1d5be

Browse files
committed
update projects with default Workflow value
1 parent cee7a57 commit cb1d5be

File tree

2 files changed

+41
-12
lines changed

2 files changed

+41
-12
lines changed

pkg/configuration/digger_config.go

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,6 @@ func (s *Step) extract(stepMap map[string]interface{}, action string) {
195195
}
196196
}
197197

198-
// duplicate copied from digger.go
199198
func defaultWorkflow() *Workflow {
200199
return &Workflow{
201200
Configuration: &WorkflowConfiguration{
@@ -228,18 +227,37 @@ func defaultWorkflow() *Workflow {
228227

229228
func ConvertDiggerYamlToConfig(diggerYaml *DiggerConfigYaml, workingDir string, walker DirWalker) (*DiggerConfig, error) {
230229
var diggerConfig DiggerConfig
230+
const defaultWorkflowName = "default"
231231

232232
diggerConfig.AutoMerge = diggerYaml.AutoMerge
233233

234+
// if workflow block is not specified in yaml we create a default one, and add it to every project
234235
if diggerYaml.Workflows != nil {
235236
diggerConfig.Workflows = diggerYaml.Workflows
236237
} else {
237238
workflow := *defaultWorkflow()
238239
diggerConfig.Workflows = make(map[string]Workflow)
239-
diggerConfig.Workflows["default"] = workflow
240+
diggerConfig.Workflows[defaultWorkflowName] = workflow
240241
}
241242

242243
diggerConfig.Projects = diggerYaml.Projects
244+
245+
// update project's workflows if needed
246+
for _, project := range diggerConfig.Projects {
247+
if project.Workflow == "" {
248+
project.Workflow = defaultWorkflowName
249+
}
250+
}
251+
252+
// check for project name duplicates
253+
projectNames := make(map[string]bool)
254+
for _, project := range diggerConfig.Projects {
255+
if projectNames[project.Name] {
256+
return nil, fmt.Errorf("project name '%s' is duplicated", project.Name)
257+
}
258+
projectNames[project.Name] = true
259+
}
260+
243261
diggerConfig.CollectUsageData = diggerYaml.CollectUsageData
244262

245263
if diggerYaml.GenerateProjectsConfig != nil {
@@ -266,16 +284,6 @@ func ConvertDiggerYamlToConfig(diggerYaml *DiggerConfigYaml, workingDir string,
266284
}
267285
}
268286
}
269-
270-
projectNames := make(map[string]bool)
271-
272-
for _, project := range diggerConfig.Projects {
273-
if projectNames[project.Name] {
274-
return nil, fmt.Errorf("project name '%s' is duplicated", project.Name)
275-
}
276-
projectNames[project.Name] = true
277-
}
278-
279287
return &diggerConfig, nil
280288
}
281289

pkg/configuration/digger_config_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,27 @@ projects:
7272
assert.Equal(t, "path/to/module/test", dg.GetDirectory("prod"))
7373
}
7474

75+
func TestDiggerConfigDefaultWorkflow(t *testing.T) {
76+
tempDir, teardown := setUp()
77+
defer teardown()
78+
79+
diggerCfg := `
80+
projects:
81+
- name: prod
82+
branch: /main/
83+
dir: path/to/module/test
84+
`
85+
deleteFile := createFile(path.Join(tempDir, "digger.yaml"), diggerCfg)
86+
defer deleteFile()
87+
88+
dg, err := LoadDiggerConfig(tempDir, &FileSystemDirWalker{})
89+
assert.NoError(t, err, "expected error to be nil")
90+
assert.NotNil(t, dg, "expected digger config to be not nil")
91+
assert.Equal(t, "default", dg.Projects[0].Workflow)
92+
_, ok := dg.Workflows["default"]
93+
assert.True(t, ok)
94+
}
95+
7596
func TestDiggerConfigWhenOnlyYmlExists(t *testing.T) {
7697
tempDir, teardown := setUp()
7798
defer teardown()

0 commit comments

Comments
 (0)