#!/usr/bin/env bash set -euo pipefail app="watchexec" mainbranch="main" 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 =' cli/Cargo.toml | head -n1 | cut -d'"' -f2) echo "(Version from cli/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.0\"/version=\"$newver.0\"/1" cli/watchexec.exe.manifest sed -E -i "s/watchexec(.exe)? $extver/watchexec\1 $newver/" cli/tests/snapshots/help__* sed -E -i "s/^version = \"$extver\"/version = \"$newver\"/1" cli/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 "cli: v$newver" git tag -sam "watchexec-cli $newver" "cli-v$newver" echo "Pushing to upstream" git push --follow-tags $upstream $mainbranch