language: node_js
node_js:
- "4"
- "stable"
sudo: false
cache:
  directories:
  - node_modules
before_install:
# Install the most up to date scratch-* dependencies
- rm -rf node_modules/scratch-*
after_script:
- |
  # RELEASE_BRANCHES and NPM_TOKEN defined in Travis settings panel
  declare exitCode
  $(npm bin)/travis-after-all
  exitCode=$?
  if [[
    # Execute after all jobs finish successfully
    $exitCode = 0 &&
    # Only release on release branches
    $RELEASE_BRANCHES =~ $TRAVIS_BRANCH &&
    # Don't release on PR builds
    $TRAVIS_PULL_REQUEST = "false"
  ]]; then
    # Authenticate NPM
    echo "//registry.npmjs.org/:_authToken=\${NPM_TOKEN}" > .npmrc
    # Set version to timestamp
    npm --no-git-tag-version version $($(npm bin)/json -f package.json version)-prerelease.$(date +%s)
    npm publish
    # Publish to gh-pages as most recent committer
    git config --global user.email $(git log --pretty=format:"%ce" -n1)
    git config --global user.name $(git log --pretty=format:"%cn" -n1)
    ./node_modules/.bin/gh-pages -x -r https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git -d playground -m "Build for $(git log --pretty=format:%H)"
  fi