@@ -22,6 +22,7 @@ import (
2222
2323 "github.com/tektoncd/catlin/pkg/parser"
2424 "github.com/tektoncd/catlin/pkg/validator"
25+ "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1"
2526 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1"
2627)
2728
@@ -88,20 +89,20 @@ func NewScriptLinter(r *parser.Resource) *taskLinter {
8889}
8990
9091// nolint: staticcheck
91- func (t * taskLinter ) validateScript (taskName string , s v1beta1. Step , configs []config ) validator.Result {
92+ func (t * taskLinter ) validateScript (taskName string , script string , configs []config , stepName string ) validator.Result {
9293 result := validator.Result {}
9394
9495 // use /bin/sh by default if no shbang
95- if s . Script [0 :2 ] != "#!" {
96- s . Script = "#!/usr/bin/env sh\n " + s . Script
96+ if script [0 :2 ] != "#!" {
97+ script = "#!/usr/bin/env sh\n " + script
9798 } else { // using a shbang, check if we have /usr/bin/env
98- if s . Script [0 :14 ] != "#!/usr/bin/env" {
99+ if script [0 :14 ] != "#!/usr/bin/env" {
99100 result .Warn ("step: %s is not using #!/usr/bin/env " , taskName )
100101 }
101102 }
102103
103104 for _ , config := range configs {
104- matched , err := regexp .MatchString (`^#!` + config .regexp + `\n` , s . Script )
105+ matched , err := regexp .MatchString (`^#!` + config .regexp + `\n` , script )
105106 if err != nil {
106107 result .Error ("Invalid regexp: %s" , config .regexp )
107108 return result
@@ -123,7 +124,7 @@ func (t *taskLinter) validateScript(taskName string, s v1beta1.Step, configs []c
123124 return result
124125 }
125126 defer os .Remove (tmpfile .Name ()) // clean up
126- if _ , err := tmpfile .Write ([]byte (s . Script )); err != nil {
127+ if _ , err := tmpfile .Write ([]byte (script )); err != nil {
127128 result .Error ("Cannot write to temporary files" )
128129 return result
129130 }
@@ -138,7 +139,7 @@ func (t *taskLinter) validateScript(taskName string, s v1beta1.Step, configs []c
138139 cmd := exec .Command (execpath , append (linter .args , tmpfile .Name ())... )
139140 out , err := cmd .CombinedOutput ()
140141 if err != nil {
141- outt := strings .ReplaceAll (string (out ), tmpfile .Name (), taskName + "-" + s . Name )
142+ outt := strings .ReplaceAll (string (out ), tmpfile .Name (), taskName + "-" + stepName )
142143 result .Error ("%s, %s failed:\n %s" , execpath , linter .args , outt )
143144 }
144145 }
@@ -148,10 +149,18 @@ func (t *taskLinter) validateScript(taskName string, s v1beta1.Step, configs []c
148149}
149150
150151// nolint: staticcheck
151- func (t * taskLinter ) collectOverSteps (steps []v1beta1.Step , name string , result * validator.Result ) {
152- for _ , step := range steps {
153- if step .Script != "" {
154- result .Append (t .validateScript (name , step , t .configs ))
152+ func (t * taskLinter ) collectOverSteps (steps interface {}, name string , result * validator.Result ) {
153+ if s , ok := steps .([]v1beta1.Step ); ok {
154+ for _ , step := range s {
155+ if step .Script != "" {
156+ result .Append (t .validateScript (name , step .Script , t .configs , step .Name ))
157+ }
158+ }
159+ } else if s , ok := steps .([]v1.Step ); ok {
160+ for _ , step := range s {
161+ if step .Script != "" {
162+ result .Append (t .validateScript (name , step .Script , t .configs , step .Name ))
163+ }
155164 }
156165 }
157166}
@@ -167,11 +176,17 @@ func (t *taskLinter) Validate() validator.Result {
167176
168177 switch strings .ToLower (t .res .Kind ) {
169178 case "task" :
170- task := res .(* v1beta1.Task )
171- t .collectOverSteps (task .Spec .Steps , task .ObjectMeta .Name , & result )
179+ if res .(* v1.Task ) != nil {
180+ task := res .(* v1.Task )
181+ t .collectOverSteps (task .Spec .Steps , task .ObjectMeta .Name , & result )
182+ } else {
183+ task := res .(* v1beta1.Task )
184+ t .collectOverSteps (task .Spec .Steps , task .ObjectMeta .Name , & result )
185+ }
186+
172187 case "clustertask" :
173- task := res .(* v1beta1.ClusterTask )
174- t .collectOverSteps (task .Spec .Steps , task .ObjectMeta .Name , & result )
188+ task := res .(* v1beta1.ClusterTask )
189+ t .collectOverSteps (task .Spec .Steps , task .ObjectMeta .Name , & result )
175190 }
176191 return result
177192}
0 commit comments