| #!/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 |