Report whether there was no TS in the package, don't just return early.
PiperOrigin-RevId: 260228506
diff --git a/ts_auto_deps/updater/updater.go b/ts_auto_deps/updater/updater.go
index 6f2eba5..ff3d986 100644
--- a/ts_auto_deps/updater/updater.go
+++ b/ts_auto_deps/updater/updater.go
@@ -688,38 +688,40 @@
// UpdateBUILD drives the main process of creating/updating the BUILD file
// underneath path based on the available sources. Returns true if it modified
-// the BUILD file, false if the BUILD file was up to date already.
-// bazelAnalyze is used to run the underlying `bazel analyze` process.
-func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options UpdateBUILDOptions) (bool, error) {
+// the BUILD file, false if the BUILD file was up to date already. bazelAnalyze
+// is used to run the underlying `bazel analyze` process. Returns another
+// boolean that's true iff the package doesn't contain any TypeScript (source
+// files or BUILD rules).
+func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options UpdateBUILDOptions) (bool, bool, error) {
g3root, buildFilePath, bld, err := getBUILDPathAndBUILDFile(ctx, path)
if err != nil {
- return false, err
+ return false, false, err
}
if isTazeDisabledInPackage(ctx, g3root, buildFilePath, bld) {
- return false, nil
+ return false, false, nil
}
hasSubdirSrcs, err := directoryOrAncestorHasSubdirectorySources(ctx, g3root, buildFilePath, bld)
if err != nil {
- return false, err
+ return false, false, err
}
if hasSubdirSrcs {
- return false, &SubdirectorySourcesError{}
+ return false, false, &SubdirectorySourcesError{}
}
changed, err := upd.addSourcesToBUILD(ctx, path, buildFilePath, bld)
if err != nil {
- return false, err
+ return false, false, err
}
if options.InNonWritableEnvironment && changed {
- return true, &CantProgressAfterWriteError{}
+ return true, false, &CantProgressAfterWriteError{}
}
rules := allTSRules(bld)
if len(rules) == 0 && !options.IsRoot {
// No TypeScript rules, no need to query for dependencies etc, so just exit early.
- return changed, nil
+ return changed, true, nil
}
rulesWithSrcs := []*build.Rule{}
for _, r := range rules {
@@ -733,19 +735,19 @@
platform.Infof("analyzing...")
reports, err := upd.runBazelAnalyze(buildFilePath, bld, rulesWithSrcs)
if err != nil {
- return false, err
+ return false, false, err
}
changedAfterBazelAnalyze, err := upd.updateBUILDAfterBazelAnalyze(ctx, options.IsRoot, g3root, buildFilePath, bld, reports)
if err != nil {
- return false, err
+ return false, false, err
}
changed = changed || changedAfterBazelAnalyze
if options.InNonWritableEnvironment && changed {
- return true, &CantProgressAfterWriteError{}
+ return true, false, &CantProgressAfterWriteError{}
}
- return changed, nil
+ return changed, false, nil
}
// buildHasDisableTaze checks if the BUILD file should be managed using ts_auto_deps.
@@ -1250,7 +1252,7 @@
ctx := context.Background()
for i, p := range paths {
isLastAndRoot := isRoot && i == len(paths)-1
- changed, err := host.UpdateBUILD(ctx, p, UpdateBUILDOptions{InNonWritableEnvironment: false, IsRoot: isLastAndRoot})
+ changed, _, err := host.UpdateBUILD(ctx, p, UpdateBUILDOptions{InNonWritableEnvironment: false, IsRoot: isLastAndRoot})
if err != nil {
if recursive {
return fmt.Errorf("ts_auto_deps failed on %s/BUILD: %s", p, err)