diff --git a/scripts/release/check-if-released b/scripts/release/check-if-released index 86d1256..59278d5 100755 --- a/scripts/release/check-if-released +++ b/scripts/release/check-if-released @@ -51,8 +51,8 @@ echo "Subject: $COMMIT_SUBJECT" echo "Date: $COMMIT_DATE" echo "" -# Check if commit is in any version tag (v*.*.*) -TAGS=$(git tag --contains "$COMMIT" | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+' || true) +# Check if commit is in any version tag (vX.Y.Z or vX.Y.ZbN) +TAGS=$(git tag --contains "$COMMIT" | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+(b[0-9]+)?$' || true) if [[ -z $TAGS ]]; then printf '%b✓ NOT RELEASED%b\n' "$GREEN" "$NC" diff --git a/scripts/release/prepare b/scripts/release/prepare index 28a5b24..03472a5 100755 --- a/scripts/release/prepare +++ b/scripts/release/prepare @@ -9,9 +9,10 @@ # ./scripts/release/prepare [VERSION|--suggest] # # Examples: -# ./scripts/release/prepare --suggest # Show version suggestion -# ./scripts/release/prepare 0.3.0 # Bump to version 0.3.0 -# ./scripts/release/prepare 1.0.0 # Bump to version 1.0.0 +# ./scripts/release/prepare --suggest # Show version suggestion +# ./scripts/release/prepare 0.3.0 # Bump to version 0.3.0 +# ./scripts/release/prepare 1.0.0 # Bump to version 1.0.0 +# ./scripts/release/prepare 0.25.0b0 # Bump to beta version 0.25.0b0 set -euo pipefail @@ -42,15 +43,15 @@ fi # Parse version argument VERSION="${1:-}" if [[ -z $VERSION ]]; then - die "No version specified.\n\nUsage: $0 VERSION\n\nExamples:\n $0 0.3.0 # Bump to version 0.3.0\n $0 1.0.0 # Bump to version 1.0.0" + die "No version specified.\n\nUsage: $0 VERSION\n\nExamples:\n $0 0.3.0 # Bump to version 0.3.0\n $0 1.0.0 # Bump to version 1.0.0\n $0 0.25.0b0 # Bump to beta version 0.25.0b0" fi # Strip 'v' prefix if present VERSION="${VERSION#v}" -# Validate version format (X.Y.Z) -if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then - die "Invalid version format: $VERSION\nExpected format: X.Y.Z (e.g., 0.3.0, 1.0.0)" +# Validate version format (X.Y.Z or X.Y.ZbN for prerelease/beta) +if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+(b[0-9]+)?$'; then + die "Invalid version format: $VERSION\nExpected format: X.Y.Z or X.Y.ZbN (e.g., 0.3.0, 1.0.0, 0.25.0b0)" fi TAG="v$VERSION" diff --git a/scripts/release/suggest-version b/scripts/release/suggest-version index f7d7f74..d0774c2 100755 --- a/scripts/release/suggest-version +++ b/scripts/release/suggest-version @@ -55,12 +55,20 @@ log_header "Analyzing commits since $FROM_TAG" echo "" # Parse current version (from the tag we're analyzing from) -CURRENT_VERSION="${FROM_TAG#v}" -MAJOR=$(echo "$CURRENT_VERSION" | cut -d. -f1) -MINOR=$(echo "$CURRENT_VERSION" | cut -d. -f2) -PATCH=$(echo "$CURRENT_VERSION" | cut -d. -f3) +parse_version() { + local version="$1" -printf "Current released version: %bv%s.%s.%s%b\n" "$BOLD" "$MAJOR" "$MINOR" "$PATCH" "$NC" + if [[ $version =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(b[0-9]+)?$ ]]; then + echo "${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]} ${BASH_REMATCH[4]}" + else + die "Unsupported version format: $version\nExpected formats: X.Y.Z or X.Y.ZbN (e.g., 0.3.0, 1.0.0, 0.25.0b0)" + fi +} + +CURRENT_VERSION="${FROM_TAG#v}" +read -r MAJOR MINOR PATCH PRERELEASE <<< "$(parse_version "$CURRENT_VERSION")" + +printf "Current released version: %bv%s.%s.%s%s%b\n" "$BOLD" "$MAJOR" "$MINOR" "$PATCH" "$PRERELEASE" "$NC" if [[ $MANIFEST_VERSION != "$CURRENT_VERSION" ]]; then log_warning "Manifest.json version: $MANIFEST_VERSION (not yet tagged)" fi