diff --git a/_build/deploy-phpdoc-branch.sh b/_build/deploy-phpdoc-branch.sh index c4a94a9..9a99620 100755 --- a/_build/deploy-phpdoc-branch.sh +++ b/_build/deploy-phpdoc-branch.sh @@ -37,12 +37,20 @@ generate-phpdoc.sh \ [ $? -eq 0 ] || exit 1 [ -n "$(git status --porcelain "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID.cache")" ] || exit 0 +# update phpDoc list +update-phpdoc-list.sh \ + "$DEPLOYMENT_DIR/_data/phpDoc.yml" \ + "$TRAVIS_BRANCH" "branch" "\`$TRAVIS_BRANCH\` branch" "$(date +%s)" + # commit phpDocs echo "Committing changes..." -git add "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID.cache" "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID" +git add \ + "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID.cache" "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID" \ + "$DEPLOYMENT_DIR/_data/phpDoc.yml" git commit \ --message="Update phpDocumentor class docs for $TRAVIS_BRANCH branch @ $TRAVIS_COMMIT" \ - "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID.cache" "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID" + "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID.cache" "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID" \ + "$DEPLOYMENT_DIR/_data/phpDoc.yml" [ $? -eq 0 ] || exit 1 echo diff --git a/_build/deploy-phpdoc-release.sh b/_build/deploy-phpdoc-release.sh index 8ba0097..fb7dc52 100755 --- a/_build/deploy-phpdoc-release.sh +++ b/_build/deploy-phpdoc-release.sh @@ -35,13 +35,18 @@ if [ "$DEPLOY_PHPDOC_RELEASES" == "true" ]; then "Pico 1.0 API Documentation ($TRAVIS_TAG)" [ $? -eq 0 ] || exit 1 - # commit phpDocs if [ -n "$(git status --porcelain "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID")" ]; then + # update phpDoc list + update-phpdoc-list.sh \ + "$DEPLOYMENT_DIR/_data/phpDoc.yml" \ + "$TRAVIS_TAG" "version" "Pico ${TRAVIS_TAG#v}" "$(date +%s)" + + # commit phpDocs echo "Committing phpDoc changes..." - git add "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID" + git add "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID" "$DEPLOYMENT_DIR/_data/phpDoc.yml" git commit \ --message="Update phpDocumentor class docs for $TRAVIS_TAG" \ - "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID" + "$DEPLOYMENT_DIR/phpDoc/$DEPLOYMENT_ID" "$DEPLOYMENT_DIR/_data/phpDoc.yml" [ $? -eq 0 ] || exit 1 echo fi diff --git a/_build/update-phpdoc-list.sh b/_build/update-phpdoc-list.sh new file mode 100755 index 0000000..c6f48c2 --- /dev/null +++ b/_build/update-phpdoc-list.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +## +# Updates the phpDoc list +# +# @author Daniel Rudolf +# @link http://picocms.org +# @license http://opensource.org/licenses/MIT +# + +set -e + +# parameters +LIST_FILE_PATH="$1" # target file path +LIST_ID="$2" # phpDoc ID +LIST_TYPE="$3" # phpDoc type +LIST_TITLE="$4" # phpDoc title +LIST_LAST_UPDATE="$5" # phpDoc last update + +# print parameters +echo "Updating phpDoc list..." +printf 'LIST_FILE_PATH="%s"\n' "$LIST_FILE_PATH" +printf 'LIST_ID="%s"\n' "$LIST_ID" +printf 'LIST_TYPE="%s"\n' "$LIST_TYPE" +printf 'LIST_TITLE="%s"\n' "$LIST_TITLE" +printf 'LIST_LAST_UPDATE="%s"\n' "$LIST_LAST_UPDATE" +echo + +# create temporary file +printf 'Creating temporary file...\n' +LIST_TMP_FILE="$(mktemp)" +[ -n "$LIST_TMP_FILE" ] || exit 1 + +exec 3> "$LIST_TMP_FILE" + +# walk through phpDoc list +printf 'Walking through phpDoc list...\n' + +DO_REPLACE="no" +DID_REPLACE="no" +while IFS='' read -r LINE || [[ -n "$LINE" ]]; do + if [ "$DO_REPLACE" == "yes" ]; then + # skip lines until next entry is reached + [ "${LINE:0:2}" == " " ] && continue + DO_REPLACE="no" + + elif [ "$LINE" == "- id: $LIST_ID" ]; then + # update existing entry + printf 'Updating existing entry...\n' + printf -- '- id: %s\n' "$LIST_ID" >&3 + printf -- ' type: %s\n' "$LIST_TYPE" >&3 + printf -- ' title: %s\n' "$LIST_TITLE" >&3 + printf -- ' last_update: %s\n' "$LIST_LAST_UPDATE" >&3 + + DO_REPLACE="yes" + DID_REPLACE="yes" + continue + fi + + echo "$LINE" >&3 +done < "$LIST_FILE_PATH" + +# add new entry +if [ "$DID_REPLACE" == "no" ]; then + printf 'Adding new entry...\n' + printf -- '- id: %s\n' "$LIST_ID" >&3 + printf -- ' type: %s\n' "$LIST_TYPE" >&3 + printf -- ' title: %s\n' "$LIST_TITLE" >&3 + printf -- ' last_update: %s\n' "$LIST_LAST_UPDATE" >&3 +fi + +exec 3>&- + +# move temporary file +printf 'Replacing phpDoc list...\n' +mv "$LIST_TMP_FILE" "$LIST_FILE_PATH" + +echo