Build system: Add version parser, handle pre-releases differently
This commit is contained in:
parent
498961b0c6
commit
448fff4702
4 changed files with 102 additions and 84 deletions
|
@ -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,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
|
||||
|
|
44
_build/tools/functions/parse-version.sh.inc
Normal file
44
_build/tools/functions/parse-version.sh.inc
Normal file
|
@ -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…
Add table
Reference in a new issue