Skip to content

Commit cfbc8ee

Browse files
committed
fix(templates): now able to load templates from several directories
Signed-off-by: Thomas Bétrancourt <[email protected]>
1 parent b116b6a commit cfbc8ee

File tree

2 files changed

+24
-25
lines changed

2 files changed

+24
-25
lines changed

cmd/utask/root.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -198,11 +198,8 @@ var rootCmd = &cobra.Command{
198198
if err != nil {
199199
return err
200200
}
201-
ds := strings.Split(utask.FTemplatesFolders, ":")
202-
for _, dir := range ds {
203-
if err := tasktemplate.LoadFromDir(dbp, dir); err != nil {
204-
return err
205-
}
201+
if err := tasktemplate.LoadFromDir(dbp, strings.Split(utask.FTemplatesFolders, ":")...); err != nil {
202+
return err
206203
}
207204
var wg sync.WaitGroup
208205
ctx, cancel := context.WithCancel(context.Background())

models/tasktemplate/fromdir.go

+22-20
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,30 @@ var (
1919

2020
// LoadFromDir reads yaml-formatted task templates
2121
// from a folder and upserts them in database
22-
func LoadFromDir(dbp zesty.DBProvider, dir string) error {
23-
files, err := os.ReadDir(dir)
24-
if err != nil {
25-
return fmt.Errorf("failed to open template directory %s: %s", dir, err)
26-
}
27-
for _, file := range files {
28-
if file.IsDir() || !strings.HasSuffix(file.Name(), ".yaml") {
29-
continue
30-
}
31-
tmpl, err := os.ReadFile(path.Join(dir, file.Name()))
22+
func LoadFromDir(dbp zesty.DBProvider, directories ...string) error {
23+
for _, dir := range directories {
24+
files, err := os.ReadDir(dir)
3225
if err != nil {
33-
return fmt.Errorf("failed to read template '%s': %s", file.Name(), err)
34-
}
35-
var tt TaskTemplate
36-
if err := yaml.Unmarshal(tmpl, &tt); err != nil {
37-
return fmt.Errorf("failed to unmarshal template '%s': '%s'", file.Name(), err)
26+
return fmt.Errorf("failed to open template directory %s: %s", dir, err)
3827
}
28+
for _, file := range files {
29+
if file.IsDir() || !strings.HasSuffix(file.Name(), ".yaml") {
30+
continue
31+
}
32+
tmpl, err := os.ReadFile(path.Join(dir, file.Name()))
33+
if err != nil {
34+
return fmt.Errorf("failed to read template '%s': %s", file.Name(), err)
35+
}
36+
var tt TaskTemplate
37+
if err := yaml.Unmarshal(tmpl, &tt); err != nil {
38+
return fmt.Errorf("failed to unmarshal template '%s': '%s'", file.Name(), err)
39+
}
3940

40-
tt.Normalize()
41+
tt.Normalize()
4142

42-
discoveredTemplates = append(discoveredTemplates, tt)
43-
templateimport.AddTemplate(tt.Name)
43+
discoveredTemplates = append(discoveredTemplates, tt)
44+
templateimport.AddTemplate(tt.Name)
45+
}
4446
}
4547

4648
for _, tt := range discoveredTemplates {
@@ -89,12 +91,12 @@ func LoadFromDir(dbp zesty.DBProvider, dir string) error {
8991
}
9092
}
9193
if !found {
92-
if err = tt.Delete(dbp); err == nil {
94+
if err := tt.Delete(dbp); err == nil {
9395
logrus.Infof("Deleted task template %q", tt.Name)
9496
continue
9597
}
9698
// unable to delete TaskTemplate, probably some old Tasks still in database, archiving it
97-
tt, err = LoadFromID(dbp, tt.ID)
99+
tt, err := LoadFromID(dbp, tt.ID)
98100
if err != nil {
99101
return fmt.Errorf("unable to load template %q for archiving: %s", tt.Name, err)
100102
}

0 commit comments

Comments
 (0)