diff --git a/scripts/roll_release.sh b/scripts/roll_release.sh index 0578cff896..31f1d99bf5 100755 --- a/scripts/roll_release.sh +++ b/scripts/roll_release.sh @@ -16,15 +16,19 @@ set -o errexit REPO="eth-cscs/DLA-Future" -VERSION_MAJOR=$(sed -n 's/project(DLAF VERSION \([0-9]\+\)\.[0-9]\+\.[0-9]\+)/\1/p' CMakeLists.txt) -VERSION_MINOR=$(sed -n 's/project(DLAF VERSION [0-9]\+\.\([0-9]\+\)\.[0-9]\+)/\1/p' CMakeLists.txt) -VERSION_PATCH=$(sed -n 's/project(DLAF VERSION [0-9]\+\.[0-9]\+\.\([0-9]\+\))/\1/p' CMakeLists.txt) +VERSION_MAJOR=$(sed -n 's/project(DLAF VERSION \([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\))/\1/p' CMakeLists.txt) +VERSION_MINOR=$(sed -n 's/project(DLAF VERSION \([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\))/\2/p' CMakeLists.txt) +VERSION_PATCH=$(sed -n 's/project(DLAF VERSION \([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\))/\3/p' CMakeLists.txt) VERSION_FULL="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" VERSION_FULL_TAG="v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" VERSION_TITLE="DLA-Future ${VERSION_FULL}" CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)" RELEASE_DATE=$(date '+%Y-%m-%d') +GREP_VERSION_FULL="$(echo ${VERSION_FULL} | sed s/\\./\\\\./g)" +GREP_VERSION_FULL_TAG="$(echo ${VERSION_FULL_TAG} | sed s/\\./\\\\./g)" +GREP_VERSION_TITLE="$(echo ${VERSION_TITLE} | sed s/\\./\\\\./g)" + if ! which gh >/dev/null 2>&1; then echo "GitHub CLI not installed on this system (see https://cli.github.com). Exiting." exit 1 @@ -50,6 +54,7 @@ fi changelog_path="CHANGELOG.md" readme_path="README.md" +documentation_path="DOCUMENTATION.md" cff_path="CITATION.cff" echo "You are about to tag and create a final release on GitHub." @@ -68,7 +73,15 @@ else fi printf "Checking that %s has an entry for %s... " "${changelog_path}" "${VERSION_FULL}" -if grep "## DLA-Future ${VERSION_FULL}" "${changelog_path}"; then +if grep "## DLA-Future ${GREP_VERSION_FULL}" "${changelog_path}"; then + echo "OK" +else + echo "Missing" + sanity_errors=$((sanity_errors + 1)) +fi + +printf "Checking that %s has a documentation entry for %s... " "${readme_path}" "master" +if grep "^- \[Documentation of \`master\` branch\](https://eth-cscs.github.io/DLA-Future/master/)" "${readme_path}"; then echo "OK" else echo "Missing" @@ -76,7 +89,23 @@ else fi printf "Checking that %s has a documentation entry for %s... " "${readme_path}" "${VERSION_FULL}" -if grep "^- \[Documentation of \`${VERSION_FULL_TAG}\`\](https://eth-cscs.github.io/DLA-Future/${VERSION_FULL_TAG}" "${readme_path}"; then +if grep "^- \[Documentation of \`${GREP_VERSION_FULL_TAG}\`\](https://eth-cscs.github.io/DLA-Future/${GREP_VERSION_FULL_TAG}/)" "${readme_path}"; then + echo "OK" +else + echo "Missing" + sanity_errors=$((sanity_errors + 1)) +fi + +printf "Checking that %s has no extra documentation entries... " "${readme_path}" +if [[ $(grep "^- \[Documentation of .*\](.*)" "${readme_path}" | wc -l) -eq 2 ]] ; then + echo "OK" +else + echo "Failed" + sanity_errors=$((sanity_errors + 1)) +fi + +printf "Checking that %s has a documentation entry for %s... " "${documentation_path}" "${VERSION_FULL}" +if grep "^- \[Documentation of \`${GREP_VERSION_FULL_TAG}\`\](https://eth-cscs.github.io/DLA-Future/${GREP_VERSION_FULL_TAG}" "${documentation_path}"; then echo "OK" else echo "Missing" @@ -84,7 +113,7 @@ else fi printf "Checking that %s has correct version for %s... " "${cff_path}" "${VERSION_FULL}" -if grep "^version: ${VERSION_FULL}" "${cff_path}"; then +if grep "^version: ${GREP_VERSION_FULL}" "${cff_path}"; then echo "OK" else echo "Missing" @@ -92,7 +121,7 @@ else fi printf "Checking that %s has correct title for %s... " "${cff_path}" "${VERSION_FULL}" -if grep "^title: ${VERSION_TITLE}" "${cff_path}"; then +if grep "^title: ${GREP_VERSION_TITLE}" "${cff_path}"; then echo "OK" else echo "Missing" @@ -149,7 +178,7 @@ else fi remote=$(git remote -v | grep "github.com[:/]eth-cscs/DLA-Future.git" | cut -f1 | uniq) -if [[ "$(git ls-remote --tags --refs $remote | grep -o ${VERSION_FULL_TAG})" == "${VERSION_FULL_TAG}" ]]; then +if [[ "$(git ls-remote --tags --refs $remote | grep -o ${GREP_VERSION_FULL_TAG})" == "${VERSION_FULL_TAG}" ]]; then echo "Tag already exists remotely." else echo "Pushing tag to $remote."