in gazelle/bzl/gazelle.go [224:259]
func (*bzlLibraryLang) GenerateRules(args language.GenerateArgs) language.GenerateResult {
var rules []*rule.Rule
var imports []interface{}
for _, f := range append(args.RegularFiles, args.GenFiles...) {
if !isBzlSourceFile(f) {
continue
}
name := strings.TrimSuffix(f, fileType)
r := rule.NewRule("bzl_library", name)
r.SetAttr("srcs", []string{f})
shouldSetVisibility := args.File == nil || !args.File.HasDefaultVisibility()
if shouldSetVisibility {
vis := checkInternalVisibility(args.Rel, "//visibility:public")
r.SetAttr("visibility", []string{vis})
}
fullPath := filepath.Join(args.Dir, f)
loads, err := getBzlFileLoads(fullPath)
if err != nil {
log.Printf("%s: contains syntax errors: %v", fullPath, err)
// Don't `continue` since it is reasonable to create a target even
// without deps.
}
rules = append(rules, r)
imports = append(imports, loads)
}
return language.GenerateResult{
Gen: rules,
Imports: imports,
Empty: generateEmpty(args),
}
}