commit
9b31a54adc
@ -0,0 +1,28 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
|
||||||
|
if [ "$TRAVIS_PHP_VERSION" != "5.3" ]; then |
||||||
|
echo "Skipping phpDoc deployment because this is not on the required runtime" |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
if [[ ",$DEPLOY_PHPDOC_BRANCHES," != *,"$TRAVIS_BRANCH",* ]]; then |
||||||
|
echo "Skipping phpDoc deployment because this branch ($TRAVIS_BRANCH) is not permitted to deploy" |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then |
||||||
|
echo "Skipping phpDoc deployment because this pull request (#$TRAVIS_PULL_REQUEST) is not permitted to deploy" |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
PHPDOC_ID="${TRAVIS_BRANCH//\//_}" |
||||||
|
|
||||||
|
generate-phpdoc.sh \ |
||||||
|
"$TRAVIS_BUILD_DIR" "$TRAVIS_BUILD_DIR/build/phpdoc-$PHPDOC_ID" \ |
||||||
|
"Pico 1.0 API Documentation ($TRAVIS_BRANCH branch)" |
||||||
|
[ $? -eq 0 ] || exit 1 |
||||||
|
|
||||||
|
deploy-phpdoc.sh \ |
||||||
|
"$TRAVIS_REPO_SLUG" "heads/$TRAVIS_BRANCH @ $TRAVIS_COMMIT" "$TRAVIS_BUILD_DIR/build/phpdoc-$PHPDOC_ID" \ |
||||||
|
"$TRAVIS_REPO_SLUG" "gh-pages" "phpDoc/$PHPDOC_ID" |
||||||
|
[ $? -eq 0 ] || exit 1 |
@ -0,0 +1,15 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
|
||||||
|
[ "$DEPLOY_PHPDOC_RELEASES" == "true" ] || exit |
||||||
|
|
||||||
|
PHPDOC_ID="${TRAVIS_BRANCH//\//_}" |
||||||
|
|
||||||
|
generate-phpdoc.sh \ |
||||||
|
"$TRAVIS_BUILD_DIR" "$TRAVIS_BUILD_DIR/build/phpdoc-$PHPDOC_ID" \ |
||||||
|
"Pico 1.0 API Documentation ($TRAVIS_TAG)" |
||||||
|
[ $? -eq 0 ] || exit 1 |
||||||
|
|
||||||
|
deploy-phpdoc.sh \ |
||||||
|
"$TRAVIS_REPO_SLUG" "tags/$TRAVIS_TAG" "$TRAVIS_BUILD_DIR/build/phpdoc-$PHPDOC_ID" \ |
||||||
|
"$TRAVIS_REPO_SLUG" "gh-pages" "phpDoc/$PHPDOC_ID" |
||||||
|
[ $? -eq 0 ] || exit 1 |
@ -0,0 +1,109 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
set -e |
||||||
|
|
||||||
|
# base variables |
||||||
|
APP_NAME="$(basename "$0")" |
||||||
|
BASE_PWD="$PWD" |
||||||
|
|
||||||
|
# environment variables |
||||||
|
# GITHUB_OAUTH_TOKEN GitHub authentication token, see https://github.com/settings/tokens |
||||||
|
|
||||||
|
# parameters |
||||||
|
SOURCE_REPO_SLUG="$1" # source GitHub repo (e.g. picocms/Pico) |
||||||
|
SOURCE_REF="$2" # source reference (either "[ref] @ [commit]" or "[ref]", |
||||||
|
# [ref] can be e.g. heads/master or tags/v1.0.0) |
||||||
|
SOURCE_DIR="$3" # absolute source path |
||||||
|
TARGET_REPO_SLUG="$4" # target GitHub repo (e.g. picocms/Pico) |
||||||
|
TARGET_BRANCH="$5" # target branch (e.g. gh-pages) |
||||||
|
TARGET_DIR="$6" # relative target path |
||||||
|
|
||||||
|
# print parameters |
||||||
|
echo "Deploying phpDocs..." |
||||||
|
printf 'SOURCE_REPO_SLUG="%s"\n' "$SOURCE_REPO_SLUG" |
||||||
|
printf 'SOURCE_REF="%s"\n' "$SOURCE_REF" |
||||||
|
printf 'SOURCE_DIR="%s"\n' "$SOURCE_DIR" |
||||||
|
printf 'TARGET_REPO_SLUG="%s"\n' "$TARGET_REPO_SLUG" |
||||||
|
printf 'TARGET_BRANCH="%s"\n' "$TARGET_BRANCH" |
||||||
|
printf 'TARGET_DIR="%s"\n' "$TARGET_DIR" |
||||||
|
echo |
||||||
|
|
||||||
|
# evaluate source reference |
||||||
|
if [[ "$SOURCE_REF" == *" @ "* ]]; then |
||||||
|
SOURCE_REF_TYPE="commit" |
||||||
|
SOURCE_REF_HEAD="${SOURCE_REF% @ *}" |
||||||
|
SOURCE_REF_COMMIT="${SOURCE_REF##* @ }" |
||||||
|
|
||||||
|
if ! git check-ref-format "$SOURCE_REF_HEAD" || ! git rev-parse --verify "$SOURCE_REF_COMMIT" > /dev/null; then |
||||||
|
echo "FATAL: $APP_NAME source reference '$SOURCE_REF' is invalid" >&2 |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
elif git check-ref-format "$SOURCE_REF"; then |
||||||
|
SOURCE_REF_TYPE="ref" |
||||||
|
else |
||||||
|
echo "FATAL: $APP_NAME source reference '$SOURCE_REF' is invalid" >&2 |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
# clone repo |
||||||
|
printf 'Cloning repo...\n' |
||||||
|
GIT_DIR="$SOURCE_DIR.git" |
||||||
|
git clone --branch="$TARGET_BRANCH" "https://github.com/$TARGET_REPO_SLUG.git" "$GIT_DIR" |
||||||
|
|
||||||
|
# setup git |
||||||
|
cd "$GIT_DIR" |
||||||
|
git config user.name "Travis CI" |
||||||
|
git config user.email "travis-ci@picocms.org" |
||||||
|
|
||||||
|
if [ -n "$GITHUB_OAUTH_TOKEN" ]; then |
||||||
|
git config credential.helper 'store --file=.git/credentials' |
||||||
|
(umask 077 && echo "https://GitHub:$GITHUB_OAUTH_TOKEN@github.com" > .git/credentials) |
||||||
|
fi |
||||||
|
|
||||||
|
# copy phpdoc |
||||||
|
printf '\nCopying phpDocs...\n' |
||||||
|
[ ! -d "$TARGET_DIR" ] || rm -rf "$TARGET_DIR" |
||||||
|
[ "${SOURCE_DIR:0:1}" == "/" ] || SOURCE_DIR="$BASE_PWD/$SOURCE_DIR" |
||||||
|
cp -R "$SOURCE_DIR" "$TARGET_DIR" |
||||||
|
|
||||||
|
# commit changes |
||||||
|
printf '\nCommiting changes...\n' |
||||||
|
git add --all "$TARGET_DIR" |
||||||
|
git commit --message="Update phpDocumentor class docs for $SOURCE_REF" |
||||||
|
|
||||||
|
# very simple race condition protection for concurrent Travis builds |
||||||
|
# this is no definite protection (race conditions are still possible during `git push`), |
||||||
|
# but it should give a basic protection without disabling concurrent builds completely |
||||||
|
if [ "$SOURCE_REF_TYPE" == "commit" ]; then |
||||||
|
# load branch data via GitHub APIv3 |
||||||
|
printf '\nRetrieving latest commit...\n' |
||||||
|
LATEST_COMMIT_URL="https://api.github.com/repos/$SOURCE_REPO_SLUG/git/refs/$SOURCE_REF_HEAD" |
||||||
|
if [ -n "$GITHUB_OAUTH_TOKEN" ]; then |
||||||
|
LATEST_COMMIT_RESPONSE="$(wget -O- --header="Authorization: token $GITHUB_OAUTH_TOKEN" "$LATEST_COMMIT_URL" 2> /dev/null)" |
||||||
|
else |
||||||
|
LATEST_COMMIT_RESPONSE="$(wget -O- "$LATEST_COMMIT_URL" 2> /dev/null)" |
||||||
|
fi |
||||||
|
|
||||||
|
# evaluate JSON response |
||||||
|
LATEST_COMMIT="$(echo "$LATEST_COMMIT_RESPONSE" | php -r " |
||||||
|
\$json = json_decode(stream_get_contents(STDIN), true); |
||||||
|
if (\$json !== null) { |
||||||
|
if (isset(\$json['ref']) && (\$json['ref'] === 'refs/$SOURCE_REF_HEAD')) { |
||||||
|
if (isset(\$json['object']) && isset(\$json['object']['sha'])) { |
||||||
|
echo \$json['object']['sha']; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
")" |
||||||
|
|
||||||
|
# compare source reference against the latest commit |
||||||
|
if [ "$LATEST_COMMIT" != "$SOURCE_REF_COMMIT" ]; then |
||||||
|
echo "WARNING: $APP_NAME source reference '$SOURCE_REF' doesn't match the latest commit '$LATEST_COMMIT'" >&2 |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
# push changes |
||||||
|
printf '\nPushing changes...\n' |
||||||
|
git push "https://github.com/$TARGET_REPO_SLUG.git" "$TARGET_BRANCH:$TARGET_BRANCH" |
||||||
|
|
||||||
|
echo |
@ -0,0 +1,24 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
set -e |
||||||
|
|
||||||
|
# parameters |
||||||
|
PHPDOC_SOURCE_DIR="$1" |
||||||
|
PHPDOC_TARGET_DIR="$2" |
||||||
|
PHPDOC_TITLE="$3" |
||||||
|
|
||||||
|
# print parameters |
||||||
|
echo "Generating phpDocs..." |
||||||
|
printf 'PHPDOC_SOURCE_DIR="%s"\n' "$PHPDOC_SOURCE_DIR" |
||||||
|
printf 'PHPDOC_TARGET_DIR="%s"\n' "$PHPDOC_TARGET_DIR" |
||||||
|
printf 'PHPDOC_TITLE="%s"\n' "$PHPDOC_TITLE" |
||||||
|
echo |
||||||
|
|
||||||
|
# generate phpdoc |
||||||
|
phpdoc -d "$PHPDOC_SOURCE_DIR" \ |
||||||
|
-i "$PHPDOC_SOURCE_DIR/build/" \ |
||||||
|
-i "$PHPDOC_SOURCE_DIR/vendor/" \ |
||||||
|
-i "$PHPDOC_SOURCE_DIR/plugins/" -f "$PHPDOC_SOURCE_DIR/plugins/DummyPlugin.php" \ |
||||||
|
-t "$PHPDOC_TARGET_DIR" \ |
||||||
|
--title "$PHPDOC_TITLE" |
||||||
|
|
||||||
|
echo |
@ -0,0 +1,20 @@ |
|||||||
|
<?php // @codingStandardsIgnoreFile |
||||||
|
|
||||||
|
// check PHP version |
||||||
|
if (version_compare(PHP_VERSION, '5.3.6', '<')) { |
||||||
|
die('Pico requires PHP 5.3.6 or above to run'); |
||||||
|
} |
||||||
|
|
||||||
|
// load dependencies |
||||||
|
require_once(__DIR__ . '/vendor/autoload.php'); |
||||||
|
|
||||||
|
// instance Pico |
||||||
|
$pico = new Pico( |
||||||
|
__DIR__, // root dir |
||||||
|
'config/', // config dir |
||||||
|
'plugins/', // plugins dir |
||||||
|
'themes/' // themes dir |
||||||
|
); |
||||||
|
|
||||||
|
// run application |
||||||
|
echo $pico->run(); |
@ -0,0 +1,39 @@ |
|||||||
|
<?xml version="1.0"?> |
||||||
|
<ruleset name="Pico"> |
||||||
|
<description> |
||||||
|
Pico's coding standards mainly base on the PHP-FIG PSR-2 standard, |
||||||
|
but without the MissingNamespace sniff. |
||||||
|
</description> |
||||||
|
|
||||||
|
<!-- |
||||||
|
Exclude build/ and vendor/ dirs as well as minified JavaScript files |
||||||
|
--> |
||||||
|
<exclude-pattern type="relative">^build/</exclude-pattern> |
||||||
|
<exclude-pattern type="relative">^vendor/</exclude-pattern> |
||||||
|
<exclude-pattern>*.min.js</exclude-pattern> |
||||||
|
|
||||||
|
<!-- |
||||||
|
Check files for PHP syntax errors |
||||||
|
--> |
||||||
|
<config name="php_path" value="php"/> |
||||||
|
<rule ref="Generic.PHP.Syntax"/> |
||||||
|
|
||||||
|
<!-- |
||||||
|
Never use deprecated functions, |
||||||
|
as they will be removed in future PHP releases |
||||||
|
--> |
||||||
|
<rule ref="Generic.PHP.DeprecatedFunctions"/> |
||||||
|
|
||||||
|
<!-- |
||||||
|
Warn about structures which affect performance negatively |
||||||
|
--> |
||||||
|
<rule ref="Generic.CodeAnalysis.ForLoopWithTestFunctionCall"/> |
||||||
|
|
||||||
|
<!-- |
||||||
|
Pico follows PHP-FIG PSR-2 Coding Style, |
||||||
|
but doesn't use formal namespaces for historic reasons |
||||||
|
--> |
||||||
|
<rule ref="PSR2"> |
||||||
|
<exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace"/> |
||||||
|
</rule> |
||||||
|
</ruleset> |
Loading…
Reference in new issue