diff --git a/versioning/README.md b/versioning/README.md index fd527fb..49ea543 100644 --- a/versioning/README.md +++ b/versioning/README.md @@ -5,24 +5,15 @@ This project uses a time-based versioning scheme: `year.month.sequential_number` This scheme makes it easy to identify when a version was released and provides a clear order for releases within a given month. ### Examples -- `2024.12.01` – First release of December 2024. -- `2024.12.02` – Second release of December 2024. -- `2025.01.01` – First release of January 2025. +- `2024.1.1` – First release of January 2024. +- `2024.12.2` – Second release of December 2024. +- `2025.3.1` – First release of March 2025. ## Files - **`VERSION`**: Contains the current version of the project as plain text. - **`bump_version.sh`**: A script to increment the version based on the current date and release sequence. - **`README.md`**: Documentation for the versioning process. -## Versioning Rules -1. The version format is `YYYY.MM.NN`, where: - - `YYYY` is the current year. - - `MM` is the current month (two digits). - - `NN` is the sequential release number within the month (starting at `01`). -2. On each new merge to the `main` branch: - - If the month hasn’t changed, the sequential number (`NN`) is incremented. - - If the month has changed, the sequential number resets to `01`. - ## Usage ### Automatically Managed @@ -54,12 +45,12 @@ This ensures the correct version is used directly in the ESPHome setup without r The versioning system enforces strict format validation: - Year must be a 4-digit number (YYYY) -- Month must be a 2-digit number (01-12) -- Sequence must be a 2-digit number (01-99) +- Month must be a number from 1 to 12 without leading zeros +- Sequence must be a positive number with no leading zeros (1, 2, ...). The `bump_version.sh` script includes validation checks and will fail if: -- The version format is invalid -- The sequence number would exceed 99 in a month +- The version format is invalid. +- Other format-related issues are detected. ### GitHub Actions Workflow Adjustment The GitHub Actions workflow for versioning runs only when changes are merged into the `main` branch, ensuring no premature version updates during PR creation. diff --git a/versioning/bump_version.sh b/versioning/bump_version.sh index 6cd72c6..3b85e58 100644 --- a/versioning/bump_version.sh +++ b/versioning/bump_version.sh @@ -5,15 +5,15 @@ VERSION_YAML_FILE="./versioning/VERSION_YAML" # Read the current version if [ -f "$VERSION_FILE" ]; then - CURRENT_VERSION=$(cat $VERSION_FILE) + CURRENT_VERSION=$(cat "$VERSION_FILE") else CURRENT_VERSION="0.0.0" # Default if file doesn't exist fi # Extract components CURRENT_YEAR=$(date +%Y) -CURRENT_MONTH=$(date +%m) -if ! [[ "$CURRENT_VERSION" =~ ^[0-9]{4}\.[0-9]{2}\.[0-9]{2}$ ]]; then +CURRENT_MONTH=$(date +%-m) # Use %-m to avoid leading zero for the month +if ! [[ "$CURRENT_VERSION" =~ ^[0-9]{4}\.[0-9]+\.[0-9]+$ ]]; then echo "Error: Invalid version format in $VERSION_FILE" exit 1 fi @@ -24,17 +24,12 @@ VERSION_MONTH=$(echo "$CURRENT_VERSION" | awk -F. '{print $2}') # Determine new version if [[ "$CURRENT_YEAR" == "$VERSION_YEAR" && "$CURRENT_MONTH" == "$VERSION_MONTH" ]]; then - NEXT_SEQ=$((10#$CURRENT_SEQ + 1)) - if [ $NEXT_SEQ -gt 99 ]; then - echo "Error: Sequence number would exceed 99" - exit 1 - fi - NEW_SEQ=$(printf "%02d" $NEXT_SEQ) + NEXT_SEQ=$((CURRENT_SEQ + 1)) else - NEW_SEQ="01" # Reset sequence for a new month + NEXT_SEQ=1 # Reset sequence for a new month fi -NEW_VERSION="${CURRENT_YEAR}.${CURRENT_MONTH}.${NEW_SEQ}" +NEW_VERSION="${CURRENT_YEAR}.${CURRENT_MONTH}.${NEXT_SEQ}" # Update the plain text VERSION file echo "$NEW_VERSION" > "$VERSION_FILE"