#!/bin/bash # # Ensures the latest Chrome Canary is available, downloading it # if necessary. # # Directory ~/.chrome/canary can safely be cached as the existing # version will be checked before reusing a previously downloaded # canary. # set -eu readonly CHROME_SNAPSHOTS=https://storage.googleapis.com/chromium-browser-snapshots declare CHROME_URL declare CHROME_NAME declare CHROME_RELATIVE_BIN if [[ "$OSTYPE" == "linux"* ]]; then CHROME_URL=$CHROME_SNAPSHOTS/Linux_x64 CHROME_NAME=chrome-linux CHROME_RELATIVE_BIN=chrome elif [[ "$OSTYPE" == "darwin"* ]]; then CHROME_URL=$CHROME_SNAPSHOTS/Mac CHROME_NAME=chrome-mac CHROME_RELATIVE_BIN=Chromium.app/Contents/MacOS/Chromium elif [[ "$OSTYPE" == "cygwin" ]]; then CHROME_URL=$CHROME_SNAPSHOTS/Win CHROME_NAME=chrome-win32 CHROME_RELATIVE_BIN=chrome.exe else echo "Unknown platform: $OSTYPE" >&2 exit 1 fi readonly CHROME_CANARY_DIR=$HOME/.chrome/canary readonly CHROME_CANARY_BIN=$CHROME_CANARY_DIR/$CHROME_NAME/$CHROME_RELATIVE_BIN readonly CHROME_CANARY_REV_FILE=$CHROME_CANARY_DIR/VERSION readonly CHROME_REV=$(curl -s ${CHROME_URL}/LAST_CHANGE) function getCanary() { local existing_version="" if [[ -f $CHROME_CANARY_REV_FILE && -x $CHROME_CANARY_BIN ]]; then existing_version=`cat $CHROME_CANARY_REV_FILE` echo "Found cached Chrome Canary version: $existing_version" fi if [[ "$existing_version" != "$CHROME_REV" ]]; then echo "Downloading Chrome Canary version: $CHROME_REV" rm -fR $CHROME_CANARY_DIR mkdir -p $CHROME_CANARY_DIR local file=$CHROME_NAME.zip curl ${CHROME_URL}/${CHROME_REV}/$file -o $file unzip $file -d $CHROME_CANARY_DIR rm $file echo $CHROME_REV > $CHROME_CANARY_REV_FILE fi } getCanary >&2 echo $CHROME_CANARY_BIN