Skip to content

Commit 1869558

Browse files
authored
Merge pull request #1882 from dannf/lint/sccache-enabled
feat(lint): add rule to check for sccache/enable users
2 parents 584f0ba + 919245a commit 1869558

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

pkg/lint/rules.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ var (
7676
)
7777

7878
const gitCheckout = "git-checkout"
79+
const sccacheEnable = "sccache/enable"
7980

8081
// AllRules is a list of all available rules to evaluate.
8182
var AllRules = func(l *Linter) Rules { //nolint:gocyclo
@@ -527,6 +528,17 @@ var AllRules = func(l *Linter) Rules { //nolint:gocyclo
527528
return nil
528529
},
529530
},
531+
{
532+
Name: "sccache-enabled",
533+
Description: "sccache/enable is for local devel-use only",
534+
Severity: SeverityError,
535+
LintFunc: func(c config.Configuration) error {
536+
if anyPipelineUses(c, sccacheEnable) {
537+
return fmt.Errorf("scacche/enable pipeline exists")
538+
}
539+
return nil
540+
},
541+
},
530542
{
531543
Name: "valid-update-schedule",
532544
Description: "update schedule config should contain a valid period",
@@ -712,6 +724,37 @@ func pickPipelinesUsing(uses string, pipelines []config.Pipeline) []*config.Pipe
712724
return retval
713725
}
714726

727+
func anyPipelineUses(c config.Configuration, uses string) bool {
728+
for index := range len(c.Pipeline) {
729+
if c.Pipeline[index].Uses == uses {
730+
return true
731+
}
732+
}
733+
if c.Test != nil {
734+
for index := range len(c.Test.Pipeline) {
735+
if c.Test.Pipeline[index].Uses == uses {
736+
return true
737+
}
738+
}
739+
}
740+
for spindex := range c.Subpackages {
741+
sp := c.Subpackages[spindex]
742+
for index := range len(sp.Pipeline) {
743+
if sp.Pipeline[index].Uses == uses {
744+
return true
745+
}
746+
}
747+
if sp.Test != nil {
748+
for index := range len(sp.Test.Pipeline) {
749+
if sp.Test.Pipeline[index].Uses == uses {
750+
return true
751+
}
752+
}
753+
}
754+
}
755+
return false
756+
}
757+
715758
func containsKey(parentNode *yaml.Node, key string) error {
716759
it := yit.FromNode(parentNode).
717760
ValuesForMap(yit.WithValue(key), yit.All)

0 commit comments

Comments
 (0)