Asynchronously glob for TypeScript sources in the package. PiperOrigin-RevId: 269634230
diff --git a/ts_auto_deps/updater/updater.go b/ts_auto_deps/updater/updater.go index 2e8dc49..4537ef4 100644 --- a/ts_auto_deps/updater/updater.go +++ b/ts_auto_deps/updater/updater.go
@@ -207,6 +207,11 @@ type srcSet map[string]bool +type globResult struct { + srcs srcSet + err error +} + // globSources finds sources in path with any of the given extensions. // It also filters out temporary files, dangling symlinks, and symlinks into bazel-bin specifically. // It returns file names relative to path. @@ -617,12 +622,7 @@ return false, nil } -func (upd *Updater) addSourcesToBUILD(ctx context.Context, path string, buildFilePath string, bld *build.File) (bool, error) { - platform.Infof("Globbing TS sources in %s", path) - srcs, err := globSources(ctx, path, []string{"ts", "tsx"}) - if err != nil { - return false, err - } +func (upd *Updater) addSourcesToBUILD(ctx context.Context, path string, buildFilePath string, bld *build.File, srcs srcSet) (bool, error) { platform.Infof("Updating sources") if len(srcs) == 0 && len(allTSRules(bld)) == 0 { @@ -709,6 +709,15 @@ func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options UpdateBUILDOptions) (bool, *LatencyReport, error) { latencyReport := &LatencyReport{} + // asynchronously glob for TS sources in the package, since it can be slow on + // a network file system. + globChan := make(chan globResult) + go func() { + platform.Infof("Globbing TS sources in %s", path) + srcs, err := globSources(ctx, path, []string{"ts", "tsx"}) + globChan <- globResult{srcs, err} + }() + start := time.Now() g3root, buildFilePath, workspaceRelativePath, err := getBUILDPath(ctx, path) if err != nil { @@ -748,7 +757,11 @@ } start = time.Now() - changed, err := upd.addSourcesToBUILD(ctx, path, buildFilePath, bld) + globRes := <-globChan + if globRes.err != nil { + return false, nil, globRes.err + } + changed, err := upd.addSourcesToBUILD(ctx, path, buildFilePath, bld, globRes.srcs) latencyReport.AddSrcs = time.Since(start) if err != nil { return false, nil, err