diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 000000000..e69de29bb diff --git a/scripts/BUILD.bazel b/scripts/BUILD.bazel new file mode 100644 index 000000000..f5a7547a2 --- /dev/null +++ b/scripts/BUILD.bazel @@ -0,0 +1,5 @@ +exports_files( + ["google-java-format-diff.py"], + visibility = ["//visibility:public"], +) + diff --git a/tools/bazel/BUILD.bazel b/tools/bazel/BUILD.bazel new file mode 100644 index 000000000..e69de29bb diff --git a/tools/bazel/README.md b/tools/bazel/README.md new file mode 100644 index 000000000..3a8d4ded3 --- /dev/null +++ b/tools/bazel/README.md @@ -0,0 +1,16 @@ + +Install for usage in your repo: + + http_archive( + name = "com_google_google_java_format_source", + urls = ["https://github.com/google/google-java-format/archive/google-java-format-1.6.zip"], + ) + + load("@com_google_google_java_format_source//tools/bazel:def.bzl", "java_format") + + java_format( + name = "com_google_google_java_format", + jar_url = "https://github.com/google/google-java-format/releases/download/google-java-format-1.5/google-java-format-1.5-all-deps.jar", + jar_sha256 = "7b839bb7534a173f0ed0cd0e9a583181d20850fcec8cf6e3800e4420a1fad184", + diff = "@com_google_google_java_format_source//scripts:google-java-format-diff.py", + ) diff --git a/tools/bazel/def.bzl b/tools/bazel/def.bzl new file mode 100644 index 000000000..0064dd9ff --- /dev/null +++ b/tools/bazel/def.bzl @@ -0,0 +1,50 @@ + +def _java_format_impl(repository_ctx): + repository_ctx.download( + url = repository_ctx.attr.jar_url, + output = "jar/google-java-format.jar", + sha256 = repository_ctx.attr.jar_sha256, + ) + + repository_ctx.file( + "jar/BUILD.bazel", + content = """ +java_import( + name = "jar", + jars = [ + "google-java-format.jar", + ], + visibility = ["//visibility:public"], +) +""", + ) + + repository_ctx.file( + "BUILD.bazel", + content = """ +java_binary( + name = "google-java-format", + main_class = "com.google.googlejavaformat.java.Main", + runtime_deps = [ + "//jar", + ], +) + +py_binary( + name = "google-java-format-diff", + srcs = [ + "{}", + ], +) +""".format(repository_ctx.attr.diff), + ) + +java_format = repository_rule( + implementation = _java_format_impl, + attrs = { + "jar_url": attr.string(mandatory = True), + "jar_sha256": attr.string(), + "diff": attr.label(allow_single_file = [".py"], mandatory = True), + }, +) +