Modified Bazel aspect to produce a localFile<TAB>remoteFile catalog for publishing artifacts to Maven repo.
Change-Id: I41640e955f8fb98f6d5522b9b768cc0e6da3f9a6
diff --git a/tools/build/bazel/print_mvn_jar.bzl b/tools/build/bazel/print_mvn_jar.bzl
deleted file mode 100644
index 8e183c22..0000000
--- a/tools/build/bazel/print_mvn_jar.bzl
+++ /dev/null
@@ -1,14 +0,0 @@
-load("//tools/build/bazel:generate_workspace.bzl", "maven_coordinates")
-
-# Example invocation:
-# bazel build $(bazel query 'kind("_bnd rule", //...)') \
-# --aspects tools/build/bazel/mvn_jar.bzl%print_mvn_jar 2>&1 | \
-# egrep "DEBUG: .*mvn_jar.bzl" | cut -d\ -f3-
-
-def _impl(target, ctx):
- [ print (maven_coordinates(target.label), f.path) for f in target.files ]
- return []
-
-print_mvn_jar = aspect(
- implementation = _impl,
-)
diff --git a/tools/build/bazel/publish_catalog.bzl b/tools/build/bazel/publish_catalog.bzl
new file mode 100644
index 0000000..9251aab
--- /dev/null
+++ b/tools/build/bazel/publish_catalog.bzl
@@ -0,0 +1,42 @@
+load("//tools/build/bazel:generate_workspace.bzl", "maven_coordinates")
+
+# Example invocation:
+# bazel build $(bazel query 'kind("_bnd rule", //...)') \
+# --aspects tools/build/bazel/publish_catalog.bzl%publish_catalog 2>&1 | \
+# egrep "DEBUG: .*mvn_jar.bzl" | cut -d\ -f3-
+
+def _remote(group_id, artifact_id, version, packaging, classifier):
+ p = group_id + "/" + artifact_id + "/" + version + "/" + artifact_id + "-" + version
+ if classifier != None:
+ p += "-" + classifier
+ p += "." + packaging
+ return p
+
+def _impl(target, ctx):
+ coords = maven_coordinates(target.label)
+ mvn = coords.split(":")
+ group_id = mvn[1]
+ artifact_id = mvn[2]
+ version = mvn[len(mvn) - 1]
+ packaging = "jar"
+ classifier = None
+
+ if len(mvn) > 4:
+ packaging = mvn[3]
+
+ c = artifact_id.split("-")
+
+ if len(c) > 1 and c[len(c)-1] in ("javadocs", "sources", "tests", "pom"):
+ classifier = c[len(c)-1]
+ artifact_id = "-".join(c[:len(c)-1])
+ if classifier == "pom":
+ packaging = classifier
+ classifier = None
+
+ for f in target.files:
+ print ("%s\t%s" % (f.path, _remote(group_id, artifact_id, version, packaging, classifier)))
+ return []
+
+publish_catalog = aspect(
+ implementation = _impl,
+)