-
Notifications
You must be signed in to change notification settings - Fork 3
/
version
executable file
·59 lines (43 loc) · 1.55 KB
/
version
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env bash
set -euo pipefail
app="clearscreen"
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 =' 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..."
git switch -C release
sed -E -i "s/^## Next.*$/## Next (YYYY-MM-DD)\n\n## v$newver ($date)/1" CHANGELOG.md
sed -E -i "s/^clearscreen = \"$extver\"/clearscreen = \"$newver\"/1" README.md
sed -E -i "s/^version = \"$extver\"/version = \"$newver\"/1" 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"
echo "Pushing to upstream, make a PR then release with GH"
git push -u $upstream release
echo "Deleting local release branch"
git switch main
git branch -D release