#!/bin/bash # # type check, do a release build, then do a shallow clone of the # repository into a temporary directory and copy the release build # artifacts into there to commit & push to the gh-pages branch # Fail on first error set -e OUTDIR=`pwd`/dist/release echo $OUTDIR # Typecheck node_modules/.bin/tsc --noEmit # Clean out the release directory rm -rf "$OUTDIR" mkdir -p "$OUTDIR" # Place info about the current commit into the build dir to easiy identify releases date > "$OUTDIR"/release.txt git rev-parse HEAD >> "$OUTDIR"/release.txt # Build the compiled assets node_modules/.bin/parcel build index.html --out-dir "$OUTDIR" --public-url /speedscope/ --detailed-report # Create a shallow clone of the repository TMPDIR=`mktemp -d -t speedscope-release` echo "Entering $TMPDIR" pushd "$TMPDIR" git clone --depth 1 git@github.com:jlfwong/speedscope.git -b gh-pages # Copy the build artifacts into the shallow clone pushd speedscope rm -rf * cp -R "$OUTDIR"/* . popd # Set up a handler to run on Ctrl+C trap ctrl_c INT function ctrl_c() { read -p "Commit release? [yes/no]: " if [[ $REPLY =~ ^yes$ ]] then pushd speedscope git add --all git commit -m 'Release' git push origin HEAD:gh-pages popd popd rm -rf "$TMPDIR" exit 0 else echo "Aborting release." popd rm -rf "$TMPDIR" exit 1 fi } # Start a local server for verification of the build echo echo echo "Build complete. Starting server on http://localhost:4444/speedscope/" echo "Hit Ctrl+C to complete or cancel the release" echo echo python -m SimpleHTTPServer 4444 .