#!/bin/bash

# Copyright 2017 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.

# Script for updating WebUI's NPM deps.
#  1) Update package.json file to point to the desired version.
#  2) Run this script.
#  3) Upload the compressed node_modules.tar.gz file to the Google Storage
#     bucket (commands to upload binaries are printed at step 2).
#  4) Land a CL with the changes generated by this script.

set -eu
cd "$(dirname "$0")"

rm -rf node_modules

npm install --no-bin-links --only=prod

# Apply local patch to polymer-bundler.
patch -d node_modules/polymer-bundler/ -p1 < chromium_polymer_bundler.patch

rsync -c --delete -r -q --exclude-from="npm_exclude.txt" \
      --prune-empty-dirs "node_modules/" "node_modules_filtered/"

echo -e "\n---------------------------------------------------------"
echo "Before filtering:" size: $(du -h node_modules/ | tail -n1 | cut -f1) ", files: " $(find node_modules/ -type f | wc -l)
rm -r node_modules
mv node_modules_filtered node_modules

echo "After filtering:" size: $(du -h node_modules/ | tail -n1 | cut -f1) ", files: " $(find node_modules/ -type f | wc -l)

tar cfz node_modules.tar.gz node_modules
echo "After compressing:" size: $(du -h node_modules.tar.gz | tail -n1 | cut -f1)

sha1="$(sha1sum node_modules.tar.gz | cut -d ' ' -f1)"
echo "${sha1}" > node_modules.tar.gz.sha1
echo "Please run the following manually to update Google Storage bucket:"
echo "> gsutil.py cp node_modules.tar.gz gs://chromium-nodejs/${sha1}"
echo "DONE"
echo -e "---------------------------------------------------------"
