#!/bin/bash # Script for updating code.angularjs.org repo from current local build. echo "#################################" echo "## Update code.angularjs.org ###" echo "#################################" ARG_DEFS=( "--action=(prepare|publish)" "--version-number=([0-9]+\.[0-9]+\.[0-9]+(-[a-z]+\.[0-9]+)?)" ) function init { TMP_DIR=$(resolveDir ../../tmp) BUILD_DIR=$(resolveDir ../../dist/js/bundle) REPO_DIR=$TMP_DIR/code.angularjs.org # TODO: replace with version read from the bundle dir. NEW_VERSION=$VERSION_NUMBER if [[ "$NEW_VERSION" =~ sha ]]; then IS_SNAPSHOT_BUILD=true else IS_SNAPSHOT_BUILD= fi } function prepare { if [ -d "$REPO_DIR" ]; then # TODO(i): it's not clear how to safely fetch and update a shallow clone # I'll need to test this during the next release echo "-- TODO: Update code.angularjs.org repo at $REPO_DIR" echo "-- TODO: if pushing the 'publish' action fails, rebase the repo manually and push" echo "-- TODO: or delete $REPO_DIR and rerun the prepare and publish steps" #cd $REPO_DIR #git fetch --update-shallow origin #git checkout master #git merge --ff-only origin/master #cd - else echo "-- Cloning code.angularjs.org into $REPO_DIR" git clone git@github.com:angular/code.angularjs.org.git $REPO_DIR --depth=1 fi echo "-- Updating code.angularjs.org" if [[ $IS_SNAPSHOT_BUILD ]]; then # # update the snapshot folder # rm -rf $REPO_DIR/snapshot-angular2/ mkdir $REPO_DIR/snapshot-angular2 cp -r $BUILD_DIR/* $REPO_DIR/snapshot-angular2/ else # # copy the files from the build # mkdir $REPO_DIR/$NEW_VERSION cp -r $BUILD_DIR/* $REPO_DIR/$NEW_VERSION/ fi # # commit # echo "-- Committing code.angularjs.org" cd $REPO_DIR git add -A git commit -m "v$NEW_VERSION" } function _update_code() { cd $REPO_DIR echo "-- Pushing code.angularjs.org" git push origin master for backend in "$@" ; do echo "-- Refreshing code.angularjs.org: backend=$backend" curl http://$backend:8003/gitFetchSite.php done } function publish { # The TXT record for backends.angularjs.org is a CSV of the IP addresses for # the currently serving Compute Engine backends. # code.angularjs.org is served out of port 8003 on these backends. backends=("$(dig backends.angularjs.org +short TXT | python -c 'print raw_input()[1:-1].replace(",", "\n")')") _update_code ${backends[@]} } source $(dirname $0)/../utils.inc