#!/bin/sh HOST="${HOST-localhost}" PORT="${PORT-12345}" RUNFILES=$(cd ${JAVA_RUNFILES-$0.runfiles}/%{workspace_name} && pwd -P) SOURCE_DIR="$RUNFILES/%{source_dir}" prod_dir="$RUNFILES/%{prod_dir}" bucket="%{bucket}" function serve() { TDIR=$(mktemp -d) RDIR=$(mktemp -d) trap "rm -fr $RDIR $TDIR" EXIT (cd $RDIR && \ jekyll serve --host "$HOST" --port "$PORT" -s "$SOURCE_DIR" -d "$TDIR") } function push() { # Get gsutil gs="${GSUTIL:-$(which gsutil 2>/dev/null || : )}" if [ ! -x "${gs}" ]; then echo "Please set GSUTIL to the path the gsutil binary." >&2 echo "gsutil (https://cloud.google.com/storage/docs/gsutil/) is the" >&2 echo "command-line interface to google cloud." >&2 exit 1 fi # Rsync: # -r: recursive # -c: compute checksum even though the input is from the filesystem # -d: remove deleted files cd "${prod_dir}" "${gs}" -m rsync -r -c -d . "gs://${bucket}" "${gs}" web set -m index.html -e 404.html "gs://${bucket}" "${gs}" -m acl ch -R -u AllUsers:R "gs://${bucket}" } case "${1-}" in --push) push ;; --serve|"") serve ;; *) echo "Usage: $0 [--push|--serve]" >&2 exit 1 ;; esac