Setup cargo-release
This commit is contained in:
parent
e5bb99a60b
commit
797a7fc708
|
@ -1,55 +1,7 @@
|
|||
#!/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
|
||||
bin/manpage
|
||||
bin/pre-release-pull
|
||||
cargo release -v -p watchexec-cli $*
|
||||
echo "REMEMBER to do a 'cargo publish' once CI is done!"
|
||||
|
|
|
@ -1,54 +1,5 @@
|
|||
#!/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 =' 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
|
||||
bin/pre-release-pull
|
||||
cargo release -v -p watchexec $*
|
||||
|
|
|
@ -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