...
1
15
16 package visibility
17
18 import (
19 "github.com/bazelbuild/bazel-gazelle/config"
20 "github.com/bazelbuild/bazel-gazelle/language"
21 "github.com/bazelbuild/bazel-gazelle/rule"
22 )
23
24 type visibilityExtension struct{}
25
26
27 func NewLanguage() language.Language {
28 return &visibilityExtension{}
29 }
30
31
32 func (*visibilityExtension) Kinds() map[string]rule.KindInfo {
33 return map[string]rule.KindInfo{
34 "package": {
35 MatchAny: true,
36 MergeableAttrs: map[string]bool{
37 "default_visibility": true,
38 },
39 },
40 }
41 }
42
43 func (*visibilityExtension) Loads() []rule.LoadInfo {
44 panic("ApparentLoads should be called instead")
45 }
46
47
48 func (*visibilityExtension) ApparentLoads(func(string) string) []rule.LoadInfo {
49 return nil
50 }
51
52
53 func (*visibilityExtension) GenerateRules(args language.GenerateArgs) language.GenerateResult {
54 res := language.GenerateResult{}
55 cfg := getVisConfig(args.Config)
56
57 if len(cfg.visibilityTargets) == 0 {
58 return res
59 }
60
61 if args.File == nil {
62
63 return res
64 }
65
66 r := rule.NewRule("package", "")
67 r.SetAttr("default_visibility", cfg.visibilityTargets)
68
69 res.Gen = append(res.Gen, r)
70
71 res.Imports = append(res.Imports, nil)
72 return res
73 }
74
75
76 func (*visibilityExtension) Fix(c *config.Config, f *rule.File) {}
77
View as plain text