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

Reply via email to