aboutsummaryrefslogtreecommitdiff
path: root/gazelle
diff options
context:
space:
mode:
authorAndrew Z Allen <me@andrewzallen.com>2020-10-21 23:52:14 -0600
committerGitHub <noreply@github.com>2020-10-21 23:52:14 -0600
commit182046f090d6ecae264c7e5d520da096370287e2 (patch)
treea6cca4bc2af420af5a2aa3b64f579d2db970b7a4 /gazelle
parentb2ffc94b17518efa40f42e6351cad3d01a7cbdb6 (diff)
downloadbazel-skylib-182046f090d6ecae264c7e5d520da096370287e2.tar.gz
Handle "internal" directory visibility (#274)
Both "internal" and "private" directories should be treated the same way and have visibility restrictions be placed upon them.
Diffstat (limited to 'gazelle')
-rw-r--r--gazelle/bzl/gazelle.go22
-rw-r--r--gazelle/bzl/testdata/private/nested/private/BUILD.out7
-rw-r--r--gazelle/bzl/testdata/private/nested/private/bar.bzl6
-rw-r--r--gazelle/bzl/testdata/private/nested/private/inside/internal/BUILD.out7
-rw-r--r--gazelle/bzl/testdata/private/nested/private/inside/internal/bar.bzl6
-rw-r--r--gazelle/bzl/testdata/private/private/BUILD.out1
6 files changed, 44 insertions, 5 deletions
diff --git a/gazelle/bzl/gazelle.go b/gazelle/bzl/gazelle.go
index b58eee6..dccec27 100644
--- a/gazelle/bzl/gazelle.go
+++ b/gazelle/bzl/gazelle.go
@@ -233,11 +233,10 @@ func (*bzlLibraryLang) GenerateRules(args language.GenerateArgs) language.Genera
r.SetAttr("srcs", []string{f})
- if args.File == nil || !args.File.HasDefaultVisibility() {
- inPrivateDir := pathtools.Index(args.Rel, "private") >= 0
- if !inPrivateDir {
- r.SetAttr("visibility", []string{"//visibility:public"})
- }
+ 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)
@@ -335,3 +334,16 @@ func (s srcsList) Contains(m string) bool {
}
return false
}
+
+// checkInternalVisibility overrides the given visibility if the package is
+// internal.
+func checkInternalVisibility(rel, visibility string) string {
+ if i := pathtools.Index(rel, "internal"); i > 0 {
+ visibility = fmt.Sprintf("//%s:__subpackages__", rel[:i-1])
+ } else if i := pathtools.Index(rel, "private"); i > 0 {
+ visibility = fmt.Sprintf("//%s:__subpackages__", rel[:i-1])
+ } else if pathtools.HasPrefix(rel, "internal") || pathtools.HasPrefix(rel, "private") {
+ visibility = "//:__subpackages__"
+ }
+ return visibility
+}
diff --git a/gazelle/bzl/testdata/private/nested/private/BUILD.out b/gazelle/bzl/testdata/private/nested/private/BUILD.out
new file mode 100644
index 0000000..442401c
--- /dev/null
+++ b/gazelle/bzl/testdata/private/nested/private/BUILD.out
@@ -0,0 +1,7 @@
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
+
+bzl_library(
+ name = "bar",
+ srcs = ["bar.bzl"],
+ visibility = ["//nested:__subpackages__"],
+)
diff --git a/gazelle/bzl/testdata/private/nested/private/bar.bzl b/gazelle/bzl/testdata/private/nested/private/bar.bzl
new file mode 100644
index 0000000..c8a4871
--- /dev/null
+++ b/gazelle/bzl/testdata/private/nested/private/bar.bzl
@@ -0,0 +1,6 @@
+"""
+Test sample code.
+"""
+
+def func():
+ pass
diff --git a/gazelle/bzl/testdata/private/nested/private/inside/internal/BUILD.out b/gazelle/bzl/testdata/private/nested/private/inside/internal/BUILD.out
new file mode 100644
index 0000000..afaf8f3
--- /dev/null
+++ b/gazelle/bzl/testdata/private/nested/private/inside/internal/BUILD.out
@@ -0,0 +1,7 @@
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
+
+bzl_library(
+ name = "bar",
+ srcs = ["bar.bzl"],
+ visibility = ["//nested/private/inside:__subpackages__"],
+)
diff --git a/gazelle/bzl/testdata/private/nested/private/inside/internal/bar.bzl b/gazelle/bzl/testdata/private/nested/private/inside/internal/bar.bzl
new file mode 100644
index 0000000..c8a4871
--- /dev/null
+++ b/gazelle/bzl/testdata/private/nested/private/inside/internal/bar.bzl
@@ -0,0 +1,6 @@
+"""
+Test sample code.
+"""
+
+def func():
+ pass
diff --git a/gazelle/bzl/testdata/private/private/BUILD.out b/gazelle/bzl/testdata/private/private/BUILD.out
index eb2e935..f442a99 100644
--- a/gazelle/bzl/testdata/private/private/BUILD.out
+++ b/gazelle/bzl/testdata/private/private/BUILD.out
@@ -3,4 +3,5 @@ load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
bzl_library(
name = "bar",
srcs = ["bar.bzl"],
+ visibility = ["//:__subpackages__"],
)