Build system: Add version parser, handle pre-releases differently

pico-3.0-alpha
Daniel Rudolf 8 years ago
parent 498961b0c6
commit 448fff4702
No known key found for this signature in database
GPG Key ID: A061F02CD8DE4538
  1. 29
      _build/create-release-archive.sh
  2. 14
      _build/deploy-release.sh
  3. 44
      _build/tools/functions/parse-version.sh.inc
  4. 25
      _build/tools/update-version-file.sh

@ -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

@ -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,6 +81,8 @@ if [ "$DEPLOY_PHPDOC_RELEASES" == "true" ]; then
fi
fi
# 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 \
@ -93,7 +102,7 @@ fi
if [ "$DEPLOY_VERSION_FILE" == "true" ]; then
update-version-file.sh \
"$DEPLOYMENT_DIR/_data/version.yml" \
"${TRAVIS_TAG#v}"
"$VERSION_FULL"
# commit version file
echo "Committing version file..."
@ -118,6 +127,7 @@ if [ "$DEPLOY_CLOC_STATS" == "true" ]; then
"$DEPLOYMENT_DIR/_data/clocCore.yml" "$DEPLOYMENT_DIR/_data/clocRelease.yml"
echo
fi
fi
# deploy
github-deploy.sh "$TRAVIS_REPO_SLUG" "tags/$TRAVIS_TAG" "$TRAVIS_COMMIT"

@ -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
}

@ -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

Loading…
Cancel
Save