Skip to content

Commit f738a51

Browse files
committed
Ignore cache dirs in root of build directory
1 parent db10ae2 commit f738a51

File tree

2 files changed

+72
-3
lines changed

2 files changed

+72
-3
lines changed

go/porcelain/deploy.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ const (
4242
lfsVersionString = "version https://git-lfs.github.com/spec/v1"
4343
)
4444

45+
var ignoreInstallDirs = []string{"node_modules/", "bower_components/"}
46+
4547
type uploadType int
4648
type pointerData struct {
4749
SHA string
@@ -500,8 +502,12 @@ func (n *Netlify) uploadFile(ctx context.Context, d *models.Deploy, f *FileBundl
500502

501503
func walk(dir string, observer DeployObserver, useLargeMedia bool) (*deployFiles, error) {
502504
files := newDeployFiles()
505+
cwd, err := os.Getwd()
506+
if err != nil {
507+
return nil, err
508+
}
503509

504-
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
510+
err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
505511
if err != nil {
506512
return err
507513
}
@@ -513,7 +519,7 @@ func walk(dir string, observer DeployObserver, useLargeMedia bool) (*deployFiles
513519
}
514520
rel := forceSlashSeparators(osRel)
515521

516-
if ignoreFile(rel) {
522+
if ignoreFile(rel, dir == cwd) {
517523
return nil
518524
}
519525

@@ -737,10 +743,18 @@ func goFile(filePath string, i os.FileInfo, observer DeployObserver) bool {
737743
return true
738744
}
739745

740-
func ignoreFile(rel string) bool {
746+
func ignoreFile(rel string, deployFromBuildDir bool) bool {
741747
if strings.HasPrefix(rel, ".") || strings.Contains(rel, "/.") || strings.HasPrefix(rel, "__MACOS") {
742748
return !strings.HasPrefix(rel, ".well-known/")
743749
}
750+
if !deployFromBuildDir {
751+
return false
752+
}
753+
for _, ignorePath := range ignoreInstallDirs {
754+
if strings.HasPrefix(rel, ignorePath) {
755+
return true
756+
}
757+
}
744758
return false
745759
}
746760

go/porcelain/deploy_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@ import (
66
"net/http"
77
"net/http/httptest"
88
"net/url"
9+
"os"
10+
"path/filepath"
911
"strings"
1012
"testing"
1113

1214
"github.com/go-openapi/runtime"
1315
apiClient "github.com/go-openapi/runtime/client"
1416
"github.com/go-openapi/strfmt"
17+
"github.com/netlify/open-api/go/models"
1518
"github.com/netlify/open-api/go/plumbing/operations"
19+
"github.com/stretchr/testify/assert"
1620
"github.com/stretchr/testify/require"
1721
)
1822

@@ -131,6 +135,42 @@ func TestConcurrentFileUpload(t *testing.T) {
131135
}
132136
}
133137

138+
func TestWalk_IgnoreNodeModulesInRoot(t *testing.T) {
139+
dir, err := ioutil.TempDir("", "deploy")
140+
require.Nil(t, err)
141+
defer os.RemoveAll(dir)
142+
143+
err = os.Mkdir(filepath.Join(dir, "node_modules"), os.ModePerm)
144+
require.Nil(t, err)
145+
err = ioutil.WriteFile(filepath.Join(dir, "node_modules", "root-package"), []byte{}, 0644)
146+
require.Nil(t, err)
147+
148+
err = os.MkdirAll(filepath.Join(dir, "more", "node_modules"), os.ModePerm)
149+
require.Nil(t, err)
150+
err = ioutil.WriteFile(filepath.Join(dir, "more", "node_modules", "inner-package"), []byte{}, 0644)
151+
require.Nil(t, err)
152+
153+
files, err := walk(dir, mockObserver{}, false)
154+
require.Nil(t, err)
155+
156+
// When deploy directory != build directory, always deploy node_modules.
157+
assert.NotNil(t, files.Files["node_modules/root-package"])
158+
assert.NotNil(t, files.Files["more/node_modules/inner-package"])
159+
160+
cwd, err := os.Getwd()
161+
require.Nil(t, err)
162+
err = os.Chdir(dir)
163+
require.Nil(t, err)
164+
defer os.Chdir(cwd)
165+
166+
files, err = walk(dir, mockObserver{}, false)
167+
require.Nil(t, err)
168+
169+
// When deploy directory == build directory, ignore node_modules in deploy directory root.
170+
assert.Nil(t, files.Files["node_modules/root-package"])
171+
assert.NotNil(t, files.Files["more/node_modules/inner-package"])
172+
}
173+
134174
func TestReadZipRuntime(t *testing.T) {
135175
runtime, err := readZipRuntime("../internal/data/hello-rs-function-test.zip")
136176
if err != nil {
@@ -141,3 +181,18 @@ func TestReadZipRuntime(t *testing.T) {
141181
t.Fatalf("unexpected runtime value, expected='rs', got='%s'", runtime)
142182
}
143183
}
184+
185+
type mockObserver struct{}
186+
187+
func (m mockObserver) OnSetupWalk() error { return nil }
188+
func (m mockObserver) OnSuccessfulStep(*FileBundle) error { return nil }
189+
func (m mockObserver) OnSuccessfulWalk(*models.DeployFiles) error { return nil }
190+
func (m mockObserver) OnFailedWalk() {}
191+
192+
func (m mockObserver) OnSetupDelta(*models.DeployFiles) error { return nil }
193+
func (m mockObserver) OnSuccessfulDelta(*models.DeployFiles, *models.Deploy) error { return nil }
194+
func (m mockObserver) OnFailedDelta(*models.DeployFiles) {}
195+
196+
func (m mockObserver) OnSetupUpload(*FileBundle) error { return nil }
197+
func (m mockObserver) OnSuccessfulUpload(*FileBundle) error { return nil }
198+
func (m mockObserver) OnFailedUpload(*FileBundle) {}

0 commit comments

Comments
 (0)