This is an automated email from the ASF dual-hosted git repository. lhotari pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/pulsar-site.git
commit 6534d906bc7c3914725b1157e47663bcb8a76b43 Author: Lari Hotari <[email protected]> AuthorDate: Mon Oct 14 20:41:49 2024 +0300 Revisit javadoc_generator.py to accept a local directory --- contribute/release-process.md | 2 +- tools/pytools/bin/java-apidoc-generator.py | 2 +- tools/pytools/lib/execute/javadoc_generator.py | 67 +++++++++++++++----------- 3 files changed, 41 insertions(+), 30 deletions(-) diff --git a/contribute/release-process.md b/contribute/release-process.md index e7486c8dc29e..1d751e7e504a 100644 --- a/contribute/release-process.md +++ b/contribute/release-process.md @@ -801,7 +801,7 @@ After publish Java libraries, run the following script from the main branch of a ```shell cd tools/pytools poetry install -poetry run bin/java-apidoc-generator.py $VERSION_WITHOUT_RC +poetry run bin/java-apidoc-generator.py $PULSAR_PATH ``` Once the docs are generated, you can add them and submit them in a PR. The expected doc output is: diff --git a/tools/pytools/bin/java-apidoc-generator.py b/tools/pytools/bin/java-apidoc-generator.py index 07de1f8f48af..323e74709f53 100755 --- a/tools/pytools/bin/java-apidoc-generator.py +++ b/tools/pytools/bin/java-apidoc-generator.py @@ -24,7 +24,7 @@ from execute import javadoc_generator if __name__ == '__main__': parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) parser.set_defaults(func=javadoc_generator.execute) - parser.add_argument('version', metavar='VERSION', help='version of Apache Pulsar') + parser.add_argument('dir_or_version', metavar='DIR_OR_VERSION', help='directory or version of Apache Pulsar') args = parser.parse_args() fn = args.func diff --git a/tools/pytools/lib/execute/javadoc_generator.py b/tools/pytools/lib/execute/javadoc_generator.py index 12942bc4e2b5..e555ed99b394 100644 --- a/tools/pytools/lib/execute/javadoc_generator.py +++ b/tools/pytools/lib/execute/javadoc_generator.py @@ -27,36 +27,47 @@ from command import find_command, run from constant import site_path -def execute(version: str): +def execute(dir_or_version: str): mvn = find_command('mvn', msg="mvn is required") - ver = semver.VersionInfo.parse(version) - assert ver.compare('2.8.0') >= 0, 'versions before 2.8.0 did not have the -src suffix' - assert ver.compare('2.11.0') != 0, '2.11.0 is unsupported, see https://github.com/apache/pulsar/pull/19202' - - with tempfile.TemporaryDirectory() as cwd: - v = f"{ver.major}.{ver.minor}.{ver.patch}" - remote = f'https://archive.apache.org/dist/pulsar/pulsar-{v}/apache-pulsar-{v}-src.tar.gz' - resp = requests.get(remote, stream=True) - assert resp.status_code == 200 - print(f'Download source code from {remote}') - f = tarfile.open(fileobj=resp.raw, mode='r|gz') - f.extractall(cwd) - print(f'Extract source code to {cwd}') - - src = Path(cwd) / f'apache-pulsar-{v}-src' + + if Path(dir_or_version).is_dir(): + src = Path(dir_or_version) + import xml.etree.ElementTree as ET + pom_path = src / 'pom.xml' + tree = ET.parse(pom_path) + root = tree.getroot() + version_elem = root.find('{http://maven.apache.org/POM/4.0.0}version') + ver = semver.VersionInfo.parse(version_elem.text) v = f"{ver.major}.{ver.minor}.x" + else: + ver = semver.VersionInfo.parse(dir_or_version) + assert ver.compare('2.8.0') >= 0, 'versions before 2.8.0 did not have the -src suffix' + assert ver.compare('2.11.0') != 0, '2.11.0 is unsupported, see https://github.com/apache/pulsar/pull/19202' - # client - dst = site_path() / 'static' / 'api' / 'client' / v - run(mvn, '-Dlocale=en_US', '-pl', 'pulsar-client-api', 'javadoc:javadoc', cwd=src) - shutil.copytree(src / 'pulsar-client-api' / 'target' / 'site' / 'apidocs', dst) + with tempfile.TemporaryDirectory() as cwd: + v = f"{ver.major}.{ver.minor}.{ver.patch}" + remote = f'https://archive.apache.org/dist/pulsar/pulsar-{v}/apache-pulsar-{v}-src.tar.gz' + resp = requests.get(remote, stream=True) + assert resp.status_code == 200 + print(f'Download source code from {remote}') + f = tarfile.open(fileobj=resp.raw, mode='r|gz') + f.extractall(cwd) + print(f'Extract source code to {cwd}') - # admin - dst = site_path() / 'static' / 'api' / 'admin' / v - run(mvn, '-Dlocale=en_US', '-pl', 'pulsar-client-admin-api', 'javadoc:javadoc', cwd=src) - shutil.copytree(src / 'pulsar-client-admin-api' / 'target' / 'site' / 'apidocs', dst) + src = Path(cwd) / f'apache-pulsar-{v}-src' + v = f"{ver.major}.{ver.minor}.x" - # function - dst = site_path() / 'static' / 'api' / 'pulsar-functions' / v - run(mvn, '-Dlocale=en_US', '-pl', 'api-java', 'javadoc:javadoc', cwd=(src / 'pulsar-functions')) - shutil.copytree(src / 'pulsar-functions' / 'api-java' / 'target' / 'site' / 'apidocs', dst) + # client + dst = site_path() / 'static' / 'api' / 'client' / v + run(mvn, '-Dlocale=en_US', '-pl', 'pulsar-client-api', 'javadoc:javadoc', cwd=src) + shutil.copytree(src / 'pulsar-client-api' / 'target' / 'site' / 'apidocs', dst) + + # admin + dst = site_path() / 'static' / 'api' / 'admin' / v + run(mvn, '-Dlocale=en_US', '-pl', 'pulsar-client-admin-api', 'javadoc:javadoc', cwd=src) + shutil.copytree(src / 'pulsar-client-admin-api' / 'target' / 'site' / 'apidocs', dst) + + # function + dst = site_path() / 'static' / 'api' / 'pulsar-functions' / v + run(mvn, '-Dlocale=en_US', '-pl', 'api-java', 'javadoc:javadoc', cwd=(src / 'pulsar-functions')) + shutil.copytree(src / 'pulsar-functions' / 'api-java' / 'target' / 'site' / 'apidocs', dst) \ No newline at end of file
