roll_closure_compiler 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #!/bin/bash
  2. # Copyright 2014 The Chromium Authors. All rights reserved.
  3. # Use of this source code is governed by a BSD-style license that can be
  4. # found in the LICENSE file.
  5. #
  6. # Download the newest version of Closure Compiler (pre-compiled), and put into
  7. # Chrome source tree. Also download latest versions of various externs files.
  8. readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  9. readonly TEMP_DIR=$(mktemp -d)
  10. readonly EXTERNS_NPM_DIR="node_modules/google-closure-compiler/contrib/externs"
  11. readonly EXTERNS_DIR="${SCRIPT_DIR}/externs"
  12. readonly README="${SCRIPT_DIR}/README.chromium"
  13. cleanup() {
  14. rm -rf "${TEMP_DIR}"
  15. }
  16. get_sha1() {
  17. sha1sum "$1" | cut -d" " -f1
  18. }
  19. trap cleanup SIGINT SIGHUP SIGTERM
  20. old_chrome_sha1=$(get_sha1 "${EXTERNS_DIR}/chrome.js")
  21. old_extensions_sha1=$(get_sha1 "${EXTERNS_DIR}/chrome_extensions.js")
  22. old_polymer_sha1=$(get_sha1 "${EXTERNS_DIR}/polymer-1.0.js")
  23. old_mocha_sha1=$(get_sha1 "${EXTERNS_DIR}/mocha-2.5.js")
  24. cd "${TEMP_DIR}"
  25. # Check if NPM is installed.
  26. command -v npm >/dev/null 2>&1 || {
  27. echo >&2 "NPM is required to run this script. Aborting.";
  28. exit 1;
  29. }
  30. echo "Downloading Closure Compiler latest..."
  31. npm install --prefix . --no-bin-links --only=prod google-closure-compiler
  32. json_file=node_modules/google-closure-compiler-java/package.json
  33. new_version=$(cat $json_file | grep version | cut -f2 -d ":" | tr -d '" ')
  34. new_date="$(date --utc '+%Y/%m/%d %H:%M')"
  35. jar_file=node_modules/google-closure-compiler-java/compiler.jar
  36. cp "${jar_file}" "${SCRIPT_DIR}/compiler/compiler.jar"
  37. readonly WARNING="$(cat <<EOT
  38. // SSSSSSSSSSSSSSS TTTTTTTTTTTTTTTTTTTTTTT OOOOOOOOO PPPPPPPPPPPPPPPPP
  39. // SS:::::::::::::::ST:::::::::::::::::::::T OO:::::::::OO P::::::::::::::::P
  40. // S:::::SSSSSS::::::ST:::::::::::::::::::::T OO:::::::::::::OO P::::::PPPPPP:::::P
  41. // S:::::S SSSSSSST:::::TT:::::::TT:::::TO:::::::OOO:::::::OPP:::::P P:::::P
  42. // S:::::S TTTTTT T:::::T TTTTTTO::::::O O::::::O P::::P P:::::P
  43. // S:::::S T:::::T O:::::O O:::::O P::::P P:::::P
  44. // S::::SSSS P::::PPPPPP:::::P
  45. // SS::::::SSSSS This file is generated. To update it, P:::::::::::::PP
  46. // SSS::::::::SS run roll_closure_compiler. P::::PPPPPPPPP
  47. // SSSSSS::::S P::::P
  48. // S:::::S T:::::T O:::::O O:::::O P::::P
  49. // S:::::S T:::::T O::::::O O::::::O P::::P
  50. // SSSSSSS S:::::S TT:::::::TT O:::::::OOO:::::::OPP::::::PP
  51. // S::::::SSSSSS:::::S T:::::::::T OO:::::::::::::OO P::::::::P
  52. // S:::::::::::::::SS T:::::::::T OO:::::::::OO P::::::::P
  53. // SSSSSSSSSSSSSSS TTTTTTTTTTT OOOOOOOOO PPPPPPPPPP
  54. EOT
  55. )"
  56. (echo "${WARNING}" && cat ${EXTERNS_NPM_DIR}/chrome.js) > "${EXTERNS_DIR}/chrome.js"
  57. (echo "${WARNING}" && cat ${EXTERNS_NPM_DIR}/chrome_extensions.js) > "${EXTERNS_DIR}/chrome_extensions.js"
  58. (echo "${WARNING}" && cat ${EXTERNS_NPM_DIR}/polymer-1.0.js) > "${EXTERNS_DIR}/polymer-1.0.js"
  59. (echo "${WARNING}" && cat ${EXTERNS_NPM_DIR}/mocha-2.5.js) > "${EXTERNS_DIR}/mocha-2.5.js"
  60. # Apply local Chromium patch.
  61. cd "${SCRIPT_DIR}"
  62. git apply chromium_patch.diff
  63. new_chrome_sha1=$(get_sha1 "${EXTERNS_DIR}/chrome.js")
  64. if [[ "${new_chrome_sha1}" != "${old_chrome_sha1}" ]]; then
  65. chrome_range="chrome.js: ${old_chrome_sha1} -> ${new_chrome_sha1}"
  66. fi
  67. new_extensions_sha1=$(get_sha1 "${EXTERNS_DIR}/chrome_extensions.js")
  68. if [[ "${new_extensions_sha1}" != "${old_extensions_sha1}" ]]; then
  69. extensions_range="chrome_extensions.js: ${old_extensions_sha1} -> ${new_extensions_sha1}"
  70. fi
  71. new_polymer_sha1=$(get_sha1 "${EXTERNS_DIR}/polymer-1.0.js")
  72. if [[ "${new_polymer_sha1}" != "${old_polymer_sha1}" ]]; then
  73. polymer_range="polymer-1.0.js: ${old_polymer_sha1} -> ${new_polymer_sha1}"
  74. fi
  75. new_mocha_sha1=$(get_sha1 "${EXTERNS_DIR}/mocha-2.5.js")
  76. if [[ "${new_mocha_sha1}" != "${old_mocha_sha1}" ]]; then
  77. mocha_range="mocha-2.5.js: ${old_mocha_sha1} -> ${new_mocha_sha1}"
  78. fi
  79. echo
  80. echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
  81. echo "@"
  82. echo "@ ROLL RESULTS:"
  83. echo "@"
  84. echo "@ closure-compiler-latest.zip version:"
  85. echo "@ Old: ${old_version}"
  86. echo "@ New: ${new_version}"
  87. echo "@"
  88. echo "@ externs/chrome.js SHA1:"
  89. echo "@ Old: ${old_chrome_sha1}"
  90. echo "@ New: ${new_chrome_sha1}"
  91. echo "@"
  92. echo "@ externs/chrome_extensions.js SHA1:"
  93. echo "@ Old: ${old_extensions_sha1}"
  94. echo "@ New: ${new_extensions_sha1}"
  95. echo "@"
  96. echo "@ externs/polymer-1.0.js SHA1:"
  97. echo "@ Old: ${old_polymer_sha1}"
  98. echo "@ New: ${new_polymer_sha1}"
  99. echo "@"
  100. echo "@ externs/mocha-2.5.js SHA1:"
  101. echo "@ Old: ${old_mocha_sha1}"
  102. echo "@ New: ${new_mocha_sha1}"
  103. echo "@"
  104. echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
  105. echo
  106. sed -i "s,^Date: .*,Date: ${new_date},; s,^Version: .*,Version: ${new_version}," "${README}"
  107. echo "git commit -a -m 'Roll closure compiler"
  108. echo
  109. if [[ ! -z "${chrome_range}" ]]; then echo "${chrome_range}"; fi
  110. if [[ ! -z "${extensions_range}" ]]; then echo "${extensions_range}"; fi
  111. if [[ ! -z "${polymer_range}" ]]; then echo "${polymer_range}"; fi
  112. if [[ ! -z "${mocha_range}" ]]; then echo "${mocha_range}"; fi
  113. echo
  114. echo "TBR="
  115. echo "BUG='"
  116. echo
  117. echo "git cl upload"
  118. cleanup