Files
angular__angular/scripts/bazel/build-packages.sh
T
Jeremy Elbourn 4211b39669 build(bazel): create script to run on top of ng_package output (#10776)
* build(bazel): create script to run on top of ng_package output

* Use bazel query to get targets and use ng_package replacements attr
2018-04-09 17:19:28 -07:00

38 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# Exit if any of the builds fails
set -e
# Source directories for packages to build with bazel and copy into dist/
# We use the bazel tag "publish" as a marker for rules we care about here.
packages=$(bazel query --output=package 'attr(tags, publish, ...)' | xargs -n1 basename)
# The bazel-bin directory where the bazel output is written
bazel_bin="$(bazel info bazel-bin)"
# The dist/ directory where we want to copy the final result. Clear it out to avoid
# any artifacts from earlier builds being retained.
packages_dist="./dist/bazel-packages"
rm -rf ${packages_dist}
mkdir -p ${packages_dist}
for p in ${packages[@]}
do
bazel build src/${p}:npm_package
# The output for "lib" should go into a directory named "material"
[[ ${p} = "lib" ]] && out_dir="material" || out_dir="${p}"
# Copy without preserving the read-only mode from bazel so that we can make final modifications
# to the generated package.
mkdir -p ${packages_dist}/${out_dir}
cp -r --no-preserve=mode ${bazel_bin}/src/${p}/npm_package/* ${packages_dist}/${out_dir}
done
# Update the root @angular/material metadata file to re-export metadata from each entry-point.
./scripts/bazel/update-material-metadata-reexports.js
# Create a tgz for each package with `npm pack`. Change directory in a subshell because
# `npm pack` always outputs to the current working directory.
(cd ${packages_dist} ; find . -maxdepth 1 -mindepth 1 -type d | xargs npm pack)