reconcile/scripts/bump-version.sh

72 lines
1.5 KiB
Shell
Executable file

#!/bin/bash
set -e
git pull --rebase
if [[ -z $1 ]]; then
echo "Usage: $0 {patch|minor|major}"
exit 1
fi
if [[ $1 =~ ^(patch|minor|major)$ ]]; then
echo "Creating a new '$1' version"
else
echo "Invalid argument: $1"
echo "Usage: $0 {patch|minor|major}"
exit 1
fi
if [[ -n $(git status --porcelain) ]]; then
echo "Your working directory is not clean. Please commit or stash your changes before proceeding."
exit 1
else
echo "Your working directory is clean."
fi
# GNU sed takes the suffix as part of -i, BSD sed requires a separate argument
sed_inplace() {
if sed --version >/dev/null 2>&1; then
sed -i "$@"
else
sed -i '' "$@"
fi
}
echo "Bumping versions"
which cargo-set-version || cargo install cargo-edit
cargo set-version --bump $1
NEWVER=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
sed_inplace "s/^reconcile-text = \".*\"/reconcile-text = \"$NEWVER\"/" README.md
which wasm-pack || cargo install wasm-pack
wasm-pack build --target web --features wasm
cd reconcile-js
npm version $1
npm install
cd ../reconcile-python
sed_inplace "s/^version = \".*\"/version = \"$NEWVER\"/" Cargo.toml
sed_inplace "s/^version = \".*\"/version = \"$NEWVER\"/" pyproject.toml
cargo update --workspace
uv lock
cd ../examples/website
npm install
cd ../..
git add .
TAG=$(node -p "require('./reconcile-js/package.json').version")
git commit -m "Bump versions to $TAG"
git push
echo "Tagging $TAG"
git tag -a $TAG -m "Release $TAG"
git push origin $TAG
echo "Done"