Skip to content

Commit

Permalink
Improve build and fix typos (WebAssembly#628)
Browse files Browse the repository at this point in the history
* Fix links to the web-api specification

* Remove Markdown use in an HTML page

* [spec] Implement spec deployment for JS specs

- Call out to bikeshed explicitly
- Run deploy.sh with bash (it doesn't work with other shells anyway)

* Use Bikeshed web service

* Travis deploy script for bikeshed specs

* Move deployment script to document directory

* Add Travis CI deploy key
  • Loading branch information
littledan authored Jan 3, 2018
1 parent ab40b1b commit bb329a6
Show file tree
Hide file tree
Showing 9 changed files with 95 additions and 10 deletions.
9 changes: 8 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,15 @@ sudo: off

install: ./interpreter/meta/travis/install-ocaml.sh

script: ./interpreter/meta/travis/build-test.sh
script:
- ./interpreter/meta/travis/build-test.sh
- bash ./document/travis-deploy.sh

os:
- linux
- osx

env:
global:
- ENCRYPTION_LABEL: "304454be9d6c"
- COMMIT_AUTHOR_EMAIL: "[email protected]"
Binary file added deploy_key.enc
Binary file not shown.
4 changes: 2 additions & 2 deletions document/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ $(BUILDDIR):

.PHONY: deploy
deploy:
GIT_DEPLOY_DIR=$(BUILDDIR) sh deploy.sh
GIT_DEPLOY_DIR=$(BUILDDIR) bash deploy.sh

.PHONY: publish
publish: all deploy
Expand All @@ -34,7 +34,7 @@ $(DIRS): %: $(BUILDDIR)

.PHONY: $(DIRS:%=deploy-%)
$(DIRS:%=deploy-%):
GIT_DEPLOY_DIR=$(BUILDDIR) GIT_DEPLOY_SUBDIR=$(@:deploy-%=%) sh deploy.sh
GIT_DEPLOY_DIR=$(BUILDDIR) GIT_DEPLOY_SUBDIR=$(@:deploy-%=%) bash deploy.sh

.PHONY: $(DIRS:%=publish-%)
$(DIRS:%=publish-%): publish-%: % deploy-%
Expand Down
2 changes: 1 addition & 1 deletion document/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ <h3>API specifications</h3>
<ul>
<li><p><a href="js-api/index.html">JavaScript API</a>: defines JavaScript classes and objects for accessing WebAssembly from within JavaScript, including methods for validation, compilation, instantiation, and classes for representing and manipulating imports and exports as JavaScript objects.</p></li>

<li><p><a href="web-api/index.html">Web API</a>: defines extensions to the JavaScript API made available specifically in web browsers, in particular, an interface for streaming compilation and instantiation from origin-bound `Response` types.</p></li>
<li><p><a href="web-api/index.html">Web API</a>: defines extensions to the JavaScript API made available specifically in web browsers, in particular, an interface for streaming compilation and instantiation from origin-bound <code>Response</code> types.</p></li>
</ul>

</article>
Expand Down
3 changes: 1 addition & 2 deletions document/js-api/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ NAME = WebAssembly
.PHONY: all
all:
mkdir -p $(BUILDDIR)/html
# TODO(littledan): remove dummy and properly build into $(BUILDDIR)/html
touch $(BUILDDIR)/html/index.html
curl https://api.csswg.org/bikeshed/ -F [email protected] > $(BUILDDIR)/html/index.html
@echo "Build finished. The HTML pages are in `pwd`/$(BUILDDIR)/html."

.PHONY: publish
Expand Down
2 changes: 1 addition & 1 deletion document/js-api/index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,7 @@ A {{Module}} object represents a single WebAssembly module. Each {{Module}} obje
1. Return |promise|
</div>

Note: A follow-on streaming API is documented in the <a href="https://webassembly.github.io/spec/document/web/index.html">WebAssembly Web API</a>.
Note: A follow-on streaming API is documented in the <a href="https://webassembly.github.io/spec/document/web-api/index.html">WebAssembly Web API</a>.

<h3 id="modules">Modules</h3>

Expand Down
80 changes: 80 additions & 0 deletions document/travis-deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
#!/bin/bash

# Adapted from https://github.com/heycam/webidl/blob/master/deploy.sh

set -e # Exit with nonzero exit code if anything fails

SOURCE_BRANCH="master"
TARGET_BRANCH="gh-pages"

function doCompile {
# TODO(littledan): Integrate with document/deploy.sh
cd document/js-api
make
cd ../web-api
make
cd ../../out
if [[ ! -e js-api ]]; then mkdir js-api; fi
mv ../document/js-api/_build/html/index.html js-api/index.html
git add js-api/index.html
if [[ ! -e web-api ]]; then mkdir web-api; fi
mv ../document/web-api/_build/html/index.html web-api/index.html
git add web-api/index.html
cd ../
}

# Pull requests and commits to other branches shouldn't try to deploy, just build to verify
if [[ "$TRAVIS_PULL_REQUEST" != "false" || "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]]; then
echo "Skipping deploy; just doing a build."
mkdir out
doCompile
exit 0
fi

# Save some useful information
REPO=`git config remote.origin.url`
SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
SHA=`git rev-parse --verify HEAD`

# 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 || true
chmod 600 deploy_key
eval `ssh-agent -s`
ssh-add deploy_key || true

# Clone the existing gh-pages for this repo into out/
# Create a new empty branch if gh-pages doesn't exist yet (should only happen on first deply)
git clone $REPO out
cd out
git checkout $TARGET_BRANCH || git checkout --orphan $TARGET_BRANCH

# Clean out existing contents
git reset --hard

# Run our compile script
cd ..
doCompile

# Now let's go have some fun with the cloned repo
cd out
git config user.name "Travis CI"
git config user.email "$COMMIT_AUTHOR_EMAIL"

# If there are no changes to the compiled out (e.g. this is a README update) then just bail.
if [[ -z "$(git status --porcelain)" ]]; then
echo "No changes to the output on this push; exiting."
exit 0
fi

# Commit the "changes", i.e. the new version.
# The delta will show diffs between new and old versions.
git add --all .
git commit -m "Deploy to GitHub Pages: ${SHA}"

# Now that we're all set up, we can push.
git push $SSH_REPO $TARGET_BRANCH
bash
3 changes: 1 addition & 2 deletions document/web-api/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ NAME = WebAssembly
.PHONY: all
all:
mkdir -p $(BUILDDIR)/html
# TODO(littledan): remove dummy and properly build into $(BUILDDIR)/html
touch $(BUILDDIR)/html/index.html
curl https://api.csswg.org/bikeshed/ -F [email protected] > $(BUILDDIR)/html/index.html
@echo "Build finished. The HTML pages are in `pwd`/$(BUILDDIR)/html."

.PHONY: publish
Expand Down
2 changes: 1 addition & 1 deletion document/web-api/index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Shortname: wasmweb
Group: WebAssembly CG
Status: w3c/CG-DRAFT
Level: 1
ED: https://webassembly.github.io/spec/web/
ED: https://webassembly.github.io/spec/web-api/
Editor: WebAssembly Community Group
Repository: WebAssembly/spec
Abstract: This document describes the integration of WebAssembly with the broader web platform.
Expand Down

0 comments on commit bb329a6

Please sign in to comment.