From 98aa378b996caaf7e3a856acfc7f7b8f5c7c5b50 Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Thu, 23 Dec 2021 15:07:31 -0500 Subject: [PATCH 1/9] Add influxdata's string filter abstraction --- cli/internal/run/run.go | 67 +++++------- cli/internal/util/filter/filter.go | 134 ++++++++++++++++++++++++ cli/internal/util/filter/filter_test.go | 116 ++++++++++++++++++++ 3 files changed, 277 insertions(+), 40 deletions(-) create mode 100644 cli/internal/util/filter/filter.go create mode 100644 cli/internal/util/filter/filter_test.go diff --git a/cli/internal/run/run.go b/cli/internal/run/run.go index 33513097cc6bb..83857380b90f7 100644 --- a/cli/internal/run/run.go +++ b/cli/internal/run/run.go @@ -24,11 +24,11 @@ import ( "turbo/internal/ui" "turbo/internal/util" "turbo/internal/util/browser" + "turbo/internal/util/filter" "github.com/pyr-sh/dag" "github.com/fatih/color" - glob "github.com/gobwas/glob" "github.com/hashicorp/go-hclog" "github.com/mitchellh/cli" "github.com/pkg/errors" @@ -139,14 +139,14 @@ func (c *RunCommand) Run(args []string) int { c.logWarning(c.Config.Logger, "", err) } - ignoreGlobs, err := convertStringsToGlobs(runOptions.ignore) + ignoreGlob, err := filter.Compile(runOptions.ignore) if err != nil { c.logError(c.Config.Logger, "", fmt.Errorf("invalid ignore globs: %w", err)) return 1 } - globalDeps, err := convertStringsToGlobs(runOptions.globalDeps) + globalDepsGlob, err := filter.Compile(runOptions.globalDeps) if err != nil { - c.logError(c.Config.Logger, "", fmt.Errorf("invalid global deps: %w", err)) + c.logError(c.Config.Logger, "", fmt.Errorf("invalid global deps glob: %w", err)) return 1 } hasRepoGlobalFileChanged := false @@ -158,19 +158,15 @@ func (c *RunCommand) Run(args []string) int { ignoreSet := make(util.Set) for _, f := range changedFiles { - for _, g := range globalDeps { - if g.Match(f) { - hasRepoGlobalFileChanged = true - break - } + if globalDepsGlob.Match(f) { + hasRepoGlobalFileChanged = true + break } } for _, f := range changedFiles { - for _, g := range ignoreGlobs { - if g.Match(f) { - ignoreSet.Add(f) - } + if ignoreGlob.Match(f) { + ignoreSet.Add(f) } } filteredChangedFiles := make(util.Set) @@ -197,7 +193,6 @@ func (c *RunCommand) Run(args []string) int { // Scoped packages // Unwind scope globs scopePkgs, err := getScopedPackages(ctx, runOptions.scope) - if err != nil { c.logError(c.Config.Logger, "", fmt.Errorf("Invalid scope: %w", err)) return 1 @@ -750,23 +745,23 @@ func parseRunArgs(args []string, cwd string) (*RunOptions, error) { } else if strings.HasPrefix(arg, "--") { switch { case strings.HasPrefix(arg, "--since="): - if len(arg[len("--since="):]) > 1 { + if len(arg[len("--since="):]) > 0 { runOptions.since = arg[len("--since="):] } case strings.HasPrefix(arg, "--scope="): - if len(arg[len("--scope="):]) > 1 { + if len(arg[len("--scope="):]) > 0 { runOptions.scope = append(runOptions.scope, arg[len("--scope="):]) } case strings.HasPrefix(arg, "--ignore="): - if len(arg[len("--ignore="):]) > 1 { + if len(arg[len("--ignore="):]) > 0 { runOptions.ignore = append(runOptions.ignore, arg[len("--ignore="):]) } case strings.HasPrefix(arg, "--global-deps="): - if len(arg[len("--global-deps="):]) > 1 { + if len(arg[len("--global-deps="):]) > 0 { runOptions.globalDeps = append(runOptions.globalDeps, arg[len("--global-deps="):]) } case strings.HasPrefix(arg, "--cwd="): - if len(arg[len("--cwd="):]) > 1 { + if len(arg[len("--cwd="):]) > 0 { runOptions.cwd = arg[len("--cwd="):] } else { runOptions.cwd = cwd @@ -774,7 +769,7 @@ func parseRunArgs(args []string, cwd string) (*RunOptions, error) { case strings.HasPrefix(arg, "--parallel"): runOptions.parallel = true case strings.HasPrefix(arg, "--profile="): // this one must com before the next - if len(arg[len("--profile="):]) > 1 { + if len(arg[len("--profile="):]) > 0 { runOptions.profile = arg[len("--profile="):] } case strings.HasPrefix(arg, "--profile"): @@ -797,7 +792,7 @@ func parseRunArgs(args []string, cwd string) (*RunOptions, error) { runOptions.stream = true case strings.HasPrefix(arg, "--graph="): // this one must com before the next - if len(arg[len("--graph="):]) > 1 { + if len(arg[len("--graph="):]) > 0 { runOptions.dotGraph = arg[len("--graph="):] } case strings.HasPrefix(arg, "--graph"): @@ -816,6 +811,8 @@ func parseRunArgs(args []string, cwd string) (*RunOptions, error) { } } case strings.HasPrefix(arg, "--includeDependencies"): + log.Printf("[WARNING] The --includeDependencies flag has renamed to --include-dependencies for consistency. Please use `--include-dependencies` instead") + runOptions.ancestors = true case strings.HasPrefix(arg, "--include-dependencies"): runOptions.ancestors = true case strings.HasPrefix(arg, "--only"): @@ -845,32 +842,22 @@ func parseRunArgs(args []string, cwd string) (*RunOptions, error) { return runOptions, nil } -// convertStringsToGlobs converts string glob patterns to an array glob.Glob instances. -func convertStringsToGlobs(patterns []string) (globss []glob.Glob, err error) { - var globs = make([]glob.Glob, 0, len(patterns)) - for _, pattern := range patterns { - g, err := glob.Compile(pattern) - if err != nil { - return nil, err - } - globs = append(globs, g) - } - - return globs, nil -} - // getScopedPackages returns a set of package names in scope for a given list of glob patterns func getScopedPackages(ctx *context.Context, scopePatterns []string) (scopePkgs util.Set, err error) { - scopeGlobs, err := convertStringsToGlobs(scopePatterns) if err != nil { return nil, fmt.Errorf("invalid glob pattern %w", err) } var scopedPkgs = make(util.Set) + if len(scopePatterns) == 0 { + return scopePkgs, nil + } + glob, err := filter.Compile(scopePatterns) + if err != nil { + return nil, err + } for _, f := range ctx.PackageNames { - for _, g := range scopeGlobs { - if g.Match(f) { - scopedPkgs.Add(f) - } + if glob.Match(f) { + scopedPkgs.Add(f) } } diff --git a/cli/internal/util/filter/filter.go b/cli/internal/util/filter/filter.go new file mode 100644 index 0000000000000..143af42b49877 --- /dev/null +++ b/cli/internal/util/filter/filter.go @@ -0,0 +1,134 @@ +// Copyright (c) 2015-2020 InfluxData Inc. MIT License (MIT) +// https://github.com/influxdata/telegraf +package filter + +import ( + "strings" + + "github.com/gobwas/glob" +) + +type Filter interface { + Match(string) bool +} + +// Compile takes a list of string filters and returns a Filter interface +// for matching a given string against the filter list. The filter list +// supports glob matching too, ie: +// +// f, _ := Compile([]string{"cpu", "mem", "net*"}) +// f.Match("cpu") // true +// f.Match("network") // true +// f.Match("memory") // false +// +func Compile(filters []string) (Filter, error) { + // return if there is nothing to compile + if len(filters) == 0 { + return nil, nil + } + + // check if we can compile a non-glob filter + noGlob := true + for _, filter := range filters { + if hasMeta(filter) { + noGlob = false + break + } + } + + switch { + case noGlob: + // return non-globbing filter if not needed. + return compileFilterNoGlob(filters), nil + case len(filters) == 1: + return glob.Compile(filters[0]) + default: + return glob.Compile("{" + strings.Join(filters, ",") + "}") + } +} + +// hasMeta reports whether path contains any magic glob characters. +func hasMeta(s string) bool { + return strings.ContainsAny(s, "*?[") +} + +type filter struct { + m map[string]struct{} +} + +func (f *filter) Match(s string) bool { + _, ok := f.m[s] + return ok +} + +type filtersingle struct { + s string +} + +func (f *filtersingle) Match(s string) bool { + return f.s == s +} + +func compileFilterNoGlob(filters []string) Filter { + if len(filters) == 1 { + return &filtersingle{s: filters[0]} + } + out := filter{m: make(map[string]struct{})} + for _, filter := range filters { + out.m[filter] = struct{}{} + } + return &out +} + +type IncludeExcludeFilter struct { + include Filter + exclude Filter + includeDefault bool + excludeDefault bool +} + +func NewIncludeExcludeFilter( + include []string, + exclude []string, +) (Filter, error) { + return NewIncludeExcludeFilterDefaults(include, exclude, true, false) +} + +func NewIncludeExcludeFilterDefaults( + include []string, + exclude []string, + includeDefault bool, + excludeDefault bool, +) (Filter, error) { + in, err := Compile(include) + if err != nil { + return nil, err + } + + ex, err := Compile(exclude) + if err != nil { + return nil, err + } + + return &IncludeExcludeFilter{in, ex, includeDefault, excludeDefault}, nil +} + +func (f *IncludeExcludeFilter) Match(s string) bool { + if f.include != nil { + if !f.include.Match(s) { + return false + } + } else if !f.includeDefault { + return false + } + + if f.exclude != nil { + if f.exclude.Match(s) { + return false + } + } else if f.excludeDefault { + return false + } + + return true +} diff --git a/cli/internal/util/filter/filter_test.go b/cli/internal/util/filter/filter_test.go new file mode 100644 index 0000000000000..727a4b685d9ff --- /dev/null +++ b/cli/internal/util/filter/filter_test.go @@ -0,0 +1,116 @@ +// Copyright (c) 2015-2020 InfluxData Inc. MIT License (MIT) +// https://github.com/influxdata/telegraf +package filter + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestCompile(t *testing.T) { + f, err := Compile([]string{}) + assert.NoError(t, err) + assert.Nil(t, f) + + f, err = Compile([]string{"cpu"}) + assert.NoError(t, err) + assert.True(t, f.Match("cpu")) + assert.False(t, f.Match("cpu0")) + assert.False(t, f.Match("mem")) + + f, err = Compile([]string{"cpu*"}) + assert.NoError(t, err) + assert.True(t, f.Match("cpu")) + assert.True(t, f.Match("cpu0")) + assert.False(t, f.Match("mem")) + + f, err = Compile([]string{"cpu", "mem"}) + assert.NoError(t, err) + assert.True(t, f.Match("cpu")) + assert.False(t, f.Match("cpu0")) + assert.True(t, f.Match("mem")) + + f, err = Compile([]string{"cpu", "mem", "net*"}) + assert.NoError(t, err) + assert.True(t, f.Match("cpu")) + assert.False(t, f.Match("cpu0")) + assert.True(t, f.Match("mem")) + assert.True(t, f.Match("network")) +} + +func TestIncludeExclude(t *testing.T) { + tags := []string{} + labels := []string{"best", "com_influxdata", "timeseries", "com_influxdata_telegraf", "ever"} + + filter, err := NewIncludeExcludeFilter([]string{}, []string{"com_influx*"}) + if err != nil { + t.Fatalf("Failed to create include/exclude filter - %v", err) + } + + for i := range labels { + if filter.Match(labels[i]) { + tags = append(tags, labels[i]) + } + } + + assert.Equal(t, []string{"best", "timeseries", "ever"}, tags) +} + +var benchbool bool + +func BenchmarkFilterSingleNoGlobFalse(b *testing.B) { + f, _ := Compile([]string{"cpu"}) + var tmp bool + for n := 0; n < b.N; n++ { + tmp = f.Match("network") + } + benchbool = tmp +} + +func BenchmarkFilterSingleNoGlobTrue(b *testing.B) { + f, _ := Compile([]string{"cpu"}) + var tmp bool + for n := 0; n < b.N; n++ { + tmp = f.Match("cpu") + } + benchbool = tmp +} + +func BenchmarkFilter(b *testing.B) { + f, _ := Compile([]string{"cpu", "mem", "net*"}) + var tmp bool + for n := 0; n < b.N; n++ { + tmp = f.Match("network") + } + benchbool = tmp +} + +func BenchmarkFilterNoGlob(b *testing.B) { + f, _ := Compile([]string{"cpu", "mem", "net"}) + var tmp bool + for n := 0; n < b.N; n++ { + tmp = f.Match("net") + } + benchbool = tmp +} + +func BenchmarkFilter2(b *testing.B) { + f, _ := Compile([]string{"aa", "bb", "c", "ad", "ar", "at", "aq", + "aw", "az", "axxx", "ab", "cpu", "mem", "net*"}) + var tmp bool + for n := 0; n < b.N; n++ { + tmp = f.Match("network") + } + benchbool = tmp +} + +func BenchmarkFilter2NoGlob(b *testing.B) { + f, _ := Compile([]string{"aa", "bb", "c", "ad", "ar", "at", "aq", + "aw", "az", "axxx", "ab", "cpu", "mem", "net"}) + var tmp bool + for n := 0; n < b.N; n++ { + tmp = f.Match("net") + } + benchbool = tmp +} From cf4ba2790d1a80115d9943e08fa799d25027039b Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Thu, 23 Dec 2021 15:39:25 -0500 Subject: [PATCH 2/9] Rename ancestors and deps to mach the flag --- cli/internal/run/run.go | 62 ++++++++------- cli/internal/run/run_test.go | 148 +++++++++++++++++------------------ 2 files changed, 107 insertions(+), 103 deletions(-) diff --git a/cli/internal/run/run.go b/cli/internal/run/run.go index 83857380b90f7..d9cca64ea7d3e 100644 --- a/cli/internal/run/run.go +++ b/cli/internal/run/run.go @@ -224,37 +224,40 @@ func (c *RunCommand) Run(args []string) int { c.Ui.Output(fmt.Sprintf(ui.Dim("• Packages changed since %s: %s"), runOptions.since, strings.Join(filteredPkgs.UnsafeListOfStrings(), ", "))) } else if scopePkgs.Len() > 0 { filteredPkgs = scopePkgs - c.Ui.Output(fmt.Sprintf(ui.Dim("• Packages in scope: %v"), strings.Join(scopePkgs.UnsafeListOfStrings(), ", "))) } else { for _, f := range ctx.PackageNames { filteredPkgs.Add(f) } } - if runOptions.deps { + if runOptions.includeDependents { // perf??? this is duplicative from the step above - for _, changed := range filteredPkgs { - descenders, err := ctx.TopologicalGraph.Descendents(changed) + for _, pkg := range filteredPkgs { + descenders, err := ctx.TopologicalGraph.Descendents(pkg) if err != nil { c.logError(c.Config.Logger, "", fmt.Errorf("error calculating affected packages: %w", err)) return 1 } - // filteredPkgs.Add(changed) + c.Config.Logger.Debug("dependents", "pkg", pkg, "value", descenders.List()) for _, d := range descenders { - filteredPkgs.Add(d) + // we need to exlcude the fake root node + // since it is not a real package + if d != ctx.RootNode { + filteredPkgs.Add(d) + } } } c.Config.Logger.Debug("running with dependents") } - if runOptions.ancestors { - for _, changed := range filteredPkgs { - ancestors, err := ctx.TopologicalGraph.Ancestors(changed) + if runOptions.includeDependencies { + for _, pkg := range filteredPkgs { + ancestors, err := ctx.TopologicalGraph.Ancestors(pkg) if err != nil { log.Printf("error getting dependency %v", err) return 1 } - c.Config.Logger.Debug("dependencies", ancestors) + c.Config.Logger.Debug("dependencies", "pkg", pkg, "value", ancestors.List()) for _, d := range ancestors { // we need to exlcude the fake root node // since it is not a real package @@ -265,9 +268,10 @@ func (c *RunCommand) Run(args []string) int { } c.Config.Logger.Debug(ui.Dim("running with dependencies")) } - c.Config.Logger.Debug("execution scope", "packages", strings.Join(filteredPkgs.UnsafeListOfStrings(), ", ")) c.Config.Logger.Debug("global hash", "value", ctx.GlobalHash) - + packagesInScope := filteredPkgs.UnsafeListOfStrings() + sort.Strings(packagesInScope) + c.Ui.Output(fmt.Sprintf(ui.Dim("• Packages in scope: %v"), strings.Join(packagesInScope, ", "))) c.Config.Logger.Debug("local cache folder", "path", runOptions.cacheFolder) fs.EnsureDir(runOptions.cacheFolder) turboCache := cache.New(c.Config) @@ -677,9 +681,9 @@ func (c *RunCommand) Run(args []string) int { type RunOptions struct { // Whether to include dependent impacted consumers in execution (defaults to true) - deps bool - // Whether to include ancestors (pkg.dependencies) in execution (defaults to false) - ancestors bool + includeDependents bool + // Whether to include includeDependencies (pkg.dependencies) in execution (defaults to false) + includeDependencies bool // List of globs of file paths to ignore from exection scope calculation ignore []string // Whether to stream log outputs @@ -715,17 +719,17 @@ type RunOptions struct { func getDefaultRunOptions() *RunOptions { return &RunOptions{ - bail: true, - deps: true, - parallel: false, - concurrency: 10, - dotGraph: "", - ancestors: false, - cache: true, - profile: "", // empty string does no tracing - forceExecution: false, - stream: true, - only: false, + bail: true, + includeDependents: true, + parallel: false, + concurrency: 10, + dotGraph: "", + includeDependencies: false, + cache: true, + profile: "", // empty string does no tracing + forceExecution: false, + stream: true, + only: false, } } @@ -776,7 +780,7 @@ func parseRunArgs(args []string, cwd string) (*RunOptions, error) { runOptions.profile = fmt.Sprintf("%v-profile.json", time.Now().UnixNano()) case strings.HasPrefix(arg, "--no-deps"): - runOptions.deps = false + runOptions.includeDependents = false case strings.HasPrefix(arg, "--no-cache"): runOptions.cache = true case strings.HasPrefix(arg, "--cacheFolder"): @@ -812,9 +816,9 @@ func parseRunArgs(args []string, cwd string) (*RunOptions, error) { } case strings.HasPrefix(arg, "--includeDependencies"): log.Printf("[WARNING] The --includeDependencies flag has renamed to --include-dependencies for consistency. Please use `--include-dependencies` instead") - runOptions.ancestors = true + runOptions.includeDependencies = true case strings.HasPrefix(arg, "--include-dependencies"): - runOptions.ancestors = true + runOptions.includeDependencies = true case strings.HasPrefix(arg, "--only"): runOptions.only = true case strings.HasPrefix(arg, "--team"): diff --git a/cli/internal/run/run_test.go b/cli/internal/run/run_test.go index a139f3cc2686c..ffa03a8226d9e 100644 --- a/cli/internal/run/run_test.go +++ b/cli/internal/run/run_test.go @@ -20,116 +20,116 @@ func TestParseConfig(t *testing.T) { "string flags", []string{"foo"}, &RunOptions{ - deps: true, - stream: true, - bail: true, - dotGraph: "", - concurrency: 10, - ancestors: false, - cache: true, - forceExecution: false, - profile: "", - cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), + includeDependents: true, + stream: true, + bail: true, + dotGraph: "", + concurrency: 10, + includeDependencies: false, + cache: true, + forceExecution: false, + profile: "", + cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), }, }, { "cwd", []string{"foo", "--cwd=zop"}, &RunOptions{ - deps: true, - stream: true, - bail: true, - dotGraph: "", - concurrency: 10, - ancestors: false, - cache: true, - forceExecution: false, - profile: "", - cwd: "zop", - cacheFolder: filepath.FromSlash("zop/node_modules/.cache/turbo"), + includeDependents: true, + stream: true, + bail: true, + dotGraph: "", + concurrency: 10, + includeDependencies: false, + cache: true, + forceExecution: false, + profile: "", + cwd: "zop", + cacheFolder: filepath.FromSlash("zop/node_modules/.cache/turbo"), }, }, { "scope", []string{"foo", "--scope=foo", "--scope=blah"}, &RunOptions{ - deps: true, - stream: true, - bail: true, - dotGraph: "", - concurrency: 10, - ancestors: false, - cache: true, - forceExecution: false, - profile: "", - scope: []string{"foo", "blah"}, - cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), + includeDependents: true, + stream: true, + bail: true, + dotGraph: "", + concurrency: 10, + includeDependencies: false, + cache: true, + forceExecution: false, + profile: "", + scope: []string{"foo", "blah"}, + cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), }, }, { "concurrency", []string{"foo", "--concurrency=12"}, &RunOptions{ - deps: true, - stream: true, - bail: true, - dotGraph: "", - concurrency: 12, - ancestors: false, - cache: true, - forceExecution: false, - profile: "", - cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), + includeDependents: true, + stream: true, + bail: true, + dotGraph: "", + concurrency: 12, + includeDependencies: false, + cache: true, + forceExecution: false, + profile: "", + cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), }, }, { "graph", []string{"foo", "--graph=g.png"}, &RunOptions{ - deps: true, - stream: true, - bail: true, - dotGraph: "g.png", - concurrency: 10, - ancestors: false, - cache: true, - forceExecution: false, - profile: "", - cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), + includeDependents: true, + stream: true, + bail: true, + dotGraph: "g.png", + concurrency: 10, + includeDependencies: false, + cache: true, + forceExecution: false, + profile: "", + cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), }, }, { "passThroughArgs", []string{"foo", "--graph=g.png", "--", "--boop", "zoop"}, &RunOptions{ - deps: true, - stream: true, - bail: true, - dotGraph: "g.png", - concurrency: 10, - ancestors: false, - cache: true, - forceExecution: false, - profile: "", - cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), - passThroughArgs: []string{"--boop", "zoop"}, + includeDependents: true, + stream: true, + bail: true, + dotGraph: "g.png", + concurrency: 10, + includeDependencies: false, + cache: true, + forceExecution: false, + profile: "", + cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), + passThroughArgs: []string{"--boop", "zoop"}, }, }, { "Empty passThroughArgs", []string{"foo", "--graph=g.png", "--"}, &RunOptions{ - deps: true, - stream: true, - bail: true, - dotGraph: "g.png", - concurrency: 10, - ancestors: false, - cache: true, - forceExecution: false, - profile: "", - cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), - passThroughArgs: []string{}, + includeDependents: true, + stream: true, + bail: true, + dotGraph: "g.png", + concurrency: 10, + includeDependencies: false, + cache: true, + forceExecution: false, + profile: "", + cacheFolder: filepath.FromSlash("node_modules/.cache/turbo"), + passThroughArgs: []string{}, }, }, } From 48296fc477b60817fa5a901f8d7ff64fc2e0e991 Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Thu, 23 Dec 2021 17:22:13 -0500 Subject: [PATCH 3/9] Fix glob nil bomb --- cli/internal/run/run.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/cli/internal/run/run.go b/cli/internal/run/run.go index d9cca64ea7d3e..8c5eef596adaa 100644 --- a/cli/internal/run/run.go +++ b/cli/internal/run/run.go @@ -156,19 +156,23 @@ func (c *RunCommand) Run(args []string) int { } ignoreSet := make(util.Set) - - for _, f := range changedFiles { - if globalDepsGlob.Match(f) { - hasRepoGlobalFileChanged = true - break + if globalDepsGlob != nil { + for _, f := range changedFiles { + if globalDepsGlob.Match(f) { + hasRepoGlobalFileChanged = true + break + } } } - for _, f := range changedFiles { - if ignoreGlob.Match(f) { - ignoreSet.Add(f) + if ignoreGlob != nil { + for _, f := range changedFiles { + if ignoreGlob.Match(f) { + ignoreSet.Add(f) + } } } + filteredChangedFiles := make(util.Set) // Ignore any changed files in the ignore set for _, c := range changedFiles { From b5e33fbd3512e65917c7ae530090eeaffdba69dc Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Thu, 23 Dec 2021 17:22:32 -0500 Subject: [PATCH 4/9] Add more e2e to ensure hashing cascades properly --- cli/scripts/e2e/e2e.ts | 84 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 82 insertions(+), 2 deletions(-) diff --git a/cli/scripts/e2e/e2e.ts b/cli/scripts/e2e/e2e.ts index bc5b6471c0aaa..6e645e02f7f6c 100644 --- a/cli/scripts/e2e/e2e.ts +++ b/cli/scripts/e2e/e2e.ts @@ -74,6 +74,7 @@ function runSmokeTests( }, `Could not read log file from cache ${logFilePath}`); assert.ok(text.includes("testing c"), "Contains correct output"); + repo.newBranch("my-feature-branch"); repo.commitFiles({ [path.join("packages", "a", "test.js")]: `console.log('testingz a');`, @@ -85,21 +86,100 @@ function runSmokeTests( options ); const testCLine = (sinceResults.stdout + sinceResults.stderr).split("\n"); + assert.equal( `• Packages changed since main: a`, testCLine[0], "Calculates changed packages (--since)" ); + assert.equal(`• Packages in scope: a`, testCLine[1], "Packages in scope"); assert.equal( `• Running test in 1 packages`, - testCLine[1], + testCLine[2], "Runs only in changed packages" ); assert.ok( - testCLine[2].startsWith(`a:test: cache miss, executing`), + testCLine[3].startsWith(`a:test: cache miss, executing`), "Cache miss in changed package" ); + // Check cache hit after another run + const since2Results = repo.turbo( + "run", + ["test", "--since=main", "--stream", "-vvv"], + options + ); + const testCLine2 = (since2Results.stdout + since2Results.stderr).split( + "\n" + ); + assert.equal( + `• Packages changed since main: a`, + testCLine2[0], + "Calculates changed packages (--since) after a second run" + ); + assert.equal( + `• Packages in scope: a`, + testCLine2[1], + "Packages in scope after a second run" + ); + assert.equal( + `• Running test in 1 packages`, + testCLine2[2], + "Runs only in changed packages after a second run" + ); + assert.ok( + testCLine2[3].startsWith(`a:test: cache hit, replaying output`), + "Cache hit in changed package after a second run" + ); + + // Check that hashes are different and trigger a cascade + repo.commitFiles({ + [path.join("packages", "b", "test.js")]: `console.log('testingz b');`, + }); + + const since3Results = repo.turbo( + "run", + ["test", "--stream", "-vvv"], + options + ); + + const testCLine3 = (since3Results.stdout + since3Results.stderr).split( + "\n" + ); + + assert.equal( + `• Packages in scope: a, b, c`, + testCLine3[0], + "Packages in scope after a third run" + ); + assert.equal( + `• Running test in 3 packages`, + testCLine3[1], + "Runs correct number of packages" + ); + const runnerOrder = [testCLine3[2], testCLine3[3], testCLine3[4]]; + runnerOrder.sort(); + assert.ok( + runnerOrder[0].includes("a:test: cache miss, executing"), + `A was impacted. + - Expected: a:test: cache miss, executing + + Actual: ${runnerOrder[0]} + ` + ); + assert.ok( + runnerOrder[1].includes(`b:test: cache miss, executing`), + `B was impacted. + - Expected: b:test: cache miss, executing + + Actual: ${runnerOrder[1]} + ` + ); + assert.ok( + runnerOrder[2].includes(`c:test: cache hit, replaying output`), + `C was unchanged + - Expected: c:test: cache hit, replaying output + + Actual: ${runnerOrder[2]} + ` + ); repo.cleanup(); }); } From 1b15eb37b604e95f0d19f0e010ce8c8150accad9 Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Thu, 23 Dec 2021 17:28:48 -0500 Subject: [PATCH 5/9] Unset turbo token for GH actions --- cli/scripts/e2e/e2e.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cli/scripts/e2e/e2e.ts b/cli/scripts/e2e/e2e.ts index 6e645e02f7f6c..4ff05aa7d47b1 100644 --- a/cli/scripts/e2e/e2e.ts +++ b/cli/scripts/e2e/e2e.ts @@ -19,6 +19,9 @@ const basicPipeline = { }, }; +// This is injected by github actions +process.env.TURBO_TOKEN = ""; + for (let npmClient of ["yarn", "pnpm", "npm"] as const) { const repo = new Monorepo("basics"); repo.init(npmClient, basicPipeline); From 96753f211b155683945954abe809b4aa1e3594b0 Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Thu, 23 Dec 2021 17:39:50 -0500 Subject: [PATCH 6/9] Add some useful logging to e2e tests --- cli/scripts/e2e/e2e.ts | 17 ++++++++--------- cli/scripts/turbo-monorepo-basics-0ZoBr1 | 1 + cli/scripts/turbo-monorepo-basics-MHljFk | 1 + cli/scripts/turbo-monorepo-basics-OrH9Kt | 1 + cli/scripts/turbo-monorepo-basics-bfTjFu | 1 + cli/scripts/turbo-monorepo-basics-omC2Am | 1 + cli/scripts/turbo-monorepo-basics-omKznF | 1 + cli/scripts/turbo-monorepo-basics-qufxOS | 1 + cli/scripts/turbo-monorepo-basics-ubuqt4 | 1 + cli/scripts/turbo-monorepo-basics-vRdoGK | 1 + .../turbo-monorepo-in-subdirectory-ByfuNw | 1 + .../turbo-monorepo-in-subdirectory-IOPifN | 1 + .../turbo-monorepo-in-subdirectory-JhfWAC | 1 + .../turbo-monorepo-in-subdirectory-RCLv21 | 1 + .../turbo-monorepo-in-subdirectory-gX7gxU | 1 + .../turbo-monorepo-in-subdirectory-gwcB0Q | 1 + .../turbo-monorepo-in-subdirectory-hDNBEF | 1 + .../turbo-monorepo-in-subdirectory-kfmtZM | 1 + .../turbo-monorepo-in-subdirectory-lDoJFX | 1 + .../turbo-monorepo-in-subdirectory-pos5J7 | 1 + 20 files changed, 27 insertions(+), 9 deletions(-) create mode 160000 cli/scripts/turbo-monorepo-basics-0ZoBr1 create mode 160000 cli/scripts/turbo-monorepo-basics-MHljFk create mode 160000 cli/scripts/turbo-monorepo-basics-OrH9Kt create mode 160000 cli/scripts/turbo-monorepo-basics-bfTjFu create mode 160000 cli/scripts/turbo-monorepo-basics-omC2Am create mode 160000 cli/scripts/turbo-monorepo-basics-omKznF create mode 160000 cli/scripts/turbo-monorepo-basics-qufxOS create mode 160000 cli/scripts/turbo-monorepo-basics-ubuqt4 create mode 160000 cli/scripts/turbo-monorepo-basics-vRdoGK create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-ByfuNw create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-IOPifN create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-JhfWAC create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-RCLv21 create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-gX7gxU create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-gwcB0Q create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-hDNBEF create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-kfmtZM create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-lDoJFX create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-pos5J7 diff --git a/cli/scripts/e2e/e2e.ts b/cli/scripts/e2e/e2e.ts index 4ff05aa7d47b1..befdc74bc9676 100644 --- a/cli/scripts/e2e/e2e.ts +++ b/cli/scripts/e2e/e2e.ts @@ -130,6 +130,7 @@ function runSmokeTests( testCLine2[2], "Runs only in changed packages after a second run" ); + assert.ok( testCLine2[3].startsWith(`a:test: cache hit, replaying output`), "Cache hit in changed package after a second run" @@ -140,15 +141,13 @@ function runSmokeTests( [path.join("packages", "b", "test.js")]: `console.log('testingz b');`, }); - const since3Results = repo.turbo( - "run", - ["test", "--stream", "-vvv"], - options - ); - - const testCLine3 = (since3Results.stdout + since3Results.stderr).split( - "\n" - ); + const hashChangeResults = repo.turbo("run", ["test", "--stream"], options); + const hashChangeResultsOut = + hashChangeResults.stdout + hashChangeResults.stderr; + console.log("------------------------------------------------------"); + console.log(hashChangeResultsOut); + console.log("------------------------------------------------------"); + const testCLine3 = hashChangeResultsOut.split("\n"); assert.equal( `• Packages in scope: a, b, c`, diff --git a/cli/scripts/turbo-monorepo-basics-0ZoBr1 b/cli/scripts/turbo-monorepo-basics-0ZoBr1 new file mode 160000 index 0000000000000..cff61abb71f43 --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-0ZoBr1 @@ -0,0 +1 @@ +Subproject commit cff61abb71f4300f3ce6ad2102122b943168b527 diff --git a/cli/scripts/turbo-monorepo-basics-MHljFk b/cli/scripts/turbo-monorepo-basics-MHljFk new file mode 160000 index 0000000000000..4acf306b1e736 --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-MHljFk @@ -0,0 +1 @@ +Subproject commit 4acf306b1e736da64ae6c6d9f548674b4ca4f086 diff --git a/cli/scripts/turbo-monorepo-basics-OrH9Kt b/cli/scripts/turbo-monorepo-basics-OrH9Kt new file mode 160000 index 0000000000000..7cb119364f994 --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-OrH9Kt @@ -0,0 +1 @@ +Subproject commit 7cb119364f99489cbf76be9dee7e4143bf70d550 diff --git a/cli/scripts/turbo-monorepo-basics-bfTjFu b/cli/scripts/turbo-monorepo-basics-bfTjFu new file mode 160000 index 0000000000000..2a9075ffda724 --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-bfTjFu @@ -0,0 +1 @@ +Subproject commit 2a9075ffda72498cf966fbb601c8393e5ca73f7c diff --git a/cli/scripts/turbo-monorepo-basics-omC2Am b/cli/scripts/turbo-monorepo-basics-omC2Am new file mode 160000 index 0000000000000..fdc10149075ae --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-omC2Am @@ -0,0 +1 @@ +Subproject commit fdc10149075ae869b19786aa333774c4c64667cd diff --git a/cli/scripts/turbo-monorepo-basics-omKznF b/cli/scripts/turbo-monorepo-basics-omKznF new file mode 160000 index 0000000000000..50dbe3607762b --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-omKznF @@ -0,0 +1 @@ +Subproject commit 50dbe3607762bac1d230886bac99aa404dc28ae3 diff --git a/cli/scripts/turbo-monorepo-basics-qufxOS b/cli/scripts/turbo-monorepo-basics-qufxOS new file mode 160000 index 0000000000000..53455e1455d61 --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-qufxOS @@ -0,0 +1 @@ +Subproject commit 53455e1455d6198112b15200228e49e06109cd3e diff --git a/cli/scripts/turbo-monorepo-basics-ubuqt4 b/cli/scripts/turbo-monorepo-basics-ubuqt4 new file mode 160000 index 0000000000000..dcc4ababbae13 --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-ubuqt4 @@ -0,0 +1 @@ +Subproject commit dcc4ababbae13338fa502925148a6c8d6abdfdfa diff --git a/cli/scripts/turbo-monorepo-basics-vRdoGK b/cli/scripts/turbo-monorepo-basics-vRdoGK new file mode 160000 index 0000000000000..4065c5e5f072a --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-vRdoGK @@ -0,0 +1 @@ +Subproject commit 4065c5e5f072a0fc1955e7ef0ea358d79439dfe3 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-ByfuNw b/cli/scripts/turbo-monorepo-in-subdirectory-ByfuNw new file mode 160000 index 0000000000000..793e1b4313a73 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-ByfuNw @@ -0,0 +1 @@ +Subproject commit 793e1b4313a7323630d66acbea41b962d63b36dd diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-IOPifN b/cli/scripts/turbo-monorepo-in-subdirectory-IOPifN new file mode 160000 index 0000000000000..d26a823333ae6 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-IOPifN @@ -0,0 +1 @@ +Subproject commit d26a823333ae6932804c6bb6b9989b8987b06007 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-JhfWAC b/cli/scripts/turbo-monorepo-in-subdirectory-JhfWAC new file mode 160000 index 0000000000000..d4708db13cef3 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-JhfWAC @@ -0,0 +1 @@ +Subproject commit d4708db13cef3f734fe7451dc3ef8e7ad700ed57 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-RCLv21 b/cli/scripts/turbo-monorepo-in-subdirectory-RCLv21 new file mode 160000 index 0000000000000..b41c4787f21e9 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-RCLv21 @@ -0,0 +1 @@ +Subproject commit b41c4787f21e9fe2033b26173844cbf90e74d6ab diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-gX7gxU b/cli/scripts/turbo-monorepo-in-subdirectory-gX7gxU new file mode 160000 index 0000000000000..fd437a05b5db7 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-gX7gxU @@ -0,0 +1 @@ +Subproject commit fd437a05b5db7b86ec47d2b6d232b42fb716002f diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-gwcB0Q b/cli/scripts/turbo-monorepo-in-subdirectory-gwcB0Q new file mode 160000 index 0000000000000..a58f664553053 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-gwcB0Q @@ -0,0 +1 @@ +Subproject commit a58f664553053f8c47ffc8fd3d47db04cd4fb432 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-hDNBEF b/cli/scripts/turbo-monorepo-in-subdirectory-hDNBEF new file mode 160000 index 0000000000000..23446af1ee8bc --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-hDNBEF @@ -0,0 +1 @@ +Subproject commit 23446af1ee8bcbbe58367e941846b135b2d094af diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-kfmtZM b/cli/scripts/turbo-monorepo-in-subdirectory-kfmtZM new file mode 160000 index 0000000000000..08a419abdbe1c --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-kfmtZM @@ -0,0 +1 @@ +Subproject commit 08a419abdbe1cf5b63870a4702926f8637c7c651 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-lDoJFX b/cli/scripts/turbo-monorepo-in-subdirectory-lDoJFX new file mode 160000 index 0000000000000..66e41e5338808 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-lDoJFX @@ -0,0 +1 @@ +Subproject commit 66e41e5338808ef22f952278b7972d9d80df805d diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-pos5J7 b/cli/scripts/turbo-monorepo-in-subdirectory-pos5J7 new file mode 160000 index 0000000000000..48a006974cae5 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-pos5J7 @@ -0,0 +1 @@ +Subproject commit 48a006974cae53c1d7498d14d6c157633b3f22d8 From dc9348dec7c21dffa938f3328d85a3cd3d6a5d62 Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Thu, 23 Dec 2021 17:46:45 -0500 Subject: [PATCH 7/9] Use findIndex instead --- cli/scripts/e2e/e2e.ts | 29 ++++++++----------- cli/scripts/turbo-monorepo-basics-AK5tl4 | 1 + cli/scripts/turbo-monorepo-basics-GOqcBl | 1 + cli/scripts/turbo-monorepo-basics-H0iR4j | 1 + cli/scripts/turbo-monorepo-basics-H2FJBV | 1 + cli/scripts/turbo-monorepo-basics-VVHqJq | 1 + cli/scripts/turbo-monorepo-basics-pI4vmP | 1 + cli/scripts/turbo-monorepo-basics-yJm3TK | 1 + .../turbo-monorepo-in-subdirectory-IyvQXb | 1 + .../turbo-monorepo-in-subdirectory-KL2Wf3 | 1 + .../turbo-monorepo-in-subdirectory-PC5khk | 1 + .../turbo-monorepo-in-subdirectory-TkCS0c | 1 + .../turbo-monorepo-in-subdirectory-fCtAZu | 1 + .../turbo-monorepo-in-subdirectory-iqfqWH | 1 + .../turbo-monorepo-in-subdirectory-zmPsoV | 1 + 15 files changed, 26 insertions(+), 17 deletions(-) create mode 160000 cli/scripts/turbo-monorepo-basics-AK5tl4 create mode 160000 cli/scripts/turbo-monorepo-basics-GOqcBl create mode 160000 cli/scripts/turbo-monorepo-basics-H0iR4j create mode 160000 cli/scripts/turbo-monorepo-basics-H2FJBV create mode 160000 cli/scripts/turbo-monorepo-basics-VVHqJq create mode 160000 cli/scripts/turbo-monorepo-basics-pI4vmP create mode 160000 cli/scripts/turbo-monorepo-basics-yJm3TK create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-IyvQXb create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-KL2Wf3 create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-PC5khk create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-TkCS0c create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-fCtAZu create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-iqfqWH create mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-zmPsoV diff --git a/cli/scripts/e2e/e2e.ts b/cli/scripts/e2e/e2e.ts index befdc74bc9676..894ff4d81ceaf 100644 --- a/cli/scripts/e2e/e2e.ts +++ b/cli/scripts/e2e/e2e.ts @@ -159,28 +159,23 @@ function runSmokeTests( testCLine3[1], "Runs correct number of packages" ); - const runnerOrder = [testCLine3[2], testCLine3[3], testCLine3[4]]; - runnerOrder.sort(); assert.ok( - runnerOrder[0].includes("a:test: cache miss, executing"), - `A was impacted. - - Expected: a:test: cache miss, executing - + Actual: ${runnerOrder[0]} - ` + testCLine3.findIndex((l) => + l.startsWith("a:test: cache miss, executing") + ) >= 0, + `A was impacted.` ); assert.ok( - runnerOrder[1].includes(`b:test: cache miss, executing`), - `B was impacted. - - Expected: b:test: cache miss, executing - + Actual: ${runnerOrder[1]} - ` + testCLine3.findIndex((l) => + l.startsWith("b:test: cache miss, executing") + ) >= 0, + `B was impacted.` ); assert.ok( - runnerOrder[2].includes(`c:test: cache hit, replaying output`), - `C was unchanged - - Expected: c:test: cache hit, replaying output - + Actual: ${runnerOrder[2]} - ` + testCLine3.findIndex((l) => + l.startsWith("c:test: cache hit, replaying output") + ) >= 0, + `C was unchanged` ); repo.cleanup(); }); diff --git a/cli/scripts/turbo-monorepo-basics-AK5tl4 b/cli/scripts/turbo-monorepo-basics-AK5tl4 new file mode 160000 index 0000000000000..15aca5165dd2b --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-AK5tl4 @@ -0,0 +1 @@ +Subproject commit 15aca5165dd2bf0dc712d0a171e4d8eb83c2d413 diff --git a/cli/scripts/turbo-monorepo-basics-GOqcBl b/cli/scripts/turbo-monorepo-basics-GOqcBl new file mode 160000 index 0000000000000..af89b15192346 --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-GOqcBl @@ -0,0 +1 @@ +Subproject commit af89b1519234605ae156ab2d1d323307647ddf96 diff --git a/cli/scripts/turbo-monorepo-basics-H0iR4j b/cli/scripts/turbo-monorepo-basics-H0iR4j new file mode 160000 index 0000000000000..e0f09fd18cd7f --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-H0iR4j @@ -0,0 +1 @@ +Subproject commit e0f09fd18cd7f7688bf96bcc0dc676b8e513372a diff --git a/cli/scripts/turbo-monorepo-basics-H2FJBV b/cli/scripts/turbo-monorepo-basics-H2FJBV new file mode 160000 index 0000000000000..fea5171e0bad9 --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-H2FJBV @@ -0,0 +1 @@ +Subproject commit fea5171e0bad9ddc5bd596117d52da75d33aa1d8 diff --git a/cli/scripts/turbo-monorepo-basics-VVHqJq b/cli/scripts/turbo-monorepo-basics-VVHqJq new file mode 160000 index 0000000000000..4fe72536c3039 --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-VVHqJq @@ -0,0 +1 @@ +Subproject commit 4fe72536c30397d596a4e26713604b2aeb813e85 diff --git a/cli/scripts/turbo-monorepo-basics-pI4vmP b/cli/scripts/turbo-monorepo-basics-pI4vmP new file mode 160000 index 0000000000000..de4408622ca51 --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-pI4vmP @@ -0,0 +1 @@ +Subproject commit de4408622ca51f8006a0a079ad4a93151b6a910d diff --git a/cli/scripts/turbo-monorepo-basics-yJm3TK b/cli/scripts/turbo-monorepo-basics-yJm3TK new file mode 160000 index 0000000000000..576d33b59342a --- /dev/null +++ b/cli/scripts/turbo-monorepo-basics-yJm3TK @@ -0,0 +1 @@ +Subproject commit 576d33b59342a9ba5042c716df56d9c1f352d211 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-IyvQXb b/cli/scripts/turbo-monorepo-in-subdirectory-IyvQXb new file mode 160000 index 0000000000000..caf9f07add25e --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-IyvQXb @@ -0,0 +1 @@ +Subproject commit caf9f07add25e51053e3f0dcfc1e50e98bcc356f diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-KL2Wf3 b/cli/scripts/turbo-monorepo-in-subdirectory-KL2Wf3 new file mode 160000 index 0000000000000..2b5cc0d075f58 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-KL2Wf3 @@ -0,0 +1 @@ +Subproject commit 2b5cc0d075f58447cbac01200ad2f4402185a3ae diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-PC5khk b/cli/scripts/turbo-monorepo-in-subdirectory-PC5khk new file mode 160000 index 0000000000000..df128856ab298 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-PC5khk @@ -0,0 +1 @@ +Subproject commit df128856ab298242c66b62765199644b514fba05 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-TkCS0c b/cli/scripts/turbo-monorepo-in-subdirectory-TkCS0c new file mode 160000 index 0000000000000..f4008bbd2acd7 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-TkCS0c @@ -0,0 +1 @@ +Subproject commit f4008bbd2acd7c3e8186e2f15dd885c6ff921d91 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-fCtAZu b/cli/scripts/turbo-monorepo-in-subdirectory-fCtAZu new file mode 160000 index 0000000000000..db7e90e7a672c --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-fCtAZu @@ -0,0 +1 @@ +Subproject commit db7e90e7a672c8be9c8f8b074cbe26e66c9b8adf diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-iqfqWH b/cli/scripts/turbo-monorepo-in-subdirectory-iqfqWH new file mode 160000 index 0000000000000..8cae71f2d27f7 --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-iqfqWH @@ -0,0 +1 @@ +Subproject commit 8cae71f2d27f732b2bc23b2f61d7225831ac01ae diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-zmPsoV b/cli/scripts/turbo-monorepo-in-subdirectory-zmPsoV new file mode 160000 index 0000000000000..a9623699156ce --- /dev/null +++ b/cli/scripts/turbo-monorepo-in-subdirectory-zmPsoV @@ -0,0 +1 @@ +Subproject commit a9623699156ceb9714efabcc8406694cd030cb2f From ab59e51e898270fa150e73e2b80004a2f3c5e9a3 Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Thu, 23 Dec 2021 17:47:08 -0500 Subject: [PATCH 8/9] Remove folder --- cli/scripts/turbo-monorepo-basics-0ZoBr1 | 1 - cli/scripts/turbo-monorepo-basics-AK5tl4 | 1 - cli/scripts/turbo-monorepo-basics-GOqcBl | 1 - cli/scripts/turbo-monorepo-basics-H0iR4j | 1 - cli/scripts/turbo-monorepo-basics-H2FJBV | 1 - cli/scripts/turbo-monorepo-basics-MHljFk | 1 - cli/scripts/turbo-monorepo-basics-OrH9Kt | 1 - cli/scripts/turbo-monorepo-basics-VVHqJq | 1 - cli/scripts/turbo-monorepo-basics-bfTjFu | 1 - cli/scripts/turbo-monorepo-basics-omC2Am | 1 - cli/scripts/turbo-monorepo-basics-omKznF | 1 - cli/scripts/turbo-monorepo-basics-pI4vmP | 1 - cli/scripts/turbo-monorepo-basics-qufxOS | 1 - cli/scripts/turbo-monorepo-basics-ubuqt4 | 1 - cli/scripts/turbo-monorepo-basics-vRdoGK | 1 - cli/scripts/turbo-monorepo-basics-yJm3TK | 1 - cli/scripts/turbo-monorepo-in-subdirectory-ByfuNw | 1 - cli/scripts/turbo-monorepo-in-subdirectory-IOPifN | 1 - cli/scripts/turbo-monorepo-in-subdirectory-IyvQXb | 1 - cli/scripts/turbo-monorepo-in-subdirectory-JhfWAC | 1 - cli/scripts/turbo-monorepo-in-subdirectory-KL2Wf3 | 1 - cli/scripts/turbo-monorepo-in-subdirectory-PC5khk | 1 - cli/scripts/turbo-monorepo-in-subdirectory-RCLv21 | 1 - cli/scripts/turbo-monorepo-in-subdirectory-TkCS0c | 1 - cli/scripts/turbo-monorepo-in-subdirectory-fCtAZu | 1 - cli/scripts/turbo-monorepo-in-subdirectory-gX7gxU | 1 - cli/scripts/turbo-monorepo-in-subdirectory-gwcB0Q | 1 - cli/scripts/turbo-monorepo-in-subdirectory-hDNBEF | 1 - cli/scripts/turbo-monorepo-in-subdirectory-iqfqWH | 1 - cli/scripts/turbo-monorepo-in-subdirectory-kfmtZM | 1 - cli/scripts/turbo-monorepo-in-subdirectory-lDoJFX | 1 - cli/scripts/turbo-monorepo-in-subdirectory-pos5J7 | 1 - cli/scripts/turbo-monorepo-in-subdirectory-zmPsoV | 1 - 33 files changed, 33 deletions(-) delete mode 160000 cli/scripts/turbo-monorepo-basics-0ZoBr1 delete mode 160000 cli/scripts/turbo-monorepo-basics-AK5tl4 delete mode 160000 cli/scripts/turbo-monorepo-basics-GOqcBl delete mode 160000 cli/scripts/turbo-monorepo-basics-H0iR4j delete mode 160000 cli/scripts/turbo-monorepo-basics-H2FJBV delete mode 160000 cli/scripts/turbo-monorepo-basics-MHljFk delete mode 160000 cli/scripts/turbo-monorepo-basics-OrH9Kt delete mode 160000 cli/scripts/turbo-monorepo-basics-VVHqJq delete mode 160000 cli/scripts/turbo-monorepo-basics-bfTjFu delete mode 160000 cli/scripts/turbo-monorepo-basics-omC2Am delete mode 160000 cli/scripts/turbo-monorepo-basics-omKznF delete mode 160000 cli/scripts/turbo-monorepo-basics-pI4vmP delete mode 160000 cli/scripts/turbo-monorepo-basics-qufxOS delete mode 160000 cli/scripts/turbo-monorepo-basics-ubuqt4 delete mode 160000 cli/scripts/turbo-monorepo-basics-vRdoGK delete mode 160000 cli/scripts/turbo-monorepo-basics-yJm3TK delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-ByfuNw delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-IOPifN delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-IyvQXb delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-JhfWAC delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-KL2Wf3 delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-PC5khk delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-RCLv21 delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-TkCS0c delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-fCtAZu delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-gX7gxU delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-gwcB0Q delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-hDNBEF delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-iqfqWH delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-kfmtZM delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-lDoJFX delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-pos5J7 delete mode 160000 cli/scripts/turbo-monorepo-in-subdirectory-zmPsoV diff --git a/cli/scripts/turbo-monorepo-basics-0ZoBr1 b/cli/scripts/turbo-monorepo-basics-0ZoBr1 deleted file mode 160000 index cff61abb71f43..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-0ZoBr1 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cff61abb71f4300f3ce6ad2102122b943168b527 diff --git a/cli/scripts/turbo-monorepo-basics-AK5tl4 b/cli/scripts/turbo-monorepo-basics-AK5tl4 deleted file mode 160000 index 15aca5165dd2b..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-AK5tl4 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 15aca5165dd2bf0dc712d0a171e4d8eb83c2d413 diff --git a/cli/scripts/turbo-monorepo-basics-GOqcBl b/cli/scripts/turbo-monorepo-basics-GOqcBl deleted file mode 160000 index af89b15192346..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-GOqcBl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit af89b1519234605ae156ab2d1d323307647ddf96 diff --git a/cli/scripts/turbo-monorepo-basics-H0iR4j b/cli/scripts/turbo-monorepo-basics-H0iR4j deleted file mode 160000 index e0f09fd18cd7f..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-H0iR4j +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e0f09fd18cd7f7688bf96bcc0dc676b8e513372a diff --git a/cli/scripts/turbo-monorepo-basics-H2FJBV b/cli/scripts/turbo-monorepo-basics-H2FJBV deleted file mode 160000 index fea5171e0bad9..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-H2FJBV +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fea5171e0bad9ddc5bd596117d52da75d33aa1d8 diff --git a/cli/scripts/turbo-monorepo-basics-MHljFk b/cli/scripts/turbo-monorepo-basics-MHljFk deleted file mode 160000 index 4acf306b1e736..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-MHljFk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4acf306b1e736da64ae6c6d9f548674b4ca4f086 diff --git a/cli/scripts/turbo-monorepo-basics-OrH9Kt b/cli/scripts/turbo-monorepo-basics-OrH9Kt deleted file mode 160000 index 7cb119364f994..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-OrH9Kt +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7cb119364f99489cbf76be9dee7e4143bf70d550 diff --git a/cli/scripts/turbo-monorepo-basics-VVHqJq b/cli/scripts/turbo-monorepo-basics-VVHqJq deleted file mode 160000 index 4fe72536c3039..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-VVHqJq +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4fe72536c30397d596a4e26713604b2aeb813e85 diff --git a/cli/scripts/turbo-monorepo-basics-bfTjFu b/cli/scripts/turbo-monorepo-basics-bfTjFu deleted file mode 160000 index 2a9075ffda724..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-bfTjFu +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2a9075ffda72498cf966fbb601c8393e5ca73f7c diff --git a/cli/scripts/turbo-monorepo-basics-omC2Am b/cli/scripts/turbo-monorepo-basics-omC2Am deleted file mode 160000 index fdc10149075ae..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-omC2Am +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fdc10149075ae869b19786aa333774c4c64667cd diff --git a/cli/scripts/turbo-monorepo-basics-omKznF b/cli/scripts/turbo-monorepo-basics-omKznF deleted file mode 160000 index 50dbe3607762b..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-omKznF +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 50dbe3607762bac1d230886bac99aa404dc28ae3 diff --git a/cli/scripts/turbo-monorepo-basics-pI4vmP b/cli/scripts/turbo-monorepo-basics-pI4vmP deleted file mode 160000 index de4408622ca51..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-pI4vmP +++ /dev/null @@ -1 +0,0 @@ -Subproject commit de4408622ca51f8006a0a079ad4a93151b6a910d diff --git a/cli/scripts/turbo-monorepo-basics-qufxOS b/cli/scripts/turbo-monorepo-basics-qufxOS deleted file mode 160000 index 53455e1455d61..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-qufxOS +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 53455e1455d6198112b15200228e49e06109cd3e diff --git a/cli/scripts/turbo-monorepo-basics-ubuqt4 b/cli/scripts/turbo-monorepo-basics-ubuqt4 deleted file mode 160000 index dcc4ababbae13..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-ubuqt4 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dcc4ababbae13338fa502925148a6c8d6abdfdfa diff --git a/cli/scripts/turbo-monorepo-basics-vRdoGK b/cli/scripts/turbo-monorepo-basics-vRdoGK deleted file mode 160000 index 4065c5e5f072a..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-vRdoGK +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4065c5e5f072a0fc1955e7ef0ea358d79439dfe3 diff --git a/cli/scripts/turbo-monorepo-basics-yJm3TK b/cli/scripts/turbo-monorepo-basics-yJm3TK deleted file mode 160000 index 576d33b59342a..0000000000000 --- a/cli/scripts/turbo-monorepo-basics-yJm3TK +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 576d33b59342a9ba5042c716df56d9c1f352d211 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-ByfuNw b/cli/scripts/turbo-monorepo-in-subdirectory-ByfuNw deleted file mode 160000 index 793e1b4313a73..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-ByfuNw +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 793e1b4313a7323630d66acbea41b962d63b36dd diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-IOPifN b/cli/scripts/turbo-monorepo-in-subdirectory-IOPifN deleted file mode 160000 index d26a823333ae6..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-IOPifN +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d26a823333ae6932804c6bb6b9989b8987b06007 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-IyvQXb b/cli/scripts/turbo-monorepo-in-subdirectory-IyvQXb deleted file mode 160000 index caf9f07add25e..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-IyvQXb +++ /dev/null @@ -1 +0,0 @@ -Subproject commit caf9f07add25e51053e3f0dcfc1e50e98bcc356f diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-JhfWAC b/cli/scripts/turbo-monorepo-in-subdirectory-JhfWAC deleted file mode 160000 index d4708db13cef3..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-JhfWAC +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d4708db13cef3f734fe7451dc3ef8e7ad700ed57 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-KL2Wf3 b/cli/scripts/turbo-monorepo-in-subdirectory-KL2Wf3 deleted file mode 160000 index 2b5cc0d075f58..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-KL2Wf3 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2b5cc0d075f58447cbac01200ad2f4402185a3ae diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-PC5khk b/cli/scripts/turbo-monorepo-in-subdirectory-PC5khk deleted file mode 160000 index df128856ab298..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-PC5khk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit df128856ab298242c66b62765199644b514fba05 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-RCLv21 b/cli/scripts/turbo-monorepo-in-subdirectory-RCLv21 deleted file mode 160000 index b41c4787f21e9..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-RCLv21 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b41c4787f21e9fe2033b26173844cbf90e74d6ab diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-TkCS0c b/cli/scripts/turbo-monorepo-in-subdirectory-TkCS0c deleted file mode 160000 index f4008bbd2acd7..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-TkCS0c +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f4008bbd2acd7c3e8186e2f15dd885c6ff921d91 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-fCtAZu b/cli/scripts/turbo-monorepo-in-subdirectory-fCtAZu deleted file mode 160000 index db7e90e7a672c..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-fCtAZu +++ /dev/null @@ -1 +0,0 @@ -Subproject commit db7e90e7a672c8be9c8f8b074cbe26e66c9b8adf diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-gX7gxU b/cli/scripts/turbo-monorepo-in-subdirectory-gX7gxU deleted file mode 160000 index fd437a05b5db7..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-gX7gxU +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fd437a05b5db7b86ec47d2b6d232b42fb716002f diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-gwcB0Q b/cli/scripts/turbo-monorepo-in-subdirectory-gwcB0Q deleted file mode 160000 index a58f664553053..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-gwcB0Q +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a58f664553053f8c47ffc8fd3d47db04cd4fb432 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-hDNBEF b/cli/scripts/turbo-monorepo-in-subdirectory-hDNBEF deleted file mode 160000 index 23446af1ee8bc..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-hDNBEF +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 23446af1ee8bcbbe58367e941846b135b2d094af diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-iqfqWH b/cli/scripts/turbo-monorepo-in-subdirectory-iqfqWH deleted file mode 160000 index 8cae71f2d27f7..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-iqfqWH +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8cae71f2d27f732b2bc23b2f61d7225831ac01ae diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-kfmtZM b/cli/scripts/turbo-monorepo-in-subdirectory-kfmtZM deleted file mode 160000 index 08a419abdbe1c..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-kfmtZM +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 08a419abdbe1cf5b63870a4702926f8637c7c651 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-lDoJFX b/cli/scripts/turbo-monorepo-in-subdirectory-lDoJFX deleted file mode 160000 index 66e41e5338808..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-lDoJFX +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 66e41e5338808ef22f952278b7972d9d80df805d diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-pos5J7 b/cli/scripts/turbo-monorepo-in-subdirectory-pos5J7 deleted file mode 160000 index 48a006974cae5..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-pos5J7 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 48a006974cae53c1d7498d14d6c157633b3f22d8 diff --git a/cli/scripts/turbo-monorepo-in-subdirectory-zmPsoV b/cli/scripts/turbo-monorepo-in-subdirectory-zmPsoV deleted file mode 160000 index a9623699156ce..0000000000000 --- a/cli/scripts/turbo-monorepo-in-subdirectory-zmPsoV +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a9623699156ceb9714efabcc8406694cd030cb2f From 0ae7d16afab1e74b870bfcb821bec4b518e4fe3b Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Thu, 23 Dec 2021 17:47:54 -0500 Subject: [PATCH 9/9] Update gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 90cf10ce9137c..33d4051c62b2e 100644 --- a/.gitignore +++ b/.gitignore @@ -44,6 +44,7 @@ cli/npm/turbo-sunos-64/bin cli/npm/turbo-windows-32/turbo.exe cli/npm/turbo-windows-64/turbo.exe cli/npm/turbo-windows-arm64/turbo.exe +cli/scripts/turbo-* !/npm/turbo-windows-32/bin !/npm/turbo-windows-64/bin !/npm/turbo-install/bin