nix-direnv/scripts/create-release.sh
2025-05-09 17:21:53 +02:00

66 lines
2 KiB
Bash
Executable file

#!/usr/bin/env bash
set -eu -o pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
cd "$SCRIPT_DIR/.."
version=${1:-}
if [[ -z $version ]]; then
echo "USAGE: $0 version" 2>/dev/null
exit 1
fi
if [[ "$(git symbolic-ref --short HEAD)" != "master" ]]; then
echo "must be on master branch" 2>/dev/null
exit 1
fi
waitForPr() {
local pr=$1
while true; do
if gh pr view "$pr" | grep -q 'MERGED'; then
break
fi
echo "Waiting for PR to be merged..."
sleep 5
done
}
sed -Ei "s!(version = ).*!\1\"$version\";!" default.nix
sed -Ei "s!(NIX_DIRENV_VERSION=).*!\1$version!" direnvrc
sed -i README.md templates/flake/.envrc \
-e 's!\(nix-direnv/\).*\(/direnvrc\)!\1'"${version}"'\2!' \
-e 's?\( ! nix_direnv_version \)[0-9.]\+\(; \)?\1'"${version}"'\2?'
git add README.md direnvrc templates/flake/.envrc default.nix
git commit -m "bump version ${version}"
git tag "${version}"
git branch -D "release-${version}" || true
git checkout -b "release-${version}"
git push origin --force "release-${version}"
gh pr create \
--base master \
--head "release-${version}" \
--title "Release ${version}" \
--body "Release ${version} of nix-direnv"
gh pr merge --auto "release-${version}"
waitForPr "release-${version}"
git push origin "$version"
sha256=$(direnv fetchurl "https://raw.githubusercontent.com/nix-community/nix-direnv/${version}/direnvrc" | grep -m1 -o 'sha256-.*')
sed -i README.md templates/flake/.envrc -e "s!sha256-.*!${sha256}\"!"
git add README.md templates/flake/.envrc
git commit -m "update fetchurl checksum"
git push origin --force "release-${version}"
gh pr create \
--base master \
--head "release-${version}" \
--title "Update checksums for release ${version} of nix-direnv" \
--body "Update checksums for release ${version} of nix-direnv"
gh pr merge --auto "release-${version}"
waitForPr "release-${version}"
echo "You can now create a release at https://github.com/nix-community/nix-direnv/releases for version ${version}"