Setup cargo-release
This commit is contained in:
parent
e5bb99a60b
commit
797a7fc708
|
@ -1,55 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
bin/manpage
|
||||||
app="watchexec"
|
bin/pre-release-pull
|
||||||
mainbranch="main"
|
cargo release -v -p watchexec-cli $*
|
||||||
upstream_rx="watchexec/"
|
echo "REMEMBER to do a 'cargo publish' once CI is done!"
|
||||||
|
|
||||||
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
|
|
||||||
|
|
|
@ -1,54 +1,5 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
bin/pre-release-pull
|
||||||
app="watchexec"
|
cargo release -v -p 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 =' lib/Cargo.toml | head -n1 | cut -d'"' -f2)
|
|
||||||
echo "(Version from lib/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\"/1" lib/Cargo.toml
|
|
||||||
sed -E -i "s/^version: \"?$extver\"?/version: \"$newver\"/1" lib/CITATION.cff
|
|
||||||
sed -E -i "s/^date-released: .+$/date-released: $date/1" lib/CITATION.cff
|
|
||||||
sed -E -i "s/^watchexec = \{ version = \"$extver\"/watchexec = { version = \"$newver\"/1" cli/Cargo.toml
|
|
||||||
|
|
||||||
cargo check
|
|
||||||
|
|
||||||
git commit -am "lib: v$newver"
|
|
||||||
git tag -sam "watchexec $newver" "lib-v$newver"
|
|
||||||
|
|
||||||
echo "Pushing to upstream"
|
|
||||||
git push --follow-tags $upstream $mainbranch
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
[[ ! -z "$WORKSPACE_ROOT" ]] && cd "$WORKSPACE_ROOT"
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
mainbranch="main"
|
||||||
|
upstream_rx="watchexec/"
|
||||||
|
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"
|
|
@ -0,0 +1,46 @@
|
||||||
|
pre-release-hook = ["../bin/pre-release-pull"]
|
||||||
|
pre-release-commit-message = "cli: v{{version}}"
|
||||||
|
tag-prefix = "cli-"
|
||||||
|
tag-message = "watchexec {{version}}"
|
||||||
|
|
||||||
|
# We wait until the release CI is done before publishing,
|
||||||
|
# because publishing is irreversible, but a release can be
|
||||||
|
# reverted a lot more easily.
|
||||||
|
publish = false
|
||||||
|
|
||||||
|
[[pre-release-replacements]]
|
||||||
|
file = "../CITATION.cff"
|
||||||
|
search = "^version: \"?[\\d.]+(-.+)?\"?"
|
||||||
|
replace = "version: \"{{version}}\""
|
||||||
|
prerelease = true
|
||||||
|
max = 1
|
||||||
|
|
||||||
|
[[pre-release-replacements]]
|
||||||
|
file = "../CITATION.cff"
|
||||||
|
search = "^date-released: .+(-.+)?"
|
||||||
|
replace = "date-released: {{date}}"
|
||||||
|
prerelease = true
|
||||||
|
max = 1
|
||||||
|
|
||||||
|
[[pre-release-replacements]]
|
||||||
|
file = "watchexec.exe.manifest"
|
||||||
|
search = "^ version=\"[\\d.]+[.]0\""
|
||||||
|
replace = " version=\"{{version}}.0\""
|
||||||
|
prerelease = false
|
||||||
|
max = 1
|
||||||
|
|
||||||
|
[[pre-release-replacements]]
|
||||||
|
file = "tests/snapshots/help__help_windows.snap"
|
||||||
|
search = "watchexec.exe [\\d.]+(-.+)?"
|
||||||
|
replace = "watchexec.exe {{version}}"
|
||||||
|
prerelease = true
|
||||||
|
min = 0
|
||||||
|
max = 1
|
||||||
|
|
||||||
|
[[pre-release-replacements]]
|
||||||
|
file = "tests/snapshots/help__help_unix.snap"
|
||||||
|
search = "watchexec [\\d.]+(-.+)?"
|
||||||
|
replace = "watchexec {{version}}"
|
||||||
|
prerelease = true
|
||||||
|
min = 0
|
||||||
|
max = 1
|
|
@ -0,0 +1,25 @@
|
||||||
|
pre-release-hook = ["../bin/pre-release-pull"]
|
||||||
|
pre-release-commit-message = "lib: v{{version}}"
|
||||||
|
tag-prefix = "lib-"
|
||||||
|
tag-message = "watchexec-lib {{version}}"
|
||||||
|
|
||||||
|
[[pre-release-replacements]]
|
||||||
|
file = "CITATION.cff"
|
||||||
|
search = "^version: \"?[\\d.]+(-.+)?\"?"
|
||||||
|
replace = "version: \"{{version}}\""
|
||||||
|
prerelease = true
|
||||||
|
max = 1
|
||||||
|
|
||||||
|
[[pre-release-replacements]]
|
||||||
|
file = "CITATION.cff"
|
||||||
|
search = "^date-released: .+"
|
||||||
|
replace = "date-released: {{date}}"
|
||||||
|
prerelease = true
|
||||||
|
max = 1
|
||||||
|
|
||||||
|
[[pre-release-replacements]]
|
||||||
|
file = "../cli/Cargo.toml"
|
||||||
|
search = "^watchexec = \\{ version = \"[\\d.]+(-.+)?\", path = \"../lib\" \\}"
|
||||||
|
replace = "watchexec = { version = \"{{version}}\", path = \"../lib\" }"
|
||||||
|
prerelease = true
|
||||||
|
min = 0
|
|
@ -0,0 +1,4 @@
|
||||||
|
allow-branch = ["main"]
|
||||||
|
consolidate-pushes = true
|
||||||
|
push-options = ["--follow-tags"]
|
||||||
|
push-remote = "git@github.com:watchexec/watchexec.git"
|
Loading…
Reference in New Issue