From 36c3ee56b8471c82ec5ea88dcbaf223235b22a3e Mon Sep 17 00:00:00 2001 From: Domenic Denicola Date: Fri, 17 Feb 2017 18:25:51 -0500 Subject: [PATCH] Meta: add commit and branch snapshots This moves the deploy process to be in line with most other WHATWG specifications; see https://github.com/whatwg/meta/issues/2. It also adds the missing dfn.js file to get popups when clicking on elements and makes other small tweaks. --- .gitignore | 2 + .travis.yml | 4 +- Makefile | 61 ++----------- README.md | 9 +- deploy.sh | 105 ++++++++++++++++++++++ console_spec_id_rsa.enc => deploy_key.enc | Bin index.bs | 5 +- package.json | 2 +- 8 files changed, 128 insertions(+), 60 deletions(-) create mode 100644 deploy.sh rename console_spec_id_rsa.enc => deploy_key.enc (100%) diff --git a/.gitignore b/.gitignore index f4dd25c..6e89bad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,9 @@ node_modules/ npm-debug.log +index.html console_spec_id_rsa +deploy_key console.spec.whatwg.org/ .DS_Store .idea diff --git a/.travis.yml b/.travis.yml index fb8df4c..ad337ff 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,13 +4,13 @@ sudo: false env: global: - secure: "a5khJF7IdbDt2cT7xjlVpEglXeud5Ln+4AnfjOwR7hrcFnwY9s/fHDXRdNi/QdOUnl/2vFM86OXgyEVUOCnwvJAPHu5fw6nDfcj18CMDBUNBZvVXwEFCTJTjL8P+zTsGx5Sh8xmWo2s+eoPJiczcwtsk7XD9gMoTYrR5Us9KF/0=" + ENCRYPTION_LABEL: "b9b018a1d67d" addons: ssh_known_hosts: console.spec.whatwg.org script: -- make deploy +- bash ./deploy.sh notifications: email: diff --git a/Makefile b/Makefile index 52fe1de..bfefa37 100644 --- a/Makefile +++ b/Makefile @@ -1,59 +1,10 @@ SHELL=/bin/bash -o pipefail -spec = console -targetfolder = $(spec).spec.whatwg.org -server = $(spec).spec.whatwg.org +local: index.bs + bikeshed spec index.bs index.html --md-Text-Macro="SNAPSHOT-LINK LOCAL COPY" -# find all bikeshed files and create a target for them -# ./index.bs gets console.spec.whatwg.org/index.html -markupfiles := $(shell find . -name '*.bs' \ - | sed 's|.bs|.html|g' \ - | sed 's|./|$(targetfolder)/|g') +remote: index.bs + curl https://api.csswg.org/bikeshed/ -f -F file=@index.bs > index.html -F md-Text-Macro="SNAPSHOT-LINK LOCAL COPY" -# and build after a clean -all: clean $(markupfiles) $(targetfolder)/images - -# rule matches our target files from markupfiles: -# $(targetfolder)/%.html matches all html file in the targetfolder -# $@ in the rule gets the target files from markupfiles -# i.e. if markupfiles contains bla/foo.html and bla/index.html it gets: -# bla/index.html and bla/foo.html -# the magic var @D is the directory part of our matching rule. -# @$ is basically what is matched in the % of the %.html -$(targetfolder)/%.html: - @[ -d $(@D) ] || mkdir -p $(@D) # create dir if it does not exist - @curl -f -s https://api.csswg.org/bikeshed/ -F file=@$*.bs \ - | node_modules/.bin/emu-algify > $@ - -# copy images -$(targetfolder)/images: - $(shell cp -R images $(targetfolder)/) - -# cleaning up -clean: - @rm -rf $(targetfolder) - -# deployment -ifneq ($(TRAVIS_BRANCH),master) -deploy: - @echo "Not on master branch; skipping deploy" -else ifneq ($(TRAVIS_PULL_REQUEST),false) -deploy: - @echo "Building a pull request; skipping deploy" -else -deploy: clean all upload - @echo "Living standard output to $(targetfolder)" - @echo "" - @find $(targetfolder) -print - @echo "" -endif - -# upload to server -upload: - @openssl aes-256-cbc -K $(encrypted_b9b018a1d67d_key) -iv $(encrypted_b9b018a1d67d_iv) -in console_spec_id_rsa.enc -out console_spec_id_rsa -d - @chmod 600 console_spec_id_rsa - @scp -r -i console_spec_id_rsa $(targetfolder) $(DEPLOY_USER)@$(server): - -# don't confuse make given we have files called "clean" "upload" -# "deploy" or "all" in our root dir -.PHONY: clean upload deploy all +# Don't confuse make given we have files called "local" or "remote" in our root dir +.PHONY: local remote diff --git a/README.md b/README.md index 72f704f..27c1b4d 100644 --- a/README.md +++ b/README.md @@ -15,4 +15,11 @@ This specification is still in its very early stages. It is very much a work in The Console Standard is written in [Bikeshed](https://github.com/tabatkins/bikeshed), with an additional bit of help from [emu-algify](https://www.npmjs.com/package/emu-algify). The main source is in the file `index.bs`. -To build the standard locally, you will need a recent version of [Node.js](https://nodejs.org/en/). Run `npm install` in the root directory to set things up. Then the Makefile should take care of the rest by calling out to the Bikeshed web service. +To build the standard locally, you will need a recent version of [Node.js](https://nodejs.org/en/). Run `npm install` in the root directory to set things up. Then you can either use a locally installed copy of [Bikeshed](https://github.com/tabatkins/bikeshed) by running `make` or use the HTTP API version by + running `make remote`. + +If you want to do a complete "local deploy" including commit and/or branch snapshots, run + +``` +./deploy.sh --local +``` diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..3e64011 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,105 @@ +#!/bin/bash +set -e + +DEPLOY_USER="ddenicola" + +TITLE="Console Standard" +LS_URL="https://console.spec.whatwg.org/" +COMMIT_URL_BASE="https://github.com/whatwg/console/commit/" +BRANCH_URL_BASE="https://github.com/whatwg/console/tree/" + +INPUT_FILE="index.bs" +SERVER="console.spec.whatwg.org" +WEB_ROOT="console.spec.whatwg.org" +COMMITS_DIR="commit-snapshots" +BRANCHES_DIR="branch-snapshots" + +if [ "$1" != "--local" -a "$DEPLOY_USER" == "" ]; then + echo "No deploy credentials present; skipping deploy" + exit 0 +fi + +if [ "$1" == "--local" ]; then + echo "Running a local deploy into $WEB_ROOT directory" + echo "" +fi + +SHA="`git rev-parse HEAD`" +BRANCH="`git rev-parse --abbrev-ref HEAD`" +if [ "$BRANCH" == "HEAD" ]; then # Travis does this for some reason + BRANCH=$TRAVIS_BRANCH +fi + +if [ "$BRANCH" == "master" -a "$TRAVIS_PULL_REQUEST" != "false" -a "$TRAVIS_PULL_REQUEST" != "" ]; then + echo "Skipping deploy for a pull request; the branch build will suffice" + exit 0 +fi + +BACK_TO_LS_LINK="Go to the living standard" +SNAPSHOT_LINK="Snapshot as of this commit" + +echo "Branch = $BRANCH" +echo "Commit = $SHA" +echo "" + +rm -rf $WEB_ROOT || exit 0 + +# Commit snapshot +COMMIT_DIR=$WEB_ROOT/$COMMITS_DIR/$SHA +mkdir -p $COMMIT_DIR +curl https://api.csswg.org/bikeshed/ -f -F file=@$INPUT_FILE -F md-status=LS-COMMIT \ + -F md-warning="Commit $SHA $COMMIT_URL_BASE$SHA replaced by $LS_URL" \ + -F md-title="$TITLE (Commit Snapshot $SHA)" \ + -F md-Text-Macro="SNAPSHOT-LINK $BACK_TO_LS_LINK" \ + > $COMMIT_DIR/index.intermediate.html; +node_modules/.bin/emu-algify < $COMMIT_DIR/index.intermediate.html > $COMMIT_DIR/index.html +rm $COMMIT_DIR/index.intermediate.html +mkdir $COMMIT_DIR/images +cp images/*.* $COMMIT_DIR/images/ +echo "Commit snapshot output to $WEB_ROOT/$COMMITS_DIR/$SHA" +echo "" + +if [ $BRANCH != "master" ] ; then + # Branch snapshot, if not master + BRANCH_DIR=$WEB_ROOT/$BRANCHES_DIR/$BRANCH + mkdir -p $BRANCH_DIR + curl https://api.csswg.org/bikeshed/ -f -F file=@$INPUT_FILE -F md-status=LS-BRANCH \ + -F md-warning="Branch $BRANCH $BRANCH_URL_BASE$BRANCH replaced by $LS_URL" \ + -F md-title="$TITLE (Branch Snapshot $BRANCH)" \ + -F md-Text-Macro="SNAPSHOT-LINK $SNAPSHOT_LINK" \ + > $BRANCH_DIR/index.intermediate.html; + node_modules/.bin/emu-algify < $BRANCH_DIR/index.intermediate.html > $BRANCH_DIR/index.html + mkdir $BRANCH_DIR/images + rm $BRANCH_DIR/index.intermediate.html + cp images/*.* $BRANCH_DIR/images/ + echo "Branch snapshot output to $WEB_ROOT/$BRANCHES_DIR/$BRANCH" +else + # Living standard, if master + curl https://api.csswg.org/bikeshed/ -f -F file=@$INPUT_FILE \ + -F md-Text-Macro="SNAPSHOT-LINK $SNAPSHOT_LINK" \ + > $WEB_ROOT/index.intermediate.html; + node_modules/.bin/emu-algify < $WEB_ROOT/index.intermediate.html > $WEB_ROOT/index.html + rm $WEB_ROOT/index.intermediate.html + mkdir $WEB_ROOT/images + cp images/*.* $WEB_ROOT/images/ + echo "Living standard output to $WEB_ROOT" +fi + +echo "" +find $WEB_ROOT -print +echo "" + +if [ "$1" != "--local" ]; then + # Get the deploy key by using Travis's stored variables to decrypt deploy_key.enc + ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key" + ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv" + ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR} + ENCRYPTED_IV=${!ENCRYPTED_IV_VAR} + openssl aes-256-cbc -K $ENCRYPTED_KEY -iv $ENCRYPTED_IV -in deploy_key.enc -out deploy_key -d + chmod 600 deploy_key + eval `ssh-agent -s` + ssh-add deploy_key + + # scp the output directory up + scp -r $WEB_ROOT $DEPLOY_USER@$SERVER: +fi diff --git a/console_spec_id_rsa.enc b/deploy_key.enc similarity index 100% rename from console_spec_id_rsa.enc rename to deploy_key.enc diff --git a/index.bs b/index.bs index 1bff6af..61cf871 100644 --- a/index.bs +++ b/index.bs @@ -12,7 +12,8 @@ Abstract: This specification defines APIs for console debugging facilities. Logo: https://resources.whatwg.org/logo-console.svg !Participate: GitHub whatwg/console (new issue, open issues) !Participate: IRC: #whatwg on Freenode -!Commits: https://github.com/whatwg/console/commits +!Commits: GitHub whatwg/console/commits +!Commits: [SNAPSHOT-LINK] !Commits: @consolelog Opaque Elements: emu-alg @@ -41,6 +42,8 @@ Link Defaults: html (dfn) structured clone + +

Status

diff --git a/package.json b/package.json index f7a270b..feadf80 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,6 @@ "author": "Terin Stock & Robert Kowalski ", "license": "CC0", "devDependencies": { - "emu-algify": "^2.0.0" + "emu-algify": "^2.2.0" } }