| #!/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 |