| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #!/bin/bash
- set -eu -o pipefail
- changelog=$(cat CHANGELOG.md)
- regex='
- ([0-9]+\.[0-9]+\.[0-9]+) \(([0-9]{4}-[0-9]{2}-[0-9]{2})\)
- -*
- ((.|
- )*)
- '
- if [[ ! $changelog =~ $regex ]]; then
- echo "Could not find date line in change log!"
- exit 1
- fi
- version="${BASH_REMATCH[1]}"
- date="${BASH_REMATCH[2]}"
- notes="$(echo "${BASH_REMATCH[3]}" | sed -n -E '/^[0-9]+\.[0-9]+\.[0-9]+/,$!p')"
- if [[ "$date" != $(date +"%Y-%m-%d") ]]; then
- echo "$date is not today!"
- exit 1
- fi
- tag="v$version"
- if [ -n "$(git status --porcelain)" ]; then
- echo ". is not clean." >&2
- exit 1
- fi
- php composer.phar self-update
- php composer.phar update
- ./vendor/bin/phpunit
- echo "Release notes for $tag:"
- echo "$notes"
- read -e -p "Commit changes and push to origin? " should_push
- if [ "$should_push" != "y" ]; then
- echo "Aborting"
- exit 1
- fi
- git push
- gh release create --target "$(git branch --show-current)" -t "$version" -n "$notes" "$tag"
- git push --tags
|