# Version Update Scripts This directory contains scripts to update the version across the Elytra PIM Client project before building a wheel distribution. ## Quick Start Update version and build: ```bash # Python (cross-platform) python update_version.py 1.0.0 python build_wheel.py # PowerShell (Windows) .\update_version.ps1 1.0.0 .\build_wheel.ps1 # Bash (Linux/macOS) ./update_version.sh 1.0.0 ./build_wheel.sh ``` ## Files Updated The version update scripts modify the following files: - `pyproject.toml` - Project configuration (line 7) - `elytra_client/__init__.py` - Package version (line 3) ## Available Scripts ### Python Version ```bash python update_version.py 0.2.0 ``` **Usage:** ```bash python update_version.py ``` **Example:** ```bash python update_version.py 1.0.0 ``` ### PowerShell Version ```powershell .\update_version.ps1 -Version 0.2.0 ``` **Usage:** ```powershell .\update_version.ps1 -Version # or .\update_version.ps1 ``` **Examples:** ```powershell .\update_version.ps1 0.2.0 .\update_version.ps1 -Version 1.0.0 ``` ### Bash Version ```bash ./update_version.sh 0.2.0 ``` **Usage:** ```bash ./update_version.sh ``` **Example:** ```bash ./update_version.sh 1.0.0 ``` ## Version Format The version must follow semantic versioning format: `major.minor.patch` Valid examples: - `0.1.0` - `1.0.0` - `0.2.1` - `1.0.0-beta` (with pre-release identifier) Invalid examples: - `1.0` (missing patch version) - `v1.0.0` (invalid prefix) ## Workflow ### Before Building a Wheel 1. **Update the version:** ```bash # On Windows .\update_version.ps1 0.2.0 # On Linux/macOS ./update_version.sh 0.2.0 ``` 2. **Build the wheel:** ```bash # Using Python python build_wheel.py # Or PowerShell .\build_wheel.ps1 # Or Bash ./build_wheel.sh ``` 3. **Upload (optional):** ```bash .\upload_wheel_to_forgejo_pypi.ps1 ``` ### Verification After running the update script, verify the changes: **Check pyproject.toml:** ```bash grep "version = " pyproject.toml ``` **Check __init__.py:** ```bash grep "__version__ = " elytra_client/__init__.py ``` ## Error Messages ### Invalid Version Format ``` ✗ Invalid version format: 1.0 Version must follow semantic versioning (major.minor.patch) Examples: 1.0.0, 0.2.0, 1.0.0-beta ``` **Solution:** Use the format `major.minor.patch` (e.g., `1.0.0`) ### File Not Found ``` ✗ /path/to/file not found ``` **Solution:** Ensure you're running the script from the project root directory ## Return Codes - `0` - Success (version updated) - `1` - Error (see error message) ## Notes - Run from the project root directory - The scripts will show which files were updated - All scripts support semantic versioning with optional pre-release identifiers - Use consistent versions across all files to avoid build issues