blob: 78183bf3b289c458a9884bc7cd7a4e3976138b5f [file] [log] [blame]
#!/usr/bin/env bash
set -eu -o pipefail
# -e: exits if a command fails
# -u: errors if an variable is referenced before being set
# -o pipefail: causes a pipeline to produce a failure return code if any command errors
readonly PACKAGES=${@:?"No package names specified"}
readonly RULES_NODEJS_DIR=$(cd $(dirname "$0")/..; pwd)
readonly PACKAGES_DIR="${RULES_NODEJS_DIR}/packages"
readonly DIST_DIR="${RULES_NODEJS_DIR}/dist"
echo_and_run() { echo "+ $@" ; "$@" ; }
for package in ${PACKAGES[@]} ; do
(
readonly DEST_DIR="${DIST_DIR}/npm_bazel_${package}"
# Build npm package
cd "${PACKAGES_DIR}/${package}"
printf "\n\nBuilding package ${package} //:npm_package\n"
${RULES_NODEJS_DIR}/scripts/check_deps.sh
echo_and_run bazel build --workspace_status_command=../../scripts/current_version.sh //:npm_package
# Copy the npm_package to /dist
echo "Copying npm package to ${DEST_DIR}"
rm -rf ${DEST_DIR}
mkdir -p ${DIST_DIR}
readonly BAZEL_BIN=$(bazel info bazel-bin)
echo_and_run cp -R "${BAZEL_BIN}/npm_package" ${DEST_DIR}
chmod -R u+w ${DEST_DIR}
# Touch downstream package.json that depend on this package
${RULES_NODEJS_DIR}/scripts/touch_deps.sh ${package}
)
done