#!/usr/bin/env bash set -euo pipefail app="cargo-watch" mainbranch="8.x" upstream_rx="watchexec/" curbranch=$(git rev-parse --abbrev-ref HEAD) if [[ "$curbranch" != "$mainbranch" ]]; then echo "Current branch is not $mainbranch, abort!" exit 1 fi gitstatus=$(git status --untracked-files=no --porcelain) if [[ ! -z "$gitstatus" ]]; then echo "Uncommited files and changes, abort!" exit 2 fi upstream=$(git remote -v | grep -i "$upstream_rx" -m1 | awk '{print $1}') echo "Upstream remote discovered as: $upstream" echo "Pulling from upstream" git pull --rebase --autostash $upstream $mainbranch echo "Fetching tags from upstream" git fetch --tags "$upstream" extver=$(grep -P '^version =' Cargo.toml | head -n1 | cut -d'"' -f2) echo "(Version from Cargo.toml: $extver)" newver="$1" if [[ "$newver" == "$extver" ]]; then echo "New and existing versions are the same, abort!" exit 3 fi date=$(date +%Y-%m-%d) echo "Next version to be $newver ($date), creating..." sed -E -i "s/^version = \"$extver\"/version = \"$newver\"/" Cargo.toml sed -E -i "s/^version: \"?$extver\"?/version: \"$newver\"/1" CITATION.cff sed -E -i "s/^date-released: .+$/date-released: $date/1" CITATION.cff cargo check git commit -am "$newver" git tag -sam "$newver" "v$newver" echo "Pushing to upstream" git push --follow-tags $upstream $mainbranch