Bazel: add java_doc rule
Add javadoc rules for plugin API: * gerrit-extension-api * gerrit-plugin-api * gerrit-acceptance-framework Note that GWT UI is not covered by Bazel build yet, so that we cannot offer gerrit-plugin-gwtui:plugin-gwtui-javadoc rule in this change. TEST PLAN: bazel build gerrit-acceptance-framework:acceptance-framework-javadoc bazel build gerrit-extension-api:extension-api-javadoc bazel build gerrit-plugin-api:plugin-api-javadoc Change-Id: I60832752010118e33eb6a06529032d86f169ee44
This commit is contained in:
committed by
David Ostrovsky
parent
5e2f370bff
commit
e703f3a35a
71
tools/bzl/javadoc.bzl
Normal file
71
tools/bzl/javadoc.bzl
Normal file
@@ -0,0 +1,71 @@
|
||||
# Copyright (C) 2016 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Javadoc rule.
|
||||
|
||||
def _impl(ctx):
|
||||
zip_output = ctx.outputs.zip
|
||||
|
||||
transitive_jar_set = set()
|
||||
source_jars = set()
|
||||
for l in ctx.attr.libs:
|
||||
source_jars += l.java.source_jars
|
||||
transitive_jar_set += l.java.transitive_deps
|
||||
|
||||
transitive_jar_paths = [j.path for j in transitive_jar_set]
|
||||
dir = ctx.outputs.zip.path + ".dir"
|
||||
source = ctx.outputs.zip.path + ".source"
|
||||
cmd = [
|
||||
"mkdir %s" % source,
|
||||
" && ".join(["unzip -qud %s %s" % (source, j.path) for j in source_jars]),
|
||||
"mkdir %s" % dir,
|
||||
" ".join([
|
||||
ctx.file._javadoc.path,
|
||||
"-protected",
|
||||
"-encoding UTF-8",
|
||||
"-charset UTF-8",
|
||||
"-notimestamp",
|
||||
"-quiet",
|
||||
"-windowtitle '%s'" % ctx.attr.title,
|
||||
"-link", "http://docs.oracle.com/javase/7/docs/api",
|
||||
"-sourcepath %s" % source,
|
||||
"-subpackages ",
|
||||
":".join(ctx.attr.pkgs),
|
||||
" -classpath ",
|
||||
":".join(transitive_jar_paths),
|
||||
"-d %s" % dir]),
|
||||
"find %s -exec touch -t 198001010000 '{}' ';'" % dir,
|
||||
"(cd %s && zip -qr ../%s *)" % (dir, ctx.outputs.zip.basename),
|
||||
]
|
||||
ctx.action(
|
||||
inputs = list(transitive_jar_set) + list(source_jars) + ctx.files._jdk,
|
||||
outputs = [zip_output],
|
||||
command = " && ".join(cmd))
|
||||
|
||||
java_doc = rule(
|
||||
attrs = {
|
||||
"libs": attr.label_list(allow_files = False),
|
||||
"pkgs": attr.string_list(),
|
||||
"title": attr.string(),
|
||||
"_javadoc": attr.label(
|
||||
default = Label("@local_jdk//:bin/javadoc"),
|
||||
single_file = True,
|
||||
allow_files = True),
|
||||
"_jdk": attr.label(
|
||||
default = Label("@local_jdk//:jdk-default"),
|
||||
allow_files = True),
|
||||
},
|
||||
implementation = _impl,
|
||||
outputs = {"zip" : "%{name}.zip"},
|
||||
)
|
||||
Reference in New Issue
Block a user