This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 25f6185c47 Rename juneau-docs to docs
25f6185c47 is described below
commit 25f6185c47242c67e6058ae0c02d6e1210dce2c6
Author: James Bognar <[email protected]>
AuthorDate: Sun Dec 28 15:36:28 2025 -0500
Rename juneau-docs to docs
---
docs/README.md | 41 -------
docs/docs/topics/23.00.00.Scripts.md | 83 +++++++++++++
docs/docs/topics/23.01.00.ScriptTest.md | 109 +++++++++++++++++
docs/docs/topics/23.02.00.ScriptPush.md | 106 +++++++++++++++++
docs/docs/topics/23.03.00.ScriptRelease.md | 130 +++++++++++++++++++++
.../docs/topics/23.04.00.ScriptReleaseDocsStage.md | 72 ++++++++++++
docs/docs/topics/23.05.00.ScriptReleaseDocs.md | 67 +++++++++++
.../topics/23.06.00.ScriptPromptPgpPassphrase.md | 46 ++++++++
docs/docs/topics/23.07.00.ScriptCurrentRelease.md | 56 +++++++++
docs/docs/topics/23.08.00.ScriptMavenVersion.md | 54 +++++++++
docs/docs/topics/23.09.00.ScriptBuildDocs.md | 92 +++++++++++++++
docs/docs/topics/23.10.00.ScriptCreateMvnSite.md | 49 ++++++++
docs/docs/topics/23.11.00.ScriptStartDocusaurus.md | 51 ++++++++
docs/docs/topics/23.12.00.ScriptCheckTopicLinks.md | 65 +++++++++++
.../topics/23.13.00.ScriptApplyEclipsePrefs.md | 58 +++++++++
.../topics/23.14.00.ScriptCleanupWhitespace.md | 49 ++++++++
.../23.15.00.ScriptCheckFluentSetterOverrides.md | 58 +++++++++
docs/docs/topics/23.16.00.ScriptRevertStaged.md | 47 ++++++++
docs/docs/topics/23.17.00.ScriptRevertUnstaged.md | 51 ++++++++
.../23.18.00.ScriptStartExamplesRestJetty.md | 43 +++++++
.../23.19.00.ScriptStartExamplesRestSpringboot.md | 43 +++++++
docs/sidebars.ts | 107 +++++++++++++++++
pom.xml | 10 +-
23 files changed, 1441 insertions(+), 46 deletions(-)
diff --git a/docs/README.md b/docs/README.md
deleted file mode 100644
index b28211a9bb..0000000000
--- a/docs/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# Website
-
-This website is built using [Docusaurus](https://docusaurus.io/), a modern
static website generator.
-
-## Installation
-
-```bash
-yarn
-```
-
-## Local Development
-
-```bash
-yarn start
-```
-
-This command starts a local development server and opens up a browser window.
Most changes are reflected live without having to restart the server.
-
-## Build
-
-```bash
-yarn build
-```
-
-This command generates static content into the `build` directory and can be
served using any static contents hosting service.
-
-## Deployment
-
-Using SSH:
-
-```bash
-USE_SSH=true yarn deploy
-```
-
-Not using SSH:
-
-```bash
-GIT_USER=<Your GitHub username> yarn deploy
-```
-
-If you are using GitHub pages for hosting, this command is a convenient way to
build the website and push to the `gh-pages` branch.
diff --git a/docs/docs/topics/23.00.00.Scripts.md
b/docs/docs/topics/23.00.00.Scripts.md
new file mode 100644
index 0000000000..900a282ba3
--- /dev/null
+++ b/docs/docs/topics/23.00.00.Scripts.md
@@ -0,0 +1,83 @@
+---
+title: "Scripts"
+slug: Scripts
+---
+
+Apache Juneau includes a collection of Python scripts in the `scripts/`
directory that automate various development, build, test, and release tasks.
These scripts help maintain code quality, streamline workflows, and ensure
consistency across the project.
+
+## Available Scripts
+
+### Build and Test Scripts
+
+| Script | Description | Details |
+|--------|-------------|---------|
+| [test.py](/docs/topics/ScriptTest) | Build and test helper script | [Learn
more →](/docs/topics/ScriptTest) |
+| [push.py](/docs/topics/ScriptPush) | Build, test, and push to repository |
[Learn more →](/docs/topics/ScriptPush) |
+
+### Release Scripts
+
+| Script | Description | Details |
+|--------|-------------|---------|
+| [release.py](/docs/topics/ScriptRelease) | Complete release automation |
[Learn more →](/docs/topics/ScriptRelease) |
+| [release-docs-stage.py](/docs/topics/ScriptReleaseDocsStage) | Stage
documentation to asf-staging | [Learn more
→](/docs/topics/ScriptReleaseDocsStage) |
+| [release-docs.py](/docs/topics/ScriptReleaseDocs) | Promote documentation to
production | [Learn more →](/docs/topics/ScriptReleaseDocs) |
+| [prompt-pgp-passphrase.py](/docs/topics/ScriptPromptPgpPassphrase) | Prompt
for PGP passphrase early | [Learn more
→](/docs/topics/ScriptPromptPgpPassphrase) |
+| [current-release.py](/docs/topics/ScriptCurrentRelease) | Get current
release version | [Learn more →](/docs/topics/ScriptCurrentRelease) |
+| [maven-version.py](/docs/topics/ScriptMavenVersion) | Get Maven version |
[Learn more →](/docs/topics/ScriptMavenVersion) |
+
+### Documentation Scripts
+
+| Script | Description | Details |
+|--------|-------------|---------|
+| [build-docs.py](/docs/topics/ScriptBuildDocs) | Build complete documentation
| [Learn more →](/docs/topics/ScriptBuildDocs) |
+| [create-mvn-site.py](/docs/topics/ScriptCreateMvnSite) | Generate Maven site
for testing | [Learn more →](/docs/topics/ScriptCreateMvnSite) |
+| [start-docusaurus.py](/docs/topics/ScriptStartDocusaurus) | Start Docusaurus
dev server | [Learn more →](/docs/topics/ScriptStartDocusaurus) |
+| [check-topic-links.py](/docs/topics/ScriptCheckTopicLinks) | Validate
documentation links | [Learn more →](/docs/topics/ScriptCheckTopicLinks) |
+
+### Development Scripts
+
+| Script | Description | Details |
+|--------|-------------|---------|
+| [apply-eclipse-prefs.py](/docs/topics/ScriptApplyEclipsePrefs) | Apply
Eclipse preferences | [Learn more →](/docs/topics/ScriptApplyEclipsePrefs) |
+| [cleanup-whitespace.py](/docs/topics/ScriptCleanupWhitespace) | Clean up
whitespace in Java files | [Learn more →](/docs/topics/ScriptCleanupWhitespace)
|
+|
[check-fluent-setter-overrides.py](/docs/topics/ScriptCheckFluentSetterOverrides)
| Check fluent setter overrides | [Learn more
→](/docs/topics/ScriptCheckFluentSetterOverrides) |
+| [revert-staged.py](/docs/topics/ScriptRevertStaged) | Revert staged git
changes | [Learn more →](/docs/topics/ScriptRevertStaged) |
+| [revert-unstaged.py](/docs/topics/ScriptRevertUnstaged) | Revert unstaged
git changes | [Learn more →](/docs/topics/ScriptRevertUnstaged) |
+
+### Example Scripts
+
+| Script | Description | Details |
+|--------|-------------|---------|
+| [start-examples-rest-jetty.py](/docs/topics/ScriptStartExamplesRestJetty) |
Start REST examples with Jetty | [Learn more
→](/docs/topics/ScriptStartExamplesRestJetty) |
+|
[start-examples-rest-springboot.py](/docs/topics/ScriptStartExamplesRestSpringboot)
| Start REST examples with Spring Boot | [Learn more
→](/docs/topics/ScriptStartExamplesRestSpringboot) |
+
+## Common Features
+
+All scripts share the following characteristics:
+
+- **Python 3.6+** - Written in Python using only the standard library
+- **No External Dependencies** - All scripts use only Python standard library
modules
+- **Cross-Platform** - Work on macOS, Linux, and Windows
+- **Error Handling** - Provide clear error messages and exit codes
+- **Documentation** - Each script has a corresponding README file in
`scripts/README-*.md`
+
+## Getting Help
+
+Each script supports a `--help` flag to display usage information:
+
+```bash
+python3 scripts/<script-name>.py --help
+```
+
+For detailed documentation, see the README files in the `scripts/` directory
or the individual script topic pages.
+
+## Requirements
+
+Most scripts require:
+- **Python 3.6 or higher**
+- **Maven** (for build/test/release scripts)
+- **Git** (for version control scripts)
+- **Node.js and npm** (for documentation scripts)
+
+Specific requirements are documented in each script's README and topic page.
+
diff --git a/docs/docs/topics/23.01.00.ScriptTest.md
b/docs/docs/topics/23.01.00.ScriptTest.md
new file mode 100644
index 0000000000..4fcf590651
--- /dev/null
+++ b/docs/docs/topics/23.01.00.ScriptTest.md
@@ -0,0 +1,109 @@
+---
+title: "test.py"
+slug: ScriptTest
+---
+
+`test.py` is a build and test helper script for Apache Juneau. It provides a
convenient way to run Maven builds and tests with various options.
+
+## What It Does
+
+The script can:
+- Build the project (clean install without tests)
+- Run tests
+- Do both (full clean build + tests)
+
+## Usage
+
+### Full Build and Test (Default)
+
+```bash
+python3 scripts/test.py
+# or
+python3 scripts/test.py --full
+# or
+python3 scripts/test.py -f
+```
+
+This performs a clean build and runs all tests.
+
+### Build Only (Skip Tests)
+
+```bash
+python3 scripts/test.py --build-only
+# or
+python3 scripts/test.py -b
+```
+
+This runs `mvn clean install -DskipTests` to build the project without running
tests.
+
+### Test Only (No Build)
+
+```bash
+python3 scripts/test.py --test-only
+# or
+python3 scripts/test.py -t
+```
+
+This runs `mvn test -Drat.skip=true` to run tests without rebuilding.
+
+### Verbose Output
+
+```bash
+python3 scripts/test.py --verbose
+# or
+python3 scripts/test.py -v
+```
+
+Shows full Maven output instead of just the last 50 lines.
+
+## Command-Line Options
+
+- `--build-only, -b` - Only build (skip tests)
+- `--test-only, -t` - Only run tests (no build)
+- `--full, -f` - Clean build + run tests (default)
+- `--verbose, -v` - Show full Maven output
+- `--help, -h` - Show help message
+
+## Examples
+
+### Quick Test Run
+
+```bash
+python3 scripts/test.py -t
+```
+
+### Rebuild After Code Changes
+
+```bash
+python3 scripts/test.py -b
+```
+
+### Full Build and Test with Verbose Output
+
+```bash
+python3 scripts/test.py -f -v
+```
+
+## Output
+
+By default, the script shows the last 50 lines of Maven output. Use
`--verbose` to see the full output.
+
+The script also attempts to parse test results and display failure/error
counts if tests fail.
+
+## Exit Codes
+
+- `0` - Success
+- `1` - Failure (build or tests failed)
+
+## Requirements
+
+- Python 3.6 or higher
+- Maven (mvn command must be in PATH)
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script automatically skips RAT checks when running tests
(`-Drat.skip=true`)
+- Tests are skipped during build (`-DskipTests`)
+- All commands are run from the project root directory
+
diff --git a/docs/docs/topics/23.02.00.ScriptPush.md
b/docs/docs/topics/23.02.00.ScriptPush.md
new file mode 100644
index 0000000000..a6dd5dc253
--- /dev/null
+++ b/docs/docs/topics/23.02.00.ScriptPush.md
@@ -0,0 +1,106 @@
+---
+title: "push.py"
+slug: ScriptPush
+---
+
+`push.py` automates the complete build, test, and deployment workflow for
Juneau, ensuring code quality before pushing changes to the remote repository.
+
+## What It Does
+
+The script executes the following steps in order:
+
+1. **Run Tests** - Executes `mvn test` to ensure all tests pass
+2. **Build and Install** - Runs `mvn clean package install` to build the
project
+3. **Generate Javadocs** - Executes `mvn javadoc:javadoc` to create API
documentation
+4. **Git Commit** - Stages all changes and commits with the provided message
+5. **Git Push** - Pushes the commit to the remote repository
+
+If any step fails, the script stops immediately and reports the failure.
+
+## Usage
+
+### Basic Usage
+
+```bash
+cd /Users/james.bognar/git/juneau
+python3 scripts/push.py "Your commit message here"
+```
+
+### Skip Tests (for documentation-only changes)
+
+```bash
+python3 scripts/push.py "Updated README" --skip-tests
+```
+
+### Skip Javadoc Generation
+
+```bash
+python3 scripts/push.py "Minor code fix" --skip-javadoc
+```
+
+### Skip Both Tests and Javadoc
+
+```bash
+python3 scripts/push.py "Quick formatting fix" --skip-tests --skip-javadoc
+```
+
+### Dry Run (see what would happen without actually doing it)
+
+```bash
+python3 scripts/push.py "Testing changes" --dry-run
+```
+
+## Command-Line Options
+
+### Required Arguments
+
+- `message` - The Git commit message (must be provided)
+
+### Optional Flags
+
+- `--skip-tests` - Skip running tests (useful for documentation-only changes)
+- `--skip-javadoc` - Skip Javadoc generation
+- `--dry-run` - Show what would be done without actually executing commands
+
+## When to Use
+
+### Use the full script when:
+- Making code changes that affect functionality
+- Adding new features
+- Fixing bugs
+- Refactoring code
+
+### Use `--skip-tests` when:
+- Only updating documentation (README, Javadocs, markdown files)
+- Making cosmetic changes (formatting, comments)
+- Tests have already been run successfully in another context
+
+### Use `--skip-javadoc` when:
+- Making changes that don't affect public APIs
+- Quick bug fixes
+- Internal code refactoring
+
+### Use `--dry-run` when:
+- Testing the script itself
+- Verifying what steps will be executed
+- Learning how the script works
+
+## Requirements
+
+- Python 3.6 or higher
+- Maven (mvn command must be in PATH)
+- Git (git command must be in PATH)
+- No external Python dependencies (uses only standard library)
+
+## Exit Codes
+
+- `0` - Success, all operations completed
+- `1` - Failure at any step
+
+## Safety Features
+
+1. **No Changes Detection** - If there are no changes to commit, the script
skips commit and push steps
+2. **Fail-Fast** - Stops immediately on any error to prevent incomplete
deployments
+3. **Clear Output** - Each step is clearly marked with emojis and status
indicators
+4. **Dry Run Mode** - Preview what will happen without making any changes
+
diff --git a/docs/docs/topics/23.03.00.ScriptRelease.md
b/docs/docs/topics/23.03.00.ScriptRelease.md
new file mode 100644
index 0000000000..a4ee76a32e
--- /dev/null
+++ b/docs/docs/topics/23.03.00.ScriptRelease.md
@@ -0,0 +1,130 @@
+---
+title: "release.py"
+slug: ScriptRelease
+---
+
+`release.py` automates the complete release process for Apache Juneau,
including prerequisite checks, building, testing, Maven release, binary
artifact creation, and SVN distribution upload.
+
+## What It Does
+
+The script performs the following steps:
+
+1. **Check Prerequisites** - Verifies required tools are available
+2. **Check Java Version** - Automatically detects and verifies Java 17+
+3. **Check Maven Version** - Automatically detects and verifies Maven 3+
+4. **Clean Maven Repository** - Cleans local Maven repo (only on first run for
a version)
+5. **Make Git Folder** - Creates staging directory
+6. **Clone Juneau** - Clones the repository to staging directory
+7. **Configure Git** - Sets up git user and email
+8. **Run Clean Verify** - Builds and verifies the project
+9. **Run Javadoc Aggregate** - Generates aggregate javadocs
+10. **Create Test Workspace** - Creates a test workspace
+11. **Run Deploy** - Deploys to Maven staging repository
+12. **Run Release Prepare** - Prepares the Maven release
+13. **Run Git Diff** - Shows changes made by release:prepare
+14. **Run Release Perform** - Performs the Maven release
+15. **Create Binary Artifacts** - Downloads and processes source/binary
artifacts
+16. **Verify Distribution** - Verifies files on Apache distribution site
+
+## Usage
+
+### Start a New Release
+
+```bash
+python3 scripts/release.py --rc 1
+```
+
+### Resume from a Step
+
+```bash
+python3 scripts/release.py --start-step run_release_perform
+```
+
+### List Available Steps
+
+```bash
+python3 scripts/release.py --list-steps
+```
+
+### Skip Specific Steps
+
+```bash
+python3 scripts/release.py --rc 1 --skip-step clean_maven_repo
+```
+
+### Resume from Last Checkpoint
+
+```bash
+python3 scripts/release.py --resume
+```
+
+## Command-Line Options
+
+### Required (for new releases)
+- `--rc RC_NUMBER` - Release candidate number (e.g., `--rc 1` for RC1)
+
+### Optional
+- `--start-step STEP_NAME` - Start execution from the specified step
+- `--list-steps` - List all available steps and exit
+- `--skip-step STEP_NAME` - Skip a specific step (can be used multiple times)
+- `--resume` - Resume from the last checkpoint (if available)
+
+## Environment Variables
+
+The script prompts for and sets the following environment variables:
+
+- `X_VERSION` - Current release version (detected from pom.xml)
+- `X_NEXT_VERSION` - Next version (calculated)
+- `X_RELEASE` - Full release name (e.g., "juneau-9.2.0-RC1")
+- `X_RELEASE_CANDIDATE` - Release candidate number
+- `X_STAGING` - Staging directory path
+- `X_USERNAME` - Apache username
+- `X_EMAIL` - Apache email
+- `X_GIT_BRANCH` - Git branch name
+- `X_JAVA_HOME` - Java home directory
+- `X_CLEANM2` - Whether to clean Maven repo (Y/N)
+
+## History Files
+
+The script maintains history files (`release-history-{version}.json`) that
store:
+- Default values for prompts
+- Last run date
+- Previous configuration values
+
+This allows the script to provide intelligent defaults on subsequent runs.
+
+## Checkpoint/Resume
+
+The script supports checkpoint/resume functionality:
+- State is saved to `~/.juneau-release-state.json`
+- You can resume from any step using `--resume` or `--start-step`
+- The `--rc` parameter is optional when resuming (extracted from state/history)
+
+## Vote Email Generation
+
+After successful distribution verification, the script automatically generates
a vote email body with:
+- Version and RC number
+- Distribution URLs
+- SHA-512 checksums (fetched from URLs)
+- Git commit hash
+- Vote end date (72 hours from now)
+
+The email is printed to the console.
+
+## Prerequisites
+
+- Python 3.6 or higher
+- Java 17 or higher
+- Maven 3 or higher
+- Git
+- GPG (for signing)
+- SVN client (for distribution upload)
+- wget (for downloading artifacts)
+
+## Notes
+
+- The script automatically excludes `juneau-docs` from the source release zip
+- Source and binary artifacts are downloaded from Maven staging repository
+- Distribution verification checks for expected files on Apache distribution
site
+- The script uses `current-release.py` and `maven-version.py` for version
detection
+
diff --git a/docs/docs/topics/23.04.00.ScriptReleaseDocsStage.md
b/docs/docs/topics/23.04.00.ScriptReleaseDocsStage.md
new file mode 100644
index 0000000000..fdce3451d4
--- /dev/null
+++ b/docs/docs/topics/23.04.00.ScriptReleaseDocsStage.md
@@ -0,0 +1,72 @@
+---
+title: "release-docs-stage.py"
+slug: ScriptReleaseDocsStage
+---
+
+`release-docs-stage.py` builds the documentation and deploys it to the
`asf-staging` branch, making it available on the staging website.
+
+## What It Does
+
+The script:
+1. Runs `build-docs.py` with `--staging` flag to build documentation for
staging
+2. Clones the repository to a temporary directory
+3. Checks out the `asf-staging` branch (or creates it if it doesn't exist)
+4. Removes all existing files (except `.git`)
+5. Copies the built documentation from `juneau-docs/build` to the temp
directory
+6. Adds and commits the changes
+7. Pushes to the remote `asf-staging` branch
+
+## Usage
+
+### Deploy to Staging
+
+```bash
+python3 scripts/release-docs-stage.py
+```
+
+### Custom Commit Message
+
+```bash
+python3 scripts/release-docs-stage.py --commit-message "Updated API
documentation"
+```
+
+### Test Without Pushing
+
+```bash
+python3 scripts/release-docs-stage.py --no-push
+```
+
+## Command-Line Options
+
+- `--no-push` - Build and commit but don't push to remote
+- `--commit-message MESSAGE` - Custom commit message (default: "Deploy
documentation staging")
+
+## Prerequisites
+
+- Python 3.6 or higher
+- Git (git command must be in PATH)
+- All prerequisites for `build-docs.py` (Node.js, npm, Maven, Java)
+- Write access to the remote repository
+
+## Exit Codes
+
+- `0` - Success
+- `1` - Error occurred
+
+## Notes
+
+- The script uses a temporary directory for git operations
+- The temp directory is automatically cleaned up after successful push
+- If `--no-push` is used, the temp directory is not cleaned up (for manual
inspection)
+- The script sets `SITE_URL` environment variable to
`https://juneau.staged.apache.org` when building
+- A success sound is played when the script completes successfully
+
+## Workflow
+
+This script is typically used as part of the documentation release workflow:
+
+1. Make documentation changes
+2. Run `release-docs-stage.py` to deploy to staging
+3. Review the staging site
+4. Run `release-docs.py` to promote to production
+
diff --git a/docs/docs/topics/23.05.00.ScriptReleaseDocs.md
b/docs/docs/topics/23.05.00.ScriptReleaseDocs.md
new file mode 100644
index 0000000000..3ad6cfe6c5
--- /dev/null
+++ b/docs/docs/topics/23.05.00.ScriptReleaseDocs.md
@@ -0,0 +1,67 @@
+---
+title: "release-docs.py"
+slug: ScriptReleaseDocs
+---
+
+`release-docs.py` promotes documentation from the `asf-staging` branch to the
`asf-site` branch, making it live on the production website.
+
+## What It Does
+
+The script:
+1. Clones the repository to a temporary directory
+2. Fetches the `asf-staging` branch
+3. Switches to a detached HEAD at `origin/asf-staging`
+4. Force pushes to the `asf-site` branch
+
+## Usage
+
+### Promote to Production
+
+```bash
+python3 scripts/release-docs.py
+```
+
+**⚠️ WARNING:** This will make the documentation live on the production
website.
+
+### Test Without Pushing
+
+```bash
+python3 scripts/release-docs.py --no-push
+```
+
+## Command-Line Options
+
+- `--no-push` - Perform all steps except the final git push
+
+## Prerequisites
+
+- Python 3.6 or higher
+- Git (git command must be in PATH)
+- Write access to the remote repository
+
+## Exit Codes
+
+- `0` - Success
+- `1` - Error occurred
+
+## Notes
+
+- The script uses a temporary directory for git operations
+- The temp directory is automatically cleaned up after successful push
+- If `--no-push` is used, the temp directory is not cleaned up (for manual
inspection)
+- A success sound is played when the script completes successfully
+- This script does NOT build documentation - it only promotes what's already
in `asf-staging`
+
+## Workflow
+
+This script is typically used as the final step in the documentation release
workflow:
+
+1. Make documentation changes
+2. Run `release-docs-stage.py` to deploy to staging
+3. Review the staging site at `https://juneau.staged.apache.org`
+4. Run `release-docs.py` to promote to production at
`https://juneau.apache.org`
+
+## Safety
+
+The script includes a warning message before promoting to production to ensure
you understand the impact.
+
diff --git a/docs/docs/topics/23.06.00.ScriptPromptPgpPassphrase.md
b/docs/docs/topics/23.06.00.ScriptPromptPgpPassphrase.md
new file mode 100644
index 0000000000..767b44dacc
--- /dev/null
+++ b/docs/docs/topics/23.06.00.ScriptPromptPgpPassphrase.md
@@ -0,0 +1,46 @@
+---
+title: "prompt-pgp-passphrase.py"
+slug: ScriptPromptPgpPassphrase
+---
+
+`prompt-pgp-passphrase.py` makes a dummy PGP call to prompt for the user's
passphrase early in the execution. This ensures the user is prompted at the
beginning rather than waiting until signing is needed near the end of a process.
+
+## What It Does
+
+The script:
+1. Creates a temporary dummy file
+2. Attempts to sign it with GPG (which prompts for passphrase)
+3. Cleans up the temporary files
+4. Returns success even if GPG is not available (to avoid breaking workflows)
+
+## Usage
+
+```bash
+python3 scripts/prompt-pgp-passphrase.py
+```
+
+## When to Use
+
+This script is typically called by other scripts (like `push.py` and
`release.py`) at the beginning of their execution to:
+- Prompt for PGP passphrase early
+- Avoid delays later when signing is actually needed
+- Provide a better user experience
+
+## Exit Codes
+
+- Always returns `0` (success) to avoid breaking workflows
+- Prints warnings if GPG is not available or if the prompt times out
+
+## Requirements
+
+- Python 3.6 or higher
+- GPG (optional, script handles gracefully if not available)
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script is designed to fail gracefully
+- If GPG is not found, it prints a warning and continues
+- If the prompt times out, it's treated as okay (user may not need signing)
+- The dummy file and signature are automatically cleaned up
+
diff --git a/docs/docs/topics/23.07.00.ScriptCurrentRelease.md
b/docs/docs/topics/23.07.00.ScriptCurrentRelease.md
new file mode 100644
index 0000000000..66356f82d4
--- /dev/null
+++ b/docs/docs/topics/23.07.00.ScriptCurrentRelease.md
@@ -0,0 +1,56 @@
+---
+title: "current-release.py"
+slug: ScriptCurrentRelease
+---
+
+`current-release.py` extracts the current release version from the root
`pom.xml` file, removing the `-SNAPSHOT` suffix if present.
+
+## What It Does
+
+The script:
+1. Tries to use Maven's `help:evaluate` to get the version (most reliable)
+2. Falls back to parsing the `pom.xml` XML directly if Maven fails
+3. Removes the `-SNAPSHOT` suffix if present
+4. Prints the version number to stdout
+
+## Usage
+
+```bash
+python3 scripts/current-release.py
+```
+
+## Output
+
+Prints the version number (e.g., "9.2.0") to stdout.
+
+### Example
+
+```bash
+$ python3 scripts/current-release.py
+9.2.0
+```
+
+## Exit Codes
+
+- `0` - Success, version printed to stdout
+- `1` - Error, could not determine version
+
+## Use Cases
+
+This script is typically used by other scripts (like `release.py`) to:
+- Determine the current release version
+- Calculate the next version
+- Generate version-specific file names
+
+## Requirements
+
+- Python 3.6 or higher
+- Maven (optional, for primary method)
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script prefers Maven's evaluation method as it's more reliable
+- Falls back to XML parsing if Maven is not available or fails
+- Handles Maven POM namespaces correctly
+
diff --git a/docs/docs/topics/23.08.00.ScriptMavenVersion.md
b/docs/docs/topics/23.08.00.ScriptMavenVersion.md
new file mode 100644
index 0000000000..3945d2cc5b
--- /dev/null
+++ b/docs/docs/topics/23.08.00.ScriptMavenVersion.md
@@ -0,0 +1,54 @@
+---
+title: "maven-version.py"
+slug: ScriptMavenVersion
+---
+
+`maven-version.py` extracts the Maven major version number from the output of
`mvn -version`.
+
+## What It Does
+
+The script:
+1. Runs `mvn -version`
+2. Parses the output to extract the major version number
+3. Prints the major version (e.g., "3") to stdout
+
+## Usage
+
+```bash
+python3 scripts/maven-version.py
+```
+
+## Output
+
+Prints the major version number (e.g., "3") to stdout.
+
+### Example
+
+```bash
+$ python3 scripts/maven-version.py
+3
+```
+
+## Exit Codes
+
+- `0` - Success, version printed to stdout
+- `1` - Error, could not determine Maven version or Maven not found
+
+## Use Cases
+
+This script is typically used by other scripts (like `release.py`) to:
+- Check if Maven meets minimum version requirements
+- Verify Maven installation
+
+## Requirements
+
+- Python 3.6 or higher
+- Maven (mvn command must be in PATH)
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script looks for patterns like "Apache Maven 3.9.5" or "Maven 3.9.5"
+- Returns only the major version number (e.g., "3" from "3.9.5")
+- Exits with error if Maven is not found or version cannot be parsed
+
diff --git a/docs/docs/topics/23.09.00.ScriptBuildDocs.md
b/docs/docs/topics/23.09.00.ScriptBuildDocs.md
new file mode 100644
index 0000000000..7ee9bf87cf
--- /dev/null
+++ b/docs/docs/topics/23.09.00.ScriptBuildDocs.md
@@ -0,0 +1,92 @@
+---
+title: "build-docs.py"
+slug: ScriptBuildDocs
+---
+
+`build-docs.py` builds the complete Apache Juneau documentation, including
both Docusaurus documentation and Maven-generated Javadocs. This script
replicates the documentation generation steps from the GitHub Actions workflow,
allowing you to build and test the documentation locally.
+
+## What It Does
+
+The script performs the following steps:
+
+1. **Installs npm dependencies** - Runs `npm ci` in the `juneau-docs` directory
+2. **Compiles Java modules** - Runs `mvn clean install -DskipTests` to build
all modules
+3. **Generates Maven site** - Runs `mvn site -DskipTests` to generate the
Maven project site (includes aggregate javadocs)
+4. **Copies current javadocs** - Copies generated javadocs to
`juneau-docs/static/javadocs/<current-release>/`
+5. **Updates javadocs index** - Updates `releases.json` with version
information
+6. **Copies Maven site** - Copies the generated site to
`juneau-docs/static/site/` (Docusaurus will copy to build)
+7. **Builds Docusaurus** - Runs `npm run build` to generate the static
Docusaurus site (copies static/ to build/)
+8. **Copies .asf.yaml** - Copies the ASF configuration file to the build
directory
+9. **Verifies apidocs** - Checks that the javadocs were successfully generated
+10. **Checks topic links** - Validates all documentation links
+
+## Usage
+
+### Build all documentation
+
+```bash
+cd /path/to/juneau
+python3 scripts/build-docs.py
+```
+
+This will build both the Docusaurus documentation and the Maven site with
javadocs.
+
+### Skip specific steps
+
+You can skip individual steps if you only need to rebuild part of the
documentation:
+
+```bash
+# Skip npm steps (useful if you only changed Java code)
+python3 scripts/build-docs.py --skip-npm
+
+# Skip Maven steps (useful if you only changed Docusaurus docs)
+python3 scripts/build-docs.py --skip-maven
+
+# Skip copying step (useful for testing without updating build directory)
+python3 scripts/build-docs.py --skip-copy
+
+# Build for staging (sets SITE_URL for staging environment)
+python3 scripts/build-docs.py --staging
+```
+
+## Command-Line Options
+
+- `--skip-npm` - Skip npm install and Docusaurus build
+- `--skip-maven` - Skip Maven compilation and site generation
+- `--skip-copy` - Skip copying Maven site to static directory
+- `--staging` - Build for staging environment (sets SITE_URL)
+
+## Output Location
+
+After successful execution, the documentation will be available in:
+
+- **Docusaurus docs**: `juneau-docs/build/`
+- **Maven site**: `juneau-docs/build/site/`
+- **Javadocs**: `juneau-docs/build/javadocs/` (versioned, copied from
static/javadocs) and `juneau-docs/build/site/apidocs/` (current)
+- **Javadocs index**: `juneau-docs/build/javadocs/index.html` (dynamically
loads from `releases.json`)
+
+## Requirements
+
+- Python 3.6 or higher
+- No external Python dependencies (uses only standard library)
+- Node.js 18+ and npm
+- Maven 3.6+ and Java 17+
+
+## Notes
+
+- The script automatically skips tests (`-DskipTests`) to speed up the build
+- All commands are run from the project root directory
+- The script will exit immediately if any command fails (unless using
`--skip-*` options)
+- The build directory (`juneau-docs/build/`) will be created if it doesn't
exist
+- Existing site contents will be replaced when copying
+
+## Build Order
+
+The script copies Maven site to `static/site/` and updates javadocs in
`static/javadocs/` **before** building Docusaurus. Docusaurus automatically
copies everything from the `static/` directory to the `build/` directory during
the build process, so the files are available when Docusaurus processes links,
preventing broken link warnings.
+
+## Integration with CI/CD
+
+This script is used by the documentation release scripts:
+- `release-docs-stage.py` - Calls `build-docs.py --staging` to build for
staging
+- `release-docs.py` - Promotes already-built documentation from staging to
production
+
diff --git a/docs/docs/topics/23.10.00.ScriptCreateMvnSite.md
b/docs/docs/topics/23.10.00.ScriptCreateMvnSite.md
new file mode 100644
index 0000000000..3d7a56f89d
--- /dev/null
+++ b/docs/docs/topics/23.10.00.ScriptCreateMvnSite.md
@@ -0,0 +1,49 @@
+---
+title: "create-mvn-site.py"
+slug: ScriptCreateMvnSite
+---
+
+`create-mvn-site.py` generates the Maven site with Javadocs and copies it to
the Docusaurus static directory for local testing and broken link validation.
+
+## What It Does
+
+The script performs these operations:
+
+1. **Detects Version** - Automatically gets the project version from POM
+2. **Cleans Old Site** - Removes existing `target/site` directory
+3. **Generates Site** - Runs `mvn clean compile site` to create the Maven site
+4. **Copies to Docusaurus** - Moves site to `/juneau-docs/static/site/`
+5. **Logs Output** - Creates `create-mvn-site.log` in project root
+
+## Usage
+
+### Generate Maven Site
+
+```bash
+cd /Users/james.bognar/git/juneau
+python3 scripts/create-mvn-site.py
+```
+
+The generated site will be available at `http://localhost:3000/site/` (after
starting Docusaurus).
+
+## When to Use
+
+Use this script when:
+- Testing broken link validation in Docusaurus
+- Verifying that Maven site links work correctly
+- Need to view the Maven site locally through Docusaurus
+- Debugging documentation issues
+
+## Requirements
+
+- Python 3.6 or higher
+- Maven (mvn command must be in PATH)
+- Java 17+
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script creates a log file (`create-mvn-site.log`) in the project root
+- The Maven site is copied to `juneau-docs/static/site/` where Docusaurus can
serve it
+- This is primarily for local testing - production builds use `build-docs.py`
+
diff --git a/docs/docs/topics/23.11.00.ScriptStartDocusaurus.md
b/docs/docs/topics/23.11.00.ScriptStartDocusaurus.md
new file mode 100644
index 0000000000..9f097cffe3
--- /dev/null
+++ b/docs/docs/topics/23.11.00.ScriptStartDocusaurus.md
@@ -0,0 +1,51 @@
+---
+title: "start-docusaurus.py"
+slug: ScriptStartDocusaurus
+---
+
+`start-docusaurus.py` starts the Docusaurus development server with automatic
cleanup and process management.
+
+## What It Does
+
+The script performs these operations before starting the server:
+
+1. **Kills Existing Processes** - Automatically terminates any process running
on port 3000
+2. **Clears Caches** - Removes `.docusaurus`, `build`, and
`node_modules/.cache` directories
+3. **Starts Fresh Server** - Launches the Docusaurus development server
+4. **Cross-Platform** - Works on macOS, Linux, and Windows
+
+## Usage
+
+### Start the Server
+
+```bash
+cd /Users/james.bognar/git/juneau
+python3 scripts/start-docusaurus.py
+```
+
+The server will start at `http://localhost:3000/`
+
+Press `Ctrl+C` to stop the server.
+
+## When to Use
+
+Use this script when:
+- Starting development on documentation
+- The server is acting strangely (cache issues)
+- Need a clean server start
+- Testing documentation changes locally
+
+## Requirements
+
+- Python 3.6 or higher
+- Node.js 18+ and npm
+- Dependencies installed (`npm install` in `juneau-docs` directory)
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script automatically detects the `/juneau-docs` directory
+- Cache clearing is automatic - no flags needed
+- The server supports hot-reloading (changes appear immediately in browser)
+- Port 3000 must be available (script will kill existing processes)
+
diff --git a/docs/docs/topics/23.12.00.ScriptCheckTopicLinks.md
b/docs/docs/topics/23.12.00.ScriptCheckTopicLinks.md
new file mode 100644
index 0000000000..432b464b43
--- /dev/null
+++ b/docs/docs/topics/23.12.00.ScriptCheckTopicLinks.md
@@ -0,0 +1,65 @@
+---
+title: "check-topic-links.py"
+slug: ScriptCheckTopicLinks
+---
+
+`check-topic-links.py` validates that all documentation topic links in the
Juneau source code are correct and point to valid topics with matching titles.
+
+## What It Does
+
+The script performs three main operations:
+
+1. **Extracts Topic Information** - Scans `/juneau-docs/docs/topics` for all
markdown files and extracts:
+ - Slug names from the frontmatter
+ - Page titles from the frontmatter
+
+2. **Finds Topic Links** - Scans the entire Juneau source tree for links in
the format:
+ ```
+ https://juneau.apache.org/docs/topics/SLUG">TITLE</a>
+ ```
+
+3. **Validates Links** - Reports any issues:
+ - **Title mismatches**: Link title doesn't match the actual topic title
+ - **Unknown slugs**: Link points to a topic that doesn't exist
+
+## Usage
+
+### Check all topic links
+
+```bash
+cd /Users/james.bognar/git/juneau
+python3 scripts/check-topic-links.py
+```
+
+The script will automatically:
+- Scan `/juneau-docs/docs/topics` for topic definitions
+- Scan the entire Juneau source tree for topic links
+- Report any issues found
+
+## File Types Scanned
+
+The script checks the following file types:
+- `.java` - Java source files
+- `.md` - Markdown files
+- `.xml` - XML configuration files
+- `.properties` - Properties files
+- `.txt` - Text files
+- `.adoc` - AsciiDoc files
+- `.rst` - reStructuredText files
+
+## Exit Codes
+
+- `0` - Success, all links validated
+- `1` - Error occurred or validation issues found
+
+## Requirements
+
+- Python 3.6 or higher
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script is typically run as part of `build-docs.py`
+- It validates both slug names and title text
+- Reports are printed to stdout with file locations and line numbers
+
diff --git a/docs/docs/topics/23.13.00.ScriptApplyEclipsePrefs.md
b/docs/docs/topics/23.13.00.ScriptApplyEclipsePrefs.md
new file mode 100644
index 0000000000..8509d1db08
--- /dev/null
+++ b/docs/docs/topics/23.13.00.ScriptApplyEclipsePrefs.md
@@ -0,0 +1,58 @@
+---
+title: "apply-eclipse-prefs.py"
+slug: ScriptApplyEclipsePrefs
+---
+
+`apply-eclipse-prefs.py` applies Eclipse IDE preference files to all Juneau
project modules, ensuring consistent code formatting and IDE configuration
across all developers.
+
+## What It Does
+
+The script copies Eclipse JDT (Java Development Tools) preferences from the
`eclipse-preferences` directory to each module's `.settings` folder. There are
two sets of preferences:
+
+1. **source-prefs** - Applied to main source modules (28 modules)
+ - Code formatting rules
+ - Code cleanup rules
+ - Compiler settings
+ - Save actions
+
+2. **test-prefs** - Applied to test modules (2 modules)
+ - Same as source-prefs but optimized for test code
+ - Applied to: `juneau-utest` and `*-ftest` modules
+
+## Usage
+
+### Apply preferences to all modules
+
+```bash
+cd /Users/james.bognar/git/juneau
+python3 scripts/apply-eclipse-prefs.py
+```
+
+### Apply preferences from a different directory
+
+```bash
+python3 scripts/apply-eclipse-prefs.py --prefs-dir /path/to/preferences
+```
+
+## Command-Line Options
+
+- `--prefs-dir DIR` - Use a different preferences directory (default:
`scripts/eclipse-preferences`)
+
+## When to Use
+
+Use this script when:
+- Setting up a new development environment
+- Preferences have been updated and need to be reapplied
+- Ensuring all modules have consistent formatting rules
+
+## Requirements
+
+- Python 3.6 or higher
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script automatically detects which modules are source modules vs test
modules
+- Preferences are copied to each module's `.settings` directory
+- This ensures consistent code formatting across the entire project
+
diff --git a/docs/docs/topics/23.14.00.ScriptCleanupWhitespace.md
b/docs/docs/topics/23.14.00.ScriptCleanupWhitespace.md
new file mode 100644
index 0000000000..353723bb16
--- /dev/null
+++ b/docs/docs/topics/23.14.00.ScriptCleanupWhitespace.md
@@ -0,0 +1,49 @@
+---
+title: "cleanup-whitespace.py"
+slug: ScriptCleanupWhitespace
+---
+
+`cleanup-whitespace.py` is a Python script that cleans up common whitespace
inconsistencies in Java files.
+
+## What It Does
+
+The script performs the following cleanup operations:
+
+1. **Removes consecutive blank lines** - Maximum of 1 blank line allowed
between code sections
+2. **Removes trailing whitespace** - Strips whitespace from the end of all
lines
+3. **Removes blank lines before final closing brace** - Ensures files end
cleanly with `}`
+4. **Ensures proper file endings** - Files end with `}` with no trailing
newline
+
+## Usage
+
+### Clean the entire Juneau codebase
+
+```bash
+cd /Users/james.bognar/git/juneau
+python3 scripts/cleanup-whitespace.py
+```
+
+### Clean a specific directory
+
+```bash
+python3 scripts/cleanup-whitespace.py juneau-core/juneau-marshall
+```
+
+## When to Use
+
+Use this script when:
+- Preparing code for commit
+- Fixing whitespace inconsistencies
+- Ensuring consistent file formatting
+
+## Requirements
+
+- Python 3.6 or higher
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script only modifies `.java` files
+- Files are modified in-place
+- Always review changes with `git diff` before committing
+
diff --git a/docs/docs/topics/23.15.00.ScriptCheckFluentSetterOverrides.md
b/docs/docs/topics/23.15.00.ScriptCheckFluentSetterOverrides.md
new file mode 100644
index 0000000000..f741d64497
--- /dev/null
+++ b/docs/docs/topics/23.15.00.ScriptCheckFluentSetterOverrides.md
@@ -0,0 +1,58 @@
+---
+title: "check-fluent-setter-overrides.py"
+slug: ScriptCheckFluentSetterOverrides
+---
+
+This script scans the Juneau codebase to find missing fluent setter overrides
in subclasses.
+
+## Problem
+
+Juneau uses fluent-style setters extensively for method chaining:
+
+```java
+public class X {
+ public X setY(Y y) {
+ this.y = y;
+ return this;
+ }
+}
+```
+
+When a class extends another class with fluent setters, it should override
those setters to return the correct subclass type:
+
+```java
+public class X2 extends X {
+ @Override
+ public X2 setY(Y y) {
+ super.setY(y);
+ return this;
+ }
+}
+```
+
+## What It Does
+
+The script:
+1. Scans all Java files in the codebase
+2. Identifies classes with fluent setters
+3. Checks subclasses for proper overrides
+4. Reports missing or incorrect overrides
+
+## Usage
+
+```bash
+cd /Users/james.bognar/git/juneau
+python3 scripts/check-fluent-setter-overrides.py
+```
+
+## Requirements
+
+- Python 3.6 or higher
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script helps maintain type safety in fluent APIs
+- Missing overrides can cause type casting issues in method chains
+- Reports are printed to stdout with file locations and line numbers
+
diff --git a/docs/docs/topics/23.16.00.ScriptRevertStaged.md
b/docs/docs/topics/23.16.00.ScriptRevertStaged.md
new file mode 100644
index 0000000000..e961fcd5ce
--- /dev/null
+++ b/docs/docs/topics/23.16.00.ScriptRevertStaged.md
@@ -0,0 +1,47 @@
+---
+title: "revert-staged.py"
+slug: ScriptRevertStaged
+---
+
+`revert-staged.py` reverts both staged AND unstaged changes for a file back to
the last committed version (HEAD).
+
+## What It Does
+
+The script:
+1. Verifies the file is tracked by git
+2. Warns the user about discarding changes
+3. Runs `git restore --source=HEAD <file>` to revert the file
+
+## Usage
+
+```bash
+python3 scripts/revert-staged.py <file_path>
+```
+
+### Example
+
+```bash
+python3 scripts/revert-staged.py
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+```
+
+## ⚠️ Warning
+
+This will discard **ALL changes** (both staged and unstaged) for the specified
file, reverting it back to the last commit.
+
+## Exit Codes
+
+- `0` - Success
+- `1` - Error (file not tracked, git command failed, etc.)
+
+## Requirements
+
+- Python 3.6 or higher
+- Git (git command must be in PATH)
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The file must be tracked by git (the script verifies this)
+- This is a destructive operation - changes cannot be recovered
+- Use `revert-unstaged.py` if you only want to revert unstaged changes while
preserving staged changes
+
diff --git a/docs/docs/topics/23.17.00.ScriptRevertUnstaged.md
b/docs/docs/topics/23.17.00.ScriptRevertUnstaged.md
new file mode 100644
index 0000000000..2ea38ff7b0
--- /dev/null
+++ b/docs/docs/topics/23.17.00.ScriptRevertUnstaged.md
@@ -0,0 +1,51 @@
+---
+title: "revert-unstaged.py"
+slug: ScriptRevertUnstaged
+---
+
+`revert-unstaged.py` reverts working directory changes back to what's in the
staging area (INDEX), preserving any staged changes.
+
+## What It Does
+
+The script:
+1. Verifies the file exists
+2. Runs `git restore --source=INDEX <file>` to revert unstaged changes
+3. Preserves any staged changes
+
+## Usage
+
+```bash
+python3 scripts/revert-unstaged.py <file_path>
+```
+
+### Example
+
+```bash
+python3 scripts/revert-unstaged.py
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+```
+
+## Use Case
+
+This is useful when you have:
+- Staged changes that you've tested and want to keep
+- Unstaged changes that you want to discard
+
+The script will revert the working directory to match the staged version,
effectively discarding only the unstaged changes.
+
+## Exit Codes
+
+- `0` - Success
+- `1` - Error (file not found, git command failed, etc.)
+
+## Requirements
+
+- Python 3.6 or higher
+- Git (git command must be in PATH)
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- This only affects unstaged changes - staged changes are preserved
+- Use `revert-staged.py` if you want to revert both staged and unstaged changes
+- The file must exist (the script verifies this)
+
diff --git a/docs/docs/topics/23.18.00.ScriptStartExamplesRestJetty.md
b/docs/docs/topics/23.18.00.ScriptStartExamplesRestJetty.md
new file mode 100644
index 0000000000..139d292a35
--- /dev/null
+++ b/docs/docs/topics/23.18.00.ScriptStartExamplesRestJetty.md
@@ -0,0 +1,43 @@
+---
+title: "start-examples-rest-jetty.py"
+slug: ScriptStartExamplesRestJetty
+---
+
+`start-examples-rest-jetty.py` starts the Juneau REST examples application
using the embedded Jetty server. This provides a live demonstration of Juneau's
REST capabilities.
+
+## What It Does
+
+The script performs these operations:
+
+1. **Locates Project** - Finds the Juneau project root directory
+2. **Checks Build** - Verifies that classes are compiled
+3. **Auto-Builds** - Runs `mvn clean compile` if classes are missing
+4. **Starts Server** - Launches the Jetty-based REST examples application
+5. **Handles Shutdown** - Gracefully stops the server on Ctrl+C
+
+## Usage
+
+### Start the Server
+
+```bash
+cd /Users/james.bognar/git/juneau
+python3 scripts/start-examples-rest-jetty.py
+```
+
+The server will start at `http://localhost:10000/`
+
+Press `Ctrl+C` to stop the server.
+
+## Requirements
+
+- Python 3.6 or higher
+- Maven (mvn command must be in PATH)
+- Java 17+
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script automatically builds the project if needed
+- The server runs in the foreground
+- Swagger UI is typically available at `http://localhost:10000/swagger-ui`
+
diff --git a/docs/docs/topics/23.19.00.ScriptStartExamplesRestSpringboot.md
b/docs/docs/topics/23.19.00.ScriptStartExamplesRestSpringboot.md
new file mode 100644
index 0000000000..a6a23462ca
--- /dev/null
+++ b/docs/docs/topics/23.19.00.ScriptStartExamplesRestSpringboot.md
@@ -0,0 +1,43 @@
+---
+title: "start-examples-rest-springboot.py"
+slug: ScriptStartExamplesRestSpringboot
+---
+
+`start-examples-rest-springboot.py` starts the Juneau REST examples
application using Spring Boot. This demonstrates how Juneau integrates with the
Spring Boot framework.
+
+## What It Does
+
+The script performs these operations:
+
+1. **Locates Project** - Finds the Juneau project root directory
+2. **Checks Build** - Verifies that classes are compiled
+3. **Auto-Builds** - Runs `mvn clean compile` if classes are missing
+4. **Starts Server** - Launches the Spring Boot REST examples application
+5. **Handles Shutdown** - Gracefully stops the server on Ctrl+C
+
+## Usage
+
+### Start the Server
+
+```bash
+cd /Users/james.bognar/git/juneau
+python3 scripts/start-examples-rest-springboot.py
+```
+
+The server will start at `http://localhost:5000/`
+
+Press `Ctrl+C` to stop the server.
+
+## Requirements
+
+- Python 3.6 or higher
+- Maven (mvn command must be in PATH)
+- Java 17+
+- No external Python dependencies (uses only standard library)
+
+## Notes
+
+- The script automatically builds the project if needed
+- The server runs in the foreground
+- Swagger UI is typically available at `http://localhost:5000/swagger-ui`
+
diff --git a/docs/sidebars.ts b/docs/sidebars.ts
index 0d2c886a5d..43074b89b0 100644
--- a/docs/sidebars.ts
+++ b/docs/sidebars.ts
@@ -1836,6 +1836,113 @@ const sidebars: SidebarsConfig = {
},
],
},
+ {
+ type: 'category',
+ label: '23. Scripts',
+ collapsed: true,
+ items: [
+ {
+ type: 'doc',
+ id:
'topics/23.00.00.Scripts',
+ label: '23.0. Scripts
Overview',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.01.00.ScriptTest',
+ label: '23.1. test.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.02.00.ScriptPush',
+ label: '23.2. push.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.03.00.ScriptRelease',
+ label: '23.3.
release.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.04.00.ScriptReleaseDocsStage',
+ label: '23.4.
release-docs-stage.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.05.00.ScriptReleaseDocs',
+ label: '23.5.
release-docs.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.06.00.ScriptPromptPgpPassphrase',
+ label: '23.6.
prompt-pgp-passphrase.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.07.00.ScriptCurrentRelease',
+ label: '23.7.
current-release.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.08.00.ScriptMavenVersion',
+ label: '23.8.
maven-version.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.09.00.ScriptBuildDocs',
+ label: '23.9.
build-docs.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.10.00.ScriptCreateMvnSite',
+ label: '23.10.
create-mvn-site.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.11.00.ScriptStartDocusaurus',
+ label: '23.11.
start-docusaurus.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.12.00.ScriptCheckTopicLinks',
+ label: '23.12.
check-topic-links.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.13.00.ScriptApplyEclipsePrefs',
+ label: '23.13.
apply-eclipse-prefs.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.14.00.ScriptCleanupWhitespace',
+ label: '23.14.
cleanup-whitespace.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.15.00.ScriptCheckFluentSetterOverrides',
+ label: '23.15.
check-fluent-setter-overrides.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.16.00.ScriptRevertStaged',
+ label: '23.16.
revert-staged.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.17.00.ScriptRevertUnstaged',
+ label: '23.17.
revert-unstaged.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.18.00.ScriptStartExamplesRestJetty',
+ label: '23.18.
start-examples-rest-jetty.py',
+ },
+ {
+ type: 'doc',
+ id:
'topics/23.19.00.ScriptStartExamplesRestSpringboot',
+ label: '23.19.
start-examples-rest-springboot.py',
+ },
+ ],
+ },
],
},
// Release Notes section
diff --git a/pom.xml b/pom.xml
index a57faf783e..5ffc530a9d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -105,7 +105,7 @@
<exclude>**/*.md</exclude>
<exclude>**/*.svg</exclude>
<exclude>**/*.nojekyll</exclude>
-
<exclude>/juneau-docs/static/site/**</exclude>
+
<exclude>/docs/static/site/**</exclude>
<exclude>**/javadocs/**</exclude>
<!-- Eclipse metadata files -->
@@ -128,7 +128,7 @@
<!-- Generated in
juneau-microservice-template for some reason -->
<exclude>**/dependency-reduced-pom.xml</exclude>
- <!-- Generated by
juneau-docs.jar -->
+ <!-- Generated by docs -->
<exclude>**/docs.txt</exclude>
<exclude>**/toc.txt</exclude>
@@ -186,8 +186,8 @@
<nodeprecatedlist>false</nodeprecatedlist>
<doctitle>Apache Juneau
${project.version} API</doctitle>
-
<stylesheetfile>${maven.multiModuleProjectDirectory}/juneau-docs/src/javadoc/javadoc.css</stylesheetfile>
-
<overview>${maven.multiModuleProjectDirectory}/juneau-docs/src/javadoc/overview.html</overview>
+
<stylesheetfile>${maven.multiModuleProjectDirectory}/docs/src/javadoc/javadoc.css</stylesheetfile>
+
<overview>${maven.multiModuleProjectDirectory}/docs/src/javadoc/overview.html</overview>
<excludePackageNames>*proto*:*test*:*internal*</excludePackageNames>
<links>
<link>https://docs.oracle.com/en/java/javase/${maven.compiler.target}/docs/api/</link>
@@ -241,7 +241,7 @@
<version>3.4.0</version>
<configuration>
<excludes>
-
<exclude>juneau-docs/**</exclude>
+
<exclude>docs/**</exclude>
</excludes>
</configuration>
</plugin>