diff options
Diffstat (limited to 'release.sh')
-rwxr-xr-x | release.sh | 61 |
1 files changed, 34 insertions, 27 deletions
@@ -1,39 +1,50 @@ #!/bin/bash usage() { - echo "release.sh: VERSION" + echo "Usage: release.sh [-d] VERSION" echo "" echo "The script does all necessary steps to create a new release." echo "" + echo " -d: no documentation update" + echo "" echo "Note: The version number needs to be exactly" - echo " '^v[\d]+.[\d]+(-rc[0-9]+)?$'" + echo " '^v[\d]+.[\d]+(.[\d\]+(-rc[0-9]+)?$'" echo "" echo "example:" - echo " release.sh v2.1-rc0 # v2.1 release candidate 0 -> sets the project " - echo " # version to '1.1' and sets the tag" - echo " release.sh v2.1-rc1 # v2.1 release canditate 1 -> only sets the tag" - echo " release.sh v2.1 # v2.1 release -> sets the final tag" + echo " release.sh v2.1-rc0 # v2.1 release candidate 0" + echo " release.sh v2.1 # v2.1 release" } -VERSION=$1 +build_doc=true + +while getopts "d" o; do + case "${o}" in + d) + build_doc=false + ;; + *) + usage + ;; + esac +done +shift $((OPTIND-1)) + +VERSION=${1:-} if [ -z "$VERSION" ] ; then usage exit 1 fi -new_ver="" -rc="" +ver="" -re='^v([0-9]+\.[0-9]+)(-rc[0-9]+)?$' +re='^v([0-9]+\.[0-9]+(\.[0-9]+)?)(-rc[0-9]+)?$' if [[ "$VERSION" =~ $re ]]; then echo "Valid version $VERSION string" - new_ver=${BASH_REMATCH[1]} - rc=${BASH_REMATCH[2]} + # remove the leading 'v' + ver=${VERSION#v} else echo "Invalid version string $VERSION" - echo "" - usage exit 1 fi @@ -58,22 +69,18 @@ else exit 1 fi -./$doc_dir/update-docs.sh -git add $doc_dir -git commit -s -m "Regenerate all documentation" \ - -m "Regenerate documentation for $VERSION release" - # update meson.build -old_ver=$(sed -n "0,/[ \t]\+version: /s/[ \t]\+version: '\([0-9]\+.[0-9]\+\)',$/\1/p" meson.build) -if [ "$old_ver" != "$new_ver" ]; then - # Only update project version once, that is either - # - for the first RC phase or - # - for the release when there was no RC - sed -i -e "0,/[ \t]version: /s/\([ \t]version: \).*/\1\'$new_ver\',/" meson.build - git add meson.build +sed -i -e "0,/[ \t]version: /s/\([ \t]version: \).*/\1\'$ver\',/" meson.build +git add meson.build +git commit -s -m "build: Update version to $VERSION" + +if [ "$build_doc" = true ]; then + # update documentation + ./$doc_dir/update-docs.sh + git add $doc_dir + git commit -s -m "doc: Regenerate all docs for $VERSION" fi -git commit -s -m "Release $VERSION" git tag -s -m "Release $VERSION" "$VERSION" git push --dry-run origin "$VERSION"^{}:master tag "$VERSION" |