From 9701afbdf2b29acb0660d6af1ea478842ffe40bc Mon Sep 17 00:00:00 2001
From: Andreas Bergmeier <a.bergmeier@dsfishlabs.com>
Date: Mon, 23 Oct 2017 13:08:30 +0200
Subject: [PATCH] Introduce support for usage with Bazel.

---
 WORKSPACE               |  0
 scripts/BUILD.bazel     |  5 +++++
 tools/bazel/BUILD.bazel |  0
 tools/bazel/README.md   | 16 +++++++++++++
 tools/bazel/def.bzl     | 50 +++++++++++++++++++++++++++++++++++++++++
 5 files changed, 71 insertions(+)
 create mode 100644 WORKSPACE
 create mode 100644 scripts/BUILD.bazel
 create mode 100644 tools/bazel/BUILD.bazel
 create mode 100644 tools/bazel/README.md
 create mode 100644 tools/bazel/def.bzl

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),
+    },
+)
+