Skip to content

Commit 66602de

Browse files
committed
[vet] Add vet for node_module source inclusion
1 parent ee7676a commit 66602de

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

pkg/vet/docker_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ ADD from-some-pkg--build/hello.txt hello.txt`,
5959

6060
tmpdir, err := os.MkdirTemp("", "leeway-test-*")
6161
failOnErr(err)
62-
// defer os.RemoveAll(tmpdir)
62+
defer os.RemoveAll(tmpdir)
6363

6464
var pkgdeps string
6565
failOnErr(os.WriteFile(filepath.Join(tmpdir, "WORKSPACE.yaml"), []byte("environmentManifest:\n - name: \"docker\"\n command: [\"echo\"]"), 0644))

pkg/vet/yarn.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818

1919
func init() {
2020
register(&checkImplicitTransitiveDependencies{})
21+
register(PackageCheck("node-modules-source", "checks if the package's sources include node_modules/", leeway.YarnPackage, checkYarnNodeModulesSource))
2122
}
2223

2324
type pkgJSON struct {
@@ -185,3 +186,34 @@ func (c *checkImplicitTransitiveDependencies) RunPkg(pkg *leeway.Package) ([]Fin
185186

186187
return findings, nil
187188
}
189+
190+
func checkYarnNodeModulesSource(pkg *leeway.Package) ([]Finding, error) {
191+
var res []string
192+
for _, src := range pkg.Sources {
193+
segs := strings.Split(src, "/")
194+
var found bool
195+
for _, seg := range segs {
196+
if seg == "node_modules" {
197+
found = true
198+
break
199+
}
200+
}
201+
if !found {
202+
continue
203+
}
204+
if res == nil || len(segs) < len(res) {
205+
res = segs
206+
}
207+
}
208+
209+
if res == nil {
210+
return nil, nil
211+
}
212+
return []Finding{
213+
{
214+
Component: pkg.C,
215+
Package: pkg,
216+
Description: fmt.Sprintf("package contains node_modules/ as source: %s", strings.Join(res, "/")),
217+
},
218+
}, nil
219+
}

0 commit comments

Comments
 (0)