blob: 8f023138ef83392e01e76f805eaae8ba10286507 [file] [log] [blame]
#!/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