diff --git a/_build/create-release-archive.sh b/_build/create-release-archive.sh deleted file mode 100755 index a1fd763..0000000 --- a/_build/create-release-archive.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -ARCHIVE="$1" - -# create release archive -echo "Creating release archive '$ARCHIVE'..." - -if [ -e "$ARCHIVE" ]; then - echo "Unable to create archive: File exists" >&2 - exit 1 -fi - -INDEX_BACKUP="$(mktemp -u)" -mv index.php "$INDEX_BACKUP" -mv index.php.dist index.php - -tar -czf "$ARCHIVE" \ - README.md LICENSE.md CONTRIBUTING.md CHANGELOG.md \ - composer.json composer.lock \ - assets config content content-sample lib plugins themes vendor \ - .htaccess index.php -EXIT=$? - -mv index.php index.php.dist -mv "$INDEX_BACKUP" index.php - -echo - -[ $EXIT -eq 0 ] || exit 1 diff --git a/_build/deploy-release.sh b/_build/deploy-release.sh index e441914..ef3f8e7 100755 --- a/_build/deploy-release.sh +++ b/_build/deploy-release.sh @@ -31,6 +31,7 @@ if [ "$DEPLOY_FULL" != "true" ]; then echo fi +. "$(dirname "$0")/functions/parse-version.sh.inc" export PATH="$(dirname "$0")/tools:$PATH" DEPLOYMENT_ID="${TRAVIS_TAG//\//_}" @@ -39,6 +40,12 @@ DEPLOYMENT_DIR="$TRAVIS_BUILD_DIR/_build/deploy-$DEPLOYMENT_ID.git" [ -n "$DEPLOY_REPO_SLUG" ] || export DEPLOY_REPO_SLUG="$TRAVIS_REPO_SLUG" [ -n "$DEPLOY_REPO_BRANCH" ] || export DEPLOY_REPO_BRANCH="gh-pages" +# parse version +if ! parse_version "$TRAVIS_TAG"; then + echo "Invalid version '$TRAVIS_TAG'; aborting..." >&2 + exit 1 +fi + # clone repo github-clone.sh "$DEPLOYMENT_DIR" "https://github.com/$DEPLOY_REPO_SLUG.git" "$DEPLOY_REPO_BRANCH" @@ -50,7 +57,7 @@ github-setup.sh # generate phpDocs if [ "$DEPLOY_PHPDOC_RELEASES" == "true" ]; then # get current Pico milestone - MILESTONE="Pico$([[ "$TRAVIS_TAG" =~ ^v([0-9]+\.[0-9]+)\. ]] && echo " ${BASH_REMATCH[1]}")" + MILESTONE="Pico $VERSION_MILESTONE" # generate phpDocs generate-phpdoc.sh \ @@ -74,49 +81,52 @@ if [ "$DEPLOY_PHPDOC_RELEASES" == "true" ]; then fi fi -# update version badge -if [ "$DEPLOY_VERSION_BADGE" == "true" ]; then - generate-badge.sh \ - "$DEPLOYMENT_DIR/badges/pico-version.svg" \ - "release" "$TRAVIS_TAG" "blue" +# don't update version badge, version file and cloc statistics for pre-releases +if [ "$VERSION_STABILITY" != "stable" ]; then + # update version badge + if [ "$DEPLOY_VERSION_BADGE" == "true" ]; then + generate-badge.sh \ + "$DEPLOYMENT_DIR/badges/pico-version.svg" \ + "release" "$TRAVIS_TAG" "blue" - # commit version badge - echo "Committing version badge..." - git add "$DEPLOYMENT_DIR/badges/pico-version.svg" - git commit \ - --message="Update version badge for $TRAVIS_TAG" \ - "$DEPLOYMENT_DIR/badges/pico-version.svg" - echo -fi + # commit version badge + echo "Committing version badge..." + git add "$DEPLOYMENT_DIR/badges/pico-version.svg" + git commit \ + --message="Update version badge for $TRAVIS_TAG" \ + "$DEPLOYMENT_DIR/badges/pico-version.svg" + echo + fi -# update version file -if [ "$DEPLOY_VERSION_FILE" == "true" ]; then - update-version-file.sh \ - "$DEPLOYMENT_DIR/_data/version.yml" \ - "${TRAVIS_TAG#v}" + # update version file + if [ "$DEPLOY_VERSION_FILE" == "true" ]; then + update-version-file.sh \ + "$DEPLOYMENT_DIR/_data/version.yml" \ + "$VERSION_FULL" - # commit version file - echo "Committing version file..." - git add "$DEPLOYMENT_DIR/_data/version.yml" - git commit \ - --message="Update version file for $TRAVIS_TAG" \ - "$DEPLOYMENT_DIR/_data/version.yml" - echo -fi + # commit version file + echo "Committing version file..." + git add "$DEPLOYMENT_DIR/_data/version.yml" + git commit \ + --message="Update version file for $TRAVIS_TAG" \ + "$DEPLOYMENT_DIR/_data/version.yml" + echo + fi -# update cloc statistics -if [ "$DEPLOY_CLOC_STATS" == "true" ]; then - update-cloc-stats.sh \ - "$DEPLOYMENT_DIR/_data/clocCore.yml" \ - "$DEPLOYMENT_DIR/_data/clocRelease.yml" + # update cloc statistics + if [ "$DEPLOY_CLOC_STATS" == "true" ]; then + update-cloc-stats.sh \ + "$DEPLOYMENT_DIR/_data/clocCore.yml" \ + "$DEPLOYMENT_DIR/_data/clocRelease.yml" - # commit cloc statistics - echo "Commiting cloc statistics..." - git add "$DEPLOYMENT_DIR/_data/clocCore.yml" "$DEPLOYMENT_DIR/_data/clocRelease.yml" - git commit \ - --message="Update cloc statistics for $TRAVIS_TAG" \ - "$DEPLOYMENT_DIR/_data/clocCore.yml" "$DEPLOYMENT_DIR/_data/clocRelease.yml" - echo + # commit cloc statistics + echo "Commiting cloc statistics..." + git add "$DEPLOYMENT_DIR/_data/clocCore.yml" "$DEPLOYMENT_DIR/_data/clocRelease.yml" + git commit \ + --message="Update cloc statistics for $TRAVIS_TAG" \ + "$DEPLOYMENT_DIR/_data/clocCore.yml" "$DEPLOYMENT_DIR/_data/clocRelease.yml" + echo + fi fi # deploy diff --git a/_build/tools/functions/parse-version.sh.inc b/_build/tools/functions/parse-version.sh.inc new file mode 100644 index 0000000..1b6dcce --- /dev/null +++ b/_build/tools/functions/parse-version.sh.inc @@ -0,0 +1,44 @@ +## +# Evaluates a version string +# +# @author Daniel Rudolf +# @link http://picocms.org +# @license http://opensource.org/licenses/MIT +# + +parse_version() { + VERSION_FULL="$1" + + if [ "${VERSION_FULL:0:1}" == "v" ]; then + VERSION_FULL="${VERSION_FULL:1}" + fi + + if [[ "$VERSION_FULL" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(-([0-9A-Za-z\.\-]+))?(\+([0-9A-Za-z\.\-]+))?$ ]]; then + VERSION_MAJOR="${BASH_REMATCH[1]}" + VERSION_MINOR="${BASH_REMATCH[2]}" + VERSION_PATCH="${BASH_REMATCH[3]}" + VERSION_SUFFIX="${BASH_REMATCH[5]}" + VERSION_BUILD="${BASH_REMATCH[7]}" + + VERSION_STABILITY="stable" + if [[ "$VERSION_SUFFIX" =~ ^(dev|a|alpha|b|beta|RC)?([.-]?[0-9]+)?([.-](dev))?$ ]]; then + if [ "${BASH_REMATCH[1]}" == "dev" ] || [ "${BASH_REMATCH[4]}" == "dev" ]; then + VERSION_STABILITY="dev" + elif [ "${BASH_REMATCH[1]}" == "a" ] || [ "${BASH_REMATCH[1]}" == "alpha" ]; then + VERSION_STABILITY="alpha" + elif [ "${BASH_REMATCH[1]}" == "b" ] || [ "${BASH_REMATCH[1]}" == "beta" ]; then + VERSION_STABILITY="beta" + elif [ "${BASH_REMATCH[1]}" == "RC" ]; then + VERSION_STABILITY="RC" + fi + fi + + VERSION_MILESTONE="$VERSION_MAJOR.$VERSION_MINOR" + VERSION_NAME="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH" + VERSION_ID="$VERSION_MAJOR$(printf '%02d' "$VERSION_MINOR")$(printf '%02d' "$VERSION_PATCH")" + + return 0 + else + return 1 + fi +} diff --git a/_build/tools/update-version-file.sh b/_build/tools/update-version-file.sh index 4a3ec8b..79afa36 100755 --- a/_build/tools/update-version-file.sh +++ b/_build/tools/update-version-file.sh @@ -10,30 +10,22 @@ set -e +. "$(dirname "$0")/functions/parse-version.sh.inc" + # parameters VERSION_FILE_PATH="$1" # target file path -VERSION_FULL="$2" # full version string (e.g. 1.0.0-beta.1+7b4ad7f) +VERSION_STRING="$2" # version string (e.g. 1.0.0-beta.1+7b4ad7f) # print parameters echo "Generating version file..." printf 'VERSION_FILE_PATH="%s"\n' "$VERSION_FILE_PATH" -printf 'VERSION_FULL="%s"\n' "$VERSION_FULL" +printf 'VERSION_STRING="%s"\n' "$VERSION_STRING" echo -# evaluate version constraint (see http://semver.org/) -printf 'Evaluating version constraint...\n' -if [[ "$VERSION_FULL" =~ ^([0-9]+)\.([0-9]{1,2})\.([0-9]{1,2})(-([0-9A-Za-z\.\-]+))?(\+([0-9A-Za-z\.\-]+))?$ ]]; then - VERSION_MAJOR="${BASH_REMATCH[1]}" - VERSION_MINOR="${BASH_REMATCH[2]}" - VERSION_PATCH="${BASH_REMATCH[3]}" - VERSION_SUFFIX="${BASH_REMATCH[5]}" - VERSION_BUILD="${BASH_REMATCH[7]}" - - VERSION_MILESTONE="$VERSION_MAJOR.$VERSION_MINOR" - VERSION_NAME="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH" - VERSION_ID="$VERSION_MAJOR$(printf '%02d' "$VERSION_MINOR")$(printf '%02d' "$VERSION_PATCH")" -else - echo "Invalid version constraint; skipping..." >&2 +# evaluate version string (see http://semver.org/) +printf 'Evaluating version string...\n' +if ! parse_version "$VERSION_STRING"; then + echo "Invalid version string; skipping..." >&2 exit 1 fi @@ -45,6 +37,7 @@ exec 3> "$VERSION_FILE_PATH" printf 'full: %s\n' "$VERSION_FULL" >&3 printf 'name: %s\n' "$VERSION_NAME" >&3 printf 'milestone: %s\n' "$VERSION_MILESTONE" >&3 +printf 'stability: %s\n' "$VERSION_STABILITY" >&3 printf 'id: %d\n' "$VERSION_ID" >&3 printf 'major: %d\n' "$VERSION_MAJOR" >&3 printf 'minor: %d\n' "$VERSION_MINOR" >&3