#!/bin/bash set -e if [ -z "$1" ]; then echo "Usage: ./release " echo "Example: ./release v1.0.0" exit 1 fi VERSION=$1 CLEAN_VERSION=${VERSION#v} CURRENT_DATE=$(date +%Y-%m-%d) echo "Preparing release $VERSION..." echo "Updating package.json to version $CLEAN_VERSION..." sed -i "s/\"version\": \".*\"/\"version\": \"$CLEAN_VERSION\"/" package.json echo "Updating CITATION.cff..." sed -i "s/^version: .*/version: $CLEAN_VERSION/" CITATION.cff sed -i "s/^date-released: .*/date-released: \"$CURRENT_DATE\"/" CITATION.cff git add . if ! git diff-index --quiet HEAD --; then echo "Committing changes..." git commit -m "chore(release): $VERSION" else echo "No changes to commit. Proceeding to tag..." fi if git rev-parse "$VERSION" >/dev/null 2>&1; then echo "Tag $VERSION already exists. Aborting." exit 1 fi echo "Creating tag $VERSION..." git tag -a "$VERSION" -m "Release $VERSION" echo "Pushing changes and tags to remote..." git push git push origin "$VERSION" echo "Successfully released $VERSION!"