From a87184214f38476b728f6c7017d3bbd611f738e0 Mon Sep 17 00:00:00 2001 From: reya Date: Tue, 23 Sep 2025 09:36:49 +0700 Subject: [PATCH] chore: add release script --- script/release | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 script/release diff --git a/script/release b/script/release new file mode 100755 index 0000000..ae1f3f0 --- /dev/null +++ b/script/release @@ -0,0 +1,79 @@ +#!/bin/bash + +# Script to release a new version of the application +# Usage: ./release + +set -e # Exit on any error + +if [ $# -ne 1 ]; then + echo "Usage: $0 " + echo "Example: $0 1.0.0" + exit 1 +fi + +NEW_VERSION="$1" +WORKSPACE_CARGO="Cargo.toml" +CRATE_CARGO="crates/coop/Cargo.toml" + +# Check if both Cargo.toml files exist +if [ ! -f "$WORKSPACE_CARGO" ]; then + echo "Error: $WORKSPACE_CARGO not found in current directory" + exit 1 +fi + +if [ ! -f "$CRATE_CARGO" ]; then + echo "Error: $CRATE_CARGO not found" + exit 1 +fi + +# Function to update version in a Cargo.toml file +update_version() { + local file="$1" + local backup="${file}.bak" + + # Backup the original file + cp "$file" "$backup" + + # Replace the version in Cargo.toml + if sed -i.bak -E "s/^version = \"[0-9]+\.[0-9]+\.[0-9]+\"/version = \"$NEW_VERSION\"/" "$file"; then + echo "✓ Updated version to $NEW_VERSION in $file" + # Remove backup created by sed + if [ -f "${file}.bak" ]; then + rm "${file}.bak" + fi + else + echo "Error: Failed to update version in $file" + # Restore original backup + mv "$backup" "$file" + exit 1 + fi + + # Remove the initial backup file + rm -f "$backup" +} + +# Update both Cargo.toml files +echo "Updating versions..." +update_version "$WORKSPACE_CARGO" +update_version "$CRATE_CARGO" + +# Create git tag +TAG_NAME="v$NEW_VERSION" +COMMIT_MSG="Release version $NEW_VERSION" + +if git tag -a "$TAG_NAME" -m "$COMMIT_MSG"; then + echo "✓ Created git tag: $TAG_NAME" +else + echo "Error: Failed to create git tag" + exit 1 +fi + +# Push to origin (both commits and tags) +echo "Pushing to origin..." +if git push origin main && git push origin "$TAG_NAME"; then + echo "✓ Successfully pushed to origin" + echo "✓ Release $NEW_VERSION completed successfully!" +else + echo "Error: Failed to push to origin" + exit 1 +fi