Build system: Add version parser, handle pre-releases differently
This commit is contained in:
parent
498961b0c6
commit
448fff4702
@ -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
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
. "$(dirname "$0")/functions/parse-version.sh.inc"
|
||||||
export PATH="$(dirname "$0")/tools:$PATH"
|
export PATH="$(dirname "$0")/tools:$PATH"
|
||||||
|
|
||||||
DEPLOYMENT_ID="${TRAVIS_TAG//\//_}"
|
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_SLUG" ] || export DEPLOY_REPO_SLUG="$TRAVIS_REPO_SLUG"
|
||||||
[ -n "$DEPLOY_REPO_BRANCH" ] || export DEPLOY_REPO_BRANCH="gh-pages"
|
[ -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
|
# clone repo
|
||||||
github-clone.sh "$DEPLOYMENT_DIR" "https://github.com/$DEPLOY_REPO_SLUG.git" "$DEPLOY_REPO_BRANCH"
|
github-clone.sh "$DEPLOYMENT_DIR" "https://github.com/$DEPLOY_REPO_SLUG.git" "$DEPLOY_REPO_BRANCH"
|
||||||
|
|
||||||
@ -50,7 +57,7 @@ github-setup.sh
|
|||||||
# generate phpDocs
|
# generate phpDocs
|
||||||
if [ "$DEPLOY_PHPDOC_RELEASES" == "true" ]; then
|
if [ "$DEPLOY_PHPDOC_RELEASES" == "true" ]; then
|
||||||
# get current Pico milestone
|
# get current Pico milestone
|
||||||
MILESTONE="Pico$([[ "$TRAVIS_TAG" =~ ^v([0-9]+\.[0-9]+)\. ]] && echo " ${BASH_REMATCH[1]}")"
|
MILESTONE="Pico $VERSION_MILESTONE"
|
||||||
|
|
||||||
# generate phpDocs
|
# generate phpDocs
|
||||||
generate-phpdoc.sh \
|
generate-phpdoc.sh \
|
||||||
@ -74,6 +81,8 @@ if [ "$DEPLOY_PHPDOC_RELEASES" == "true" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# don't update version badge, version file and cloc statistics for pre-releases
|
||||||
|
if [ "$VERSION_STABILITY" != "stable" ]; then
|
||||||
# update version badge
|
# update version badge
|
||||||
if [ "$DEPLOY_VERSION_BADGE" == "true" ]; then
|
if [ "$DEPLOY_VERSION_BADGE" == "true" ]; then
|
||||||
generate-badge.sh \
|
generate-badge.sh \
|
||||||
@ -93,7 +102,7 @@ fi
|
|||||||
if [ "$DEPLOY_VERSION_FILE" == "true" ]; then
|
if [ "$DEPLOY_VERSION_FILE" == "true" ]; then
|
||||||
update-version-file.sh \
|
update-version-file.sh \
|
||||||
"$DEPLOYMENT_DIR/_data/version.yml" \
|
"$DEPLOYMENT_DIR/_data/version.yml" \
|
||||||
"${TRAVIS_TAG#v}"
|
"$VERSION_FULL"
|
||||||
|
|
||||||
# commit version file
|
# commit version file
|
||||||
echo "Committing 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"
|
"$DEPLOYMENT_DIR/_data/clocCore.yml" "$DEPLOYMENT_DIR/_data/clocRelease.yml"
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# deploy
|
# deploy
|
||||||
github-deploy.sh "$TRAVIS_REPO_SLUG" "tags/$TRAVIS_TAG" "$TRAVIS_COMMIT"
|
github-deploy.sh "$TRAVIS_REPO_SLUG" "tags/$TRAVIS_TAG" "$TRAVIS_COMMIT"
|
||||||
|
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
|
set -e
|
||||||
|
|
||||||
|
. "$(dirname "$0")/functions/parse-version.sh.inc"
|
||||||
|
|
||||||
# parameters
|
# parameters
|
||||||
VERSION_FILE_PATH="$1" # target file path
|
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
|
# print parameters
|
||||||
echo "Generating version file..."
|
echo "Generating version file..."
|
||||||
printf 'VERSION_FILE_PATH="%s"\n' "$VERSION_FILE_PATH"
|
printf 'VERSION_FILE_PATH="%s"\n' "$VERSION_FILE_PATH"
|
||||||
printf 'VERSION_FULL="%s"\n' "$VERSION_FULL"
|
printf 'VERSION_STRING="%s"\n' "$VERSION_STRING"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# evaluate version constraint (see http://semver.org/)
|
# evaluate version string (see http://semver.org/)
|
||||||
printf 'Evaluating version constraint...\n'
|
printf 'Evaluating version string...\n'
|
||||||
if [[ "$VERSION_FULL" =~ ^([0-9]+)\.([0-9]{1,2})\.([0-9]{1,2})(-([0-9A-Za-z\.\-]+))?(\+([0-9A-Za-z\.\-]+))?$ ]]; then
|
if ! parse_version "$VERSION_STRING"; then
|
||||||
VERSION_MAJOR="${BASH_REMATCH[1]}"
|
echo "Invalid version string; skipping..." >&2
|
||||||
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
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -45,6 +37,7 @@ exec 3> "$VERSION_FILE_PATH"
|
|||||||
printf 'full: %s\n' "$VERSION_FULL" >&3
|
printf 'full: %s\n' "$VERSION_FULL" >&3
|
||||||
printf 'name: %s\n' "$VERSION_NAME" >&3
|
printf 'name: %s\n' "$VERSION_NAME" >&3
|
||||||
printf 'milestone: %s\n' "$VERSION_MILESTONE" >&3
|
printf 'milestone: %s\n' "$VERSION_MILESTONE" >&3
|
||||||
|
printf 'stability: %s\n' "$VERSION_STABILITY" >&3
|
||||||
printf 'id: %d\n' "$VERSION_ID" >&3
|
printf 'id: %d\n' "$VERSION_ID" >&3
|
||||||
printf 'major: %d\n' "$VERSION_MAJOR" >&3
|
printf 'major: %d\n' "$VERSION_MAJOR" >&3
|
||||||
printf 'minor: %d\n' "$VERSION_MINOR" >&3
|
printf 'minor: %d\n' "$VERSION_MINOR" >&3
|
||||||
|
Loading…
x
Reference in New Issue
Block a user