blob: 1b1feba846392ff966dc5d456fd8a6b46af36f78 [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.
# Reproduces the content of 'components' and 'components-chromium' using the
# list of dependencies from 'bower.json'. Downloads needed packages and makes
# Chromium specific modifications. To launch the script you need 'bower' and
# 'crisper' installed on your system.
check_dep() {
eval "$1" >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo >&2 "This script requires $2."
echo >&2 "Have you tried $3?"
exit 1
fi
}
check_dep "which npm" "npm" "visiting https://nodejs.org/en/"
check_dep "which bower" "bower" "npm install -g bower"
check_dep "which crisper" "crisper" "npm install -g crisper"
check_dep "which uglifyjs" "uglifyjs" "npm install -g uglifyjs"
check_dep "which rsync" "rsync" "apt-get install rsync"
check_dep "python -c 'import bs4'" "bs4" "apt-get install python-bs4"
set -e
pushd "$(dirname "$0")" > /dev/null
rm -rf components
rm -rf ../../web-animations-js/sources
bower install --no-color
rm components/*/.travis.yml
mv components/web-animations-js ../../web-animations-js/sources
cp ../../web-animations-js/sources/COPYING ../../web-animations-js/LICENSE
# Remove source mapping directives since we don't compile the maps.
sed -i 's/^\s*\/\/#\s*sourceMappingURL.*//' \
../../web-animations-js/sources/*.min.js
# These components are needed only for demos and docs.
rm -rf components/{hydrolysis,marked,marked-element,prism,prism-element,\
iron-component-page,iron-doc-viewer,webcomponentsjs}
# Test and demo directories aren't needed.
rm -rf components/*/{test,demo}
rm -rf components/polymer/explainer
# Remove promise-polyfill and components which depend on it.
rm -rf components/promise-polyfill
rm -rf components/iron-ajax
rm -rf components/iron-form
# Make checkperms.py happy.
find components/*/hero.svg -type f -exec chmod -x {} \;
find components/iron-selector -type f -exec chmod -x {} \;
# Remove carriage returns to make CQ happy.
find components -type f \( -name \*.html -o -name \*.css -o -name \*.js\
-o -name \*.md -o -name \*.sh -o -name \*.json -o -name \*.gitignore\
-o -name \*.bat -o -name \*.svg \) -print0 | xargs -0 sed -i -e $'s/\r$//g'
# Resolve a unicode encoding issue in dom-innerHTML.html.
NBSP=$(python -c 'print u"\u00A0".encode("utf-8")')
sed -i 's/['"$NBSP"']/\\u00A0/g' components/polymer/polymer-mini.html
./extract_inline_scripts.sh components components-chromium
# Remove import of external resource in font-roboto (fonts.googleapis.com)
# and apply additional chrome specific patches. NOTE: Where possible create
# a Polymer issue and/or pull request to minimize these patches.
patch -p1 --forward -r - < chromium.patch
new=$(git status --porcelain components-chromium | grep '^??' | \
cut -d' ' -f2 | egrep '\.(html|js|css)$' || true)
if [[ ! -z "${new}" ]]; then
echo
echo 'These files appear to have been added:'
echo "${new}" | sed 's/^/ /'
fi
deleted=$(git status --porcelain components-chromium | grep '^.D' | \
sed 's/^.//' | cut -d' ' -f2 | egrep '\.(html|js|css)$' || true)
if [[ ! -z "${deleted}" ]]; then
echo
echo 'These files appear to have been removed:'
echo "${deleted}" | sed 's/^/ /'
fi
if [[ ! -z "${new}${deleted}" ]]; then
echo
fi
echo 'Creating a summary of components...'
python create_components_summary.py > components_summary.txt
echo 'Creating GYP files for interfaces and externs...'
./generate_gyp.sh
echo 'Vulcanizing dependent UIs (i.e. downloads)...'
python ../../../chrome/browser/resources/md_downloads/vulcanize.py
popd > /dev/null
echo 'Searching for unused elements...'
"$(dirname "$0")"/find_unused_elements.py