| #!/bin/bash | 
 | # Copyright 2014 The Chromium Authors | 
 | # 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_NPM_DIR="node_modules/google-closure-compiler/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") | 
 | old_mocha_sha1=$(get_sha1 "${EXTERNS_DIR}/mocha-2.5.js") | 
 |  | 
 | cd "${TEMP_DIR}" | 
 |  | 
 | # Check if NPM is installed. | 
 | command -v npm >/dev/null 2>&1 || { | 
 |   echo >&2 "NPM is required to run this script. Aborting."; | 
 |   exit 1; | 
 | } | 
 |  | 
 | echo "Downloading Closure Compiler latest..." | 
 | npm install --prefix . --no-bin-links --only=prod google-closure-compiler | 
 |  | 
 | json_file=node_modules/google-closure-compiler-java/package.json | 
 | new_version=$(cat $json_file | grep version | cut -f2 -d ":" | tr -d '" ') | 
 | new_date="$(date --utc '+%Y/%m/%d %H:%M')" | 
 |  | 
 | jar_file=node_modules/google-closure-compiler-java/compiler.jar | 
 | cp "${jar_file}" "${SCRIPT_DIR}/compiler/compiler.jar" | 
 |  | 
 | 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 ${EXTERNS_NPM_DIR}/chrome.js) > "${EXTERNS_DIR}/chrome.js" | 
 | (echo "${WARNING}" && cat ${EXTERNS_NPM_DIR}/chrome_extensions.js) > "${EXTERNS_DIR}/chrome_extensions.js" | 
 | (echo "${WARNING}" && cat ${EXTERNS_NPM_DIR}/polymer-1.0.js) > "${EXTERNS_DIR}/polymer-1.0.js" | 
 | (echo "${WARNING}" && cat ${EXTERNS_NPM_DIR}/mocha-2.5.js) > "${EXTERNS_DIR}/mocha-2.5.js" | 
 |  | 
 | # Apply local Chromium patch. | 
 | cd "${SCRIPT_DIR}" | 
 | git apply chromium_patch.diff | 
 |  | 
 | 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 | 
 |  | 
 | new_mocha_sha1=$(get_sha1 "${EXTERNS_DIR}/mocha-2.5.js") | 
 | if [[ "${new_mocha_sha1}" != "${old_mocha_sha1}" ]]; then | 
 |   mocha_range="mocha-2.5.js: ${old_mocha_sha1} -> ${new_mocha_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 "@  externs/mocha-2.5.js SHA1:" | 
 | echo "@    Old: ${old_mocha_sha1}" | 
 | echo "@    New: ${new_mocha_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 | 
 | if [[ ! -z "${mocha_range}" ]]; then echo "${mocha_range}"; fi | 
 | echo | 
 | echo "TBR=" | 
 | echo "BUG='" | 
 | echo | 
 | echo "git cl upload" | 
 |  | 
 | cleanup |