11package pkg
22
33import (
4- "fmt"
5-
64 "github.com/docker/distribution/reference"
5+ "github.com/pkg/errors"
76 "gopkg.in/yaml.v2"
87)
98
109const (
11- errEmptyName = "task/action name cannot be empty: %v "
12- errInvalidLength = "task/action name cannot have more than 200 characters: %v "
13- errDuplicateTaskName = "two tasks in a template cannot have same name: %v "
14- errInvalidActionImage = "invalid action image: %v "
15- errDuplicateActionName = "two actions in a task cannot have same name: %v "
10+ errEmptyName = "task/action name cannot be empty: "
11+ errInvalidLength = "task/action name cannot have more than 200 characters: "
12+ errDuplicateTaskName = "two tasks in a template cannot have same name: "
13+ errInvalidActionImage = "invalid action image: "
14+ errDuplicateActionName = "two actions in a task cannot have same name: "
1615)
1716
1817// ParseYAML parses the template yaml content
@@ -30,50 +29,49 @@ func ParseYAML(yamlContent []byte) (*Workflow, error) {
3029func ValidateTemplate (wf * Workflow ) error {
3130 taskNameMap := make (map [string ]struct {})
3231 for _ , task := range wf .Tasks {
33- err := hasValidLength (task .Name )
34- if err != nil {
35- return err
32+ if hasEmptyName (task .Name ) {
33+ return errors .New (errEmptyName + task .Name )
34+ }
35+ if ! hasValidLength (task .Name ) {
36+ return errors .New (errInvalidLength + task .Name )
3637 }
3738 _ , ok := taskNameMap [task .Name ]
3839 if ok {
39- return fmt . Errorf (errDuplicateTaskName , task .Name )
40+ return errors . New (errDuplicateTaskName + task .Name )
4041 }
4142 taskNameMap [task .Name ] = struct {}{}
4243 actionNameMap := make (map [string ]struct {})
4344 for _ , action := range task .Actions {
44- err := hasValidLength (action .Name )
45- if err != nil {
46- return err
45+ if hasEmptyName (action .Name ) {
46+ return errors .New (errEmptyName + action .Name )
47+ }
48+
49+ if ! hasValidLength (action .Name ) {
50+ return errors .New (errInvalidLength + action .Name )
4751 }
48- err = isValidImageName ( action . Image )
49- if err != nil {
50- return fmt . Errorf (errInvalidActionImage , action .Image )
52+
53+ if ! hasValidImageName ( action . Image ) {
54+ return errors . New (errInvalidActionImage + action .Image )
5155 }
5256
5357 _ , ok := actionNameMap [action .Name ]
5458 if ok {
55- return fmt . Errorf (errDuplicateActionName , action .Name )
59+ return errors . New (errDuplicateActionName + action .Name )
5660 }
5761 actionNameMap [action .Name ] = struct {}{}
5862 }
5963 }
6064 return nil
6165}
6266
63- func hasValidLength (name string ) error {
64- if name == "" {
65- return fmt .Errorf (errEmptyName , name )
66- }
67- if len (name ) > 200 {
68- return fmt .Errorf (errInvalidLength , name )
69- }
70- return nil
67+ func hasEmptyName (name string ) bool {
68+ return name == ""
69+ }
70+ func hasValidLength (name string ) bool {
71+ return len (name ) < 200
7172}
7273
73- func isValidImageName (name string ) error {
74+ func hasValidImageName (name string ) bool {
7475 _ , err := reference .ParseNormalizedNamed (name )
75- if err != nil {
76- return err
77- }
78- return nil
76+ return err == nil
7977}
0 commit comments