Update tools/publish.sh

This commit is contained in:
Taiki Endo
2022-03-02 12:17:34 +09:00
parent de870dd7b6
commit 01ea03f457

View File

@@ -31,30 +31,33 @@ git diff --exit-code
git diff --exit-code --staged git diff --exit-code --staged
# Make sure the same release has not been created in the past. # Make sure the same release has not been created in the past.
if gh release view "${tag}" >/dev/null; then if gh release view "${tag}" &>/dev/null; then
bail "tag '${tag}' has already been created and pushed" bail "tag '${tag}' has already been created and pushed"
fi fi
# Make sure the same release does not exist in CHANGELOG.md. tags=$(git --no-pager tag)
release_date=$(date --utc '+%Y-%m-%d') if [[ -n "${tags}" ]]; then
if grep -Eq "^## \\[${version//./\\.}\\] - ${release_date}$" CHANGELOG.md; then # Make sure the same release does not exist in CHANGELOG.md.
bail "release ${version} already exist in CHANGELOG.md" release_date=$(date --utc '+%Y-%m-%d')
fi if grep -Eq "^## \\[${version//./\\.}\\] - ${release_date}$" CHANGELOG.md; then
if grep -Eq "^\\[${version//./\\.}\\]: " CHANGELOG.md; then bail "release ${version} already exist in CHANGELOG.md"
bail "link to ${version} already exist in CHANGELOG.md" fi
fi if grep -Eq "^\\[${version//./\\.}\\]: " CHANGELOG.md; then
bail "link to ${version} already exist in CHANGELOG.md"
fi
# Update changelog. # Update changelog.
remote_url=$(grep -E '^\[Unreleased\]: https://' CHANGELOG.md | sed 's/^\[Unreleased\]: //' | sed 's/\.\.\.HEAD$//') remote_url=$(grep -E '^\[Unreleased\]: https://' CHANGELOG.md | sed 's/^\[Unreleased\]: //' | sed 's/\.\.\.HEAD$//')
before_tag=$(sed <<<"${remote_url}" 's/^.*\/compare\///') before_tag=$(sed <<<"${remote_url}" 's/^.*\/compare\///')
remote_url=$(sed <<<"${remote_url}" 's/\/compare\/v.*$//') remote_url=$(sed <<<"${remote_url}" 's/\/compare\/v.*$//')
sed -i "s/^## \\[Unreleased\\]/## [Unreleased]\\n\\n## [${version}] - ${release_date}/" CHANGELOG.md sed -i "s/^## \\[Unreleased\\]/## [Unreleased]\\n\\n## [${version}] - ${release_date}/" CHANGELOG.md
sed -i "s#^\[Unreleased\]: https://.*#[Unreleased]: ${remote_url}/compare/v${version}...HEAD\\n[${version}]: ${remote_url}/compare/${before_tag}...v${version}#" CHANGELOG.md sed -i "s#^\[Unreleased\]: https://.*#[Unreleased]: ${remote_url}/compare/v${version}...HEAD\\n[${version}]: ${remote_url}/compare/${before_tag}...v${version}#" CHANGELOG.md
if ! grep -Eq "^## \\[${version//./\\.}\\] - ${release_date}$" CHANGELOG.md; then if ! grep -Eq "^## \\[${version//./\\.}\\] - ${release_date}$" CHANGELOG.md; then
bail "failed to update CHANGELOG.md" bail "failed to update CHANGELOG.md"
fi fi
if ! grep -Eq "^\\[${version//./\\.}\\]: " CHANGELOG.md; then if ! grep -Eq "^\\[${version//./\\.}\\]: " CHANGELOG.md; then
bail "failed to update CHANGELOG.md" bail "failed to update CHANGELOG.md"
fi
fi fi
# Make sure that a valid release note for this version exists. # Make sure that a valid release note for this version exists.
@@ -63,9 +66,11 @@ echo "============== CHANGELOG =============="
parse-changelog CHANGELOG.md "${version}" parse-changelog CHANGELOG.md "${version}"
echo "=======================================" echo "======================================="
# Create a release commit. if [[ -n "${tags}" ]]; then
git add CHANGELOG.md # Create a release commit.
git commit -m "Release ${version}" git add CHANGELOG.md
git commit -m "Release ${version}"
fi
tools=( tools=(
cargo-hack cargo-hack