From 19b2e56d0276518c1c6559536338b61e2451acf6 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Fri, 26 Apr 2024 13:38:10 +0200 Subject: [PATCH] Go: group BUILD and dbscheme generation target --- .pre-commit-config.yaml | 8 ++++---- go/BUILD.bazel | 28 ++++++++++++++++++++++++++++ go/gazelle/BUILD.bazel | 13 ------------- go/{gazelle/gazelle.py => gen.py} | 12 ++++++++++-- 4 files changed, 42 insertions(+), 19 deletions(-) delete mode 100644 go/gazelle/BUILD.bazel rename go/{gazelle/gazelle.py => gen.py} (56%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4e81bcc7711..899ddd71b89 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -27,11 +27,11 @@ repos: - repo: local hooks: - - id: gazelle - name: Check gazelle-generated BUILD files - files: go/extractor/.* + - id: go-gen + name: Check checked in generated files in go + files: go/.* language: system - entry: bazel run //go/gazelle + entry: bazel run //go:gen pass_filenames: false - id: codeql-format diff --git a/go/BUILD.bazel b/go/BUILD.bazel index 5736912310a..c5f32c5309f 100644 --- a/go/BUILD.bazel +++ b/go/BUILD.bazel @@ -1,7 +1,26 @@ load("@rules_pkg//pkg:mappings.bzl", "pkg_filegroup", "pkg_files") load("@rules_pkg//pkg:install.bzl", "pkg_install") +load("@bazel_skylib//rules:native_binary.bzl", "native_binary") +load("@gazelle//:def.bzl", "gazelle") load("//:defs.bzl", "codeql_platform") +gazelle( + name = "_gazelle", +) + +_gen_binaries = [ + ":_gazelle", + "//go/extractor/cli/go-gen-dbscheme", +] + +py_binary( + name = "gen", + srcs = ["gen.py"], + args = ["$(rlocationpath %s)" % bin for bin in _gen_binaries], + data = _gen_binaries, + deps = ["@rules_python//python/runfiles"], +) + pkg_files( name = "resources", srcs = [ @@ -57,3 +76,12 @@ py_binary( main = "create_extractor_pack.py", deps = [":_create_extractor_pack"], ) + +native_binary( + name = "gen-dbscheme", + src = "//go/extractor/cli/go-gen-dbscheme", + out = "go-gen-dbscheme", + args = [ + "$$BUILD_WORKSPACE_DIRECTORY/go/ql/lib/go.dbscheme", + ], +) diff --git a/go/gazelle/BUILD.bazel b/go/gazelle/BUILD.bazel deleted file mode 100644 index 3d81b50590a..00000000000 --- a/go/gazelle/BUILD.bazel +++ /dev/null @@ -1,13 +0,0 @@ -load("@gazelle//:def.bzl", "gazelle") - -gazelle( - name = "_gazelle", -) - -py_binary( - name = "gazelle", - srcs = ["gazelle.py"], - args = ["$(rlocationpath :_gazelle)"], - data = [":_gazelle"], - deps = ["@rules_python//python/runfiles"], -) diff --git a/go/gazelle/gazelle.py b/go/gen.py similarity index 56% rename from go/gazelle/gazelle.py rename to go/gen.py index 200f3c3ed6b..7b7e9d73237 100644 --- a/go/gazelle/gazelle.py +++ b/go/gen.py @@ -4,13 +4,21 @@ import subprocess from python.runfiles import runfiles this = pathlib.Path(__file__).resolve() -go_extractor_dir = this.parents[1] / "extractor" -gazelle = runfiles.Create().Rlocation(sys.argv[1]) +go_extractor_dir = this.parent / "extractor" +go_dbscheme = this.parent / "ql" / "lib" / "go.dbscheme" +r = runfiles.Create() +gazelle, go_gen_dbscheme = map(r.Rlocation, sys.argv[1:]) + +print("clearing generated BUILD files") for build_file in go_extractor_dir.glob("*/**/BUILD.bazel"): build_file.unlink() +print("running gazelle") subprocess.check_call([gazelle, "go/extractor"]) +print("adding header to generated BUILD files") for build_file in go_extractor_dir.glob("*/**/BUILD.bazel"): contents = build_file.read_text() build_file.write_text(f"# generated running `bazel run //go/gazelle`, do not edit\n\n{contents}") + +subprocess.check_call([go_gen_dbscheme, go_dbscheme])