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:
		 Han-Wen Nienhuys
					Han-Wen Nienhuys
				
			
				
					committed by
					
						 David Ostrovsky
						David Ostrovsky
					
				
			
			
				
	
			
			
			 David Ostrovsky
						David Ostrovsky
					
				
			
						parent
						
							5e2f370bff
						
					
				
				
					commit
					e703f3a35a
				
			| @@ -59,3 +59,12 @@ java_library2( | ||||
|   ], | ||||
|   visibility = ['//visibility:public'], | ||||
| ) | ||||
|  | ||||
| load('//tools/bzl:javadoc.bzl', 'java_doc') | ||||
|  | ||||
| java_doc( | ||||
|   name = 'acceptance-framework-javadoc', | ||||
|   title = 'Gerrit Acceptance Test Framework Documentation', | ||||
|   libs = [':lib'], | ||||
|   pkgs = ['com.google.gerrit.acceptance'], | ||||
| ) | ||||
|   | ||||
| @@ -44,3 +44,12 @@ java_library( | ||||
|   ], | ||||
|   visibility = ['//visibility:public'], | ||||
| ) | ||||
|  | ||||
| load('//tools/bzl:javadoc.bzl', 'java_doc') | ||||
|  | ||||
| java_doc( | ||||
|   name = 'extension-api-javadoc', | ||||
|   title = 'Gerrit Review Extension API Documentation', | ||||
|   libs = [':api'], | ||||
|   pkgs = ['com.google.gerrit.extensions'], | ||||
| ) | ||||
|   | ||||
| @@ -76,3 +76,20 @@ java_binary( | ||||
|   ], | ||||
|   visibility = ['//visibility:public'], | ||||
| ) | ||||
|  | ||||
| load('//tools/bzl:javadoc.bzl', 'java_doc') | ||||
|  | ||||
| java_doc( | ||||
|   name = 'plugin-api-javadoc', | ||||
|   title = 'Gerrit Review Plugin API Documentation', | ||||
|   pkgs = ['com.google.gerrit'], | ||||
|   libs = PLUGIN_API + [ | ||||
|     '//gerrit-antlr:query_exception', | ||||
|     '//gerrit-antlr:query_parser', | ||||
|     '//gerrit-common:annotations', | ||||
|     '//gerrit-common:server', | ||||
|     '//gerrit-extension-api:api', | ||||
|     '//gerrit-gwtexpui:server', | ||||
|     '//gerrit-reviewdb:server', | ||||
|   ], | ||||
| ) | ||||
|   | ||||
| @@ -208,3 +208,12 @@ junit_tests( | ||||
|   ], | ||||
|   visibility = ['//visibility:public'], | ||||
| ) | ||||
|  | ||||
| load('//tools/bzl:javadoc.bzl', 'java_doc') | ||||
|  | ||||
| java_doc( | ||||
|   name = 'doc', | ||||
|   title = 'Gerrit Review Server Documentation', | ||||
|   libs = [':server'], | ||||
|   pkgs = ['com.google.gerrit'], | ||||
| ) | ||||
|   | ||||
							
								
								
									
										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