Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No leading zero on versions #44

Merged
merged 2 commits into from
Dec 21, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions versioning/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,25 @@
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`.
## Version Validation

The versioning system enforces strict format validation:
- Year must be a 4-digit number (YYYY)
- 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.
- Other format-related issues are detected.
edwardtfn marked this conversation as resolved.
Show resolved Hide resolved

## Usage

Expand Down Expand Up @@ -59,7 +61,7 @@

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

Check failure on line 64 in versioning/README.md

View workflow job for this annotation

GitHub Actions / Markdown Lint

Multiple headings with the same content

versioning/README.md:64 MD024/no-duplicate-heading Multiple headings with the same content [Context: "## Version Validation"] https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md024.md

Check failure on line 64 in versioning/README.md

View workflow job for this annotation

GitHub Actions / Markdown Lint

Multiple headings with the same content

versioning/README.md:64 MD024/no-duplicate-heading Multiple headings with the same content [Context: "## Version Validation"] https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md024.md

### 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.
Expand Down
17 changes: 6 additions & 11 deletions versioning/bump_version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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")
edwardtfn marked this conversation as resolved.
Show resolved Hide resolved
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
Expand All @@ -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"
Expand Down
Loading