Skip to content

Commit 13d5396

Browse files
committed
Update with invalid sources
1 parent 03ab5e6 commit 13d5396

File tree

1 file changed

+29
-31
lines changed

1 file changed

+29
-31
lines changed

gazelle/python/generate.go

Lines changed: 29 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -66,35 +66,6 @@ func matchesAnyGlob(s string, globs []string) bool {
6666
return false
6767
}
6868

69-
// validateExistingRules checks existing Python rules in the BUILD file and return the rules with invalid srcs.
70-
func (py *Python) validateExistingRules(args language.GenerateArgs) (emptyRules []*rule.Rule) {
71-
if args.File == nil {
72-
return
73-
}
74-
regularFiles := args.RegularFiles
75-
regularFilesMap := make(map[string]struct{})
76-
for _, file := range regularFiles {
77-
regularFilesMap[file] = struct{}{}
78-
}
79-
for _, existingRule := range args.File.Rules {
80-
if _, ok := py.Kinds()[existingRule.Kind()]; !ok {
81-
continue
82-
}
83-
allInvalidSrcs := true
84-
for _, src := range existingRule.AttrStrings("srcs") {
85-
if _, ok := regularFilesMap[src]; ok {
86-
allInvalidSrcs = false
87-
break
88-
}
89-
}
90-
// If all srcs are invalid, delete the rule.
91-
if allInvalidSrcs {
92-
emptyRules = append(emptyRules, newTargetBuilder(existingRule.Kind(), existingRule.Name(), args.Config.RepoRoot, args.Rel, nil).build())
93-
}
94-
}
95-
return emptyRules
96-
}
97-
9869
// GenerateRules extracts build metadata from source files in a directory.
9970
// GenerateRules is called in each directory where an update is requested
10071
// in depth-first post-order.
@@ -501,9 +472,8 @@ func (py *Python) GenerateRules(args language.GenerateArgs) language.GenerateRes
501472
result.Gen = append(result.Gen, pyTest)
502473
result.Imports = append(result.Imports, pyTest.PrivateAttr(config.GazelleImportsKey))
503474
}
504-
// Validate existing rules have valid srcs
505475
if !cfg.CoarseGrainedGeneration() {
506-
emptyRules := py.validateExistingRules(args)
476+
emptyRules := py.getRulesWithInvalidSrcs(args)
507477
result.Empty = append(result.Empty, emptyRules...)
508478
}
509479
if !collisionErrors.Empty() {
@@ -517,6 +487,34 @@ func (py *Python) GenerateRules(args language.GenerateArgs) language.GenerateRes
517487
return result
518488
}
519489

490+
// getRulesWithInvalidSrcs checks existing Python rules in the BUILD file and return the rules with invalid srcs.
491+
func (py *Python) getRulesWithInvalidSrcs(args language.GenerateArgs) (invalidRules []*rule.Rule) {
492+
if args.File == nil {
493+
return
494+
}
495+
regularFiles := args.RegularFiles
496+
regularFilesMap := make(map[string]struct{})
497+
for _, file := range regularFiles {
498+
regularFilesMap[file] = struct{}{}
499+
}
500+
for _, existingRule := range args.File.Rules {
501+
if _, ok := py.Kinds()[existingRule.Kind()]; !ok {
502+
continue
503+
}
504+
allInvalidSrcs := true
505+
for _, src := range existingRule.AttrStrings("srcs") {
506+
if _, ok := regularFilesMap[src]; ok {
507+
allInvalidSrcs = false
508+
break
509+
}
510+
}
511+
// If all srcs are invalid, delete the rule.
512+
if allInvalidSrcs {
513+
invalidRules = append(invalidRules, newTargetBuilder(existingRule.Kind(), existingRule.Name(), args.Config.RepoRoot, args.Rel, nil).build())
514+
}
515+
}
516+
return invalidRules
517+
}
520518
// isBazelPackage determines if the directory is a Bazel package by probing for
521519
// the existence of a known BUILD file name.
522520
func isBazelPackage(dir string) bool {

0 commit comments

Comments
 (0)