blob: 8bd84d579e8c89bf0ee1b9c182fa70041dfe32ca [file] [log] [blame]
#!/bin/bash
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Download the newest version of Closure Compiler (pre-compiled), and put into
# Chrome source tree. Also download latest versions of various externs files.
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly TEMP_DIR=$(mktemp -d)
readonly EXTERNS_DIR_URL="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs"
readonly EXTERNS_DIR="${SCRIPT_DIR}/externs"
readonly README="${SCRIPT_DIR}/README.chromium"
cleanup() {
rm -rf "${TEMP_DIR}"
}
get_sha1() {
sha1sum "$1" | cut -d" " -f1
}
trap cleanup SIGINT SIGHUP SIGTERM
old_chrome_sha1=$(get_sha1 "${EXTERNS_DIR}/chrome.js")
old_extensions_sha1=$(get_sha1 "${EXTERNS_DIR}/chrome_extensions.js")
old_polymer_sha1=$(get_sha1 "${EXTERNS_DIR}/polymer-1.0.js")
cd "${TEMP_DIR}"
echo "Downloading Closure Compiler latest..."
wget https://dl.google.com/closure-compiler/compiler-latest.zip
unzip compiler-latest.zip
jar_file=$(basename $(find . -name '*.jar'))
new_version=$(basename $(echo ${jar_file} | cut -f3 -d-) .jar)
new_date="$(date --utc '+%Y/%m/%d %H:%M')"
cp "${jar_file}" "${SCRIPT_DIR}/compiler/compiler.jar"
wget ${EXTERNS_DIR_URL}/chrome.js
wget ${EXTERNS_DIR_URL}/chrome_extensions.js
wget ${EXTERNS_DIR_URL}/polymer-1.0.js
readonly WARNING="$(cat <<EOT
// SSSSSSSSSSSSSSS TTTTTTTTTTTTTTTTTTTTTTT OOOOOOOOO PPPPPPPPPPPPPPPPP
// SS:::::::::::::::ST:::::::::::::::::::::T OO:::::::::OO P::::::::::::::::P
// S:::::SSSSSS::::::ST:::::::::::::::::::::T OO:::::::::::::OO P::::::PPPPPP:::::P
// S:::::S SSSSSSST:::::TT:::::::TT:::::TO:::::::OOO:::::::OPP:::::P P:::::P
// S:::::S TTTTTT T:::::T TTTTTTO::::::O O::::::O P::::P P:::::P
// S:::::S T:::::T O:::::O O:::::O P::::P P:::::P
// S::::SSSS P::::PPPPPP:::::P
// SS::::::SSSSS This file is generated. To update it, P:::::::::::::PP
// SSS::::::::SS run roll_closure_compiler. P::::PPPPPPPPP
// SSSSSS::::S P::::P
// S:::::S T:::::T O:::::O O:::::O P::::P
// S:::::S T:::::T O::::::O O::::::O P::::P
// SSSSSSS S:::::S TT:::::::TT O:::::::OOO:::::::OPP::::::PP
// S::::::SSSSSS:::::S T:::::::::T OO:::::::::::::OO P::::::::P
// S:::::::::::::::SS T:::::::::T OO:::::::::OO P::::::::P
// SSSSSSSSSSSSSSS TTTTTTTTTTT OOOOOOOOO PPPPPPPPPP
EOT
)"
(echo "${WARNING}" && cat chrome.js) > "${EXTERNS_DIR}/chrome.js"
(echo "${WARNING}" && cat chrome_extensions.js) > "${EXTERNS_DIR}/chrome_extensions.js"
(echo "${WARNING}" && cat polymer-1.0.js) > "${EXTERNS_DIR}/polymer-1.0.js"
new_chrome_sha1=$(get_sha1 "${EXTERNS_DIR}/chrome.js")
if [[ "${new_chrome_sha1}" != "${old_chrome_sha1}" ]]; then
chrome_range="chrome.js: ${old_chrome_sha1} -> ${new_chrome_sha1}"
fi
new_extensions_sha1=$(get_sha1 "${EXTERNS_DIR}/chrome_extensions.js")
if [[ "${new_extensions_sha1}" != "${old_extensions_sha1}" ]]; then
extensions_range="chrome_extensions.js: ${old_extensions_sha1} -> ${new_extensions_sha1}"
fi
new_polymer_sha1=$(get_sha1 "${EXTERNS_DIR}/polymer-1.0.js")
if [[ "${new_polymer_sha1}" != "${old_polymer_sha1}" ]]; then
polymer_range="polymer-1.0.js: ${old_polymer_sha1} -> ${new_polymer_sha1}"
fi
echo
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
echo "@"
echo "@ ROLL RESULTS:"
echo "@"
echo "@ closure-compiler-latest.zip version:"
echo "@ Old: ${old_version}"
echo "@ New: ${new_version}"
echo "@"
echo "@ externs/chrome.js SHA1:"
echo "@ Old: ${old_chrome_sha1}"
echo "@ New: ${new_chrome_sha1}"
echo "@"
echo "@ externs/chrome_extensions.js SHA1:"
echo "@ Old: ${old_extensions_sha1}"
echo "@ New: ${new_extensions_sha1}"
echo "@"
echo "@ externs/polymer-1.0.js SHA1:"
echo "@ Old: ${old_polymer_sha1}"
echo "@ New: ${new_polymer_sha1}"
echo "@"
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
echo
sed -i "s,^Date: .*,Date: ${new_date},; s,^Version: .*,Version: ${new_version}," "${README}"
echo "git commit -a -m 'Roll closure compiler"
echo
if [[ ! -z "${chrome_range}" ]]; then echo "${chrome_range}"; fi
if [[ ! -z "${extensions_range}" ]]; then echo "${extensions_range}"; fi
if [[ ! -z "${polymer_range}" ]]; then echo "${polymer_range}"; fi
echo
echo "TBR="
echo "BUG='"
echo
echo "git cl upload"
cleanup