blob: 715b5a0409ba10c82930eede3ad0df2b79dab931 [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
echo_and_run() { echo "+ $@" ; "$@" ; }
VERSION=${1:-latest}
readonly workspaceRoots=("e2e" "examples")
for workspaceRoot in ${workspaceRoots[@]} ; do
(
readonly workspaceFiles=($(find ./${workspaceRoot} -type f -name WORKSPACE -prune -maxdepth 2))
echo "workspace files: ${workspaceFiles[@]}"
for workspaceFile in ${workspaceFiles[@]} ; do
workspaceDir=$(dirname ${workspaceFile})
if [ ${workspaceDir} == "./examples/vue" ]; then
# vue 'npm ci' has issues but there are no deps there so we skip it for now
continue
fi
(
printf "\n============================================\nupdating ${workspaceDir}\n============================================\n\n"
cd ${workspaceDir}
readonly packages=$(cat package.json | grep \"@bazel/ | awk -F: '{ print $1 }' | sed 's/[",]//g' | tr -d ' ')
if [ -f "./yarn.lock" ]; then
printf "updating ${workspaceDir}/yarn.lock\n"
echo_and_run rm -rf node_modules
# `yarn install` will not update stale deps so we also need to run
# `yarn install @bazel/foobar@${VERSION}` for each package in the @bazel
# scope
echo_and_run npx yarn install --ignore-scripts
for package in ${packages[@]} ; do
echo_and_run npx yarn add ${package}@${VERSION} --ignore-scripts
done
fi
if [ -f "./package-lock.json" ]; then
printf "updating ${workspaceDir}/package-lock.json\n"
echo_and_run rm -rf node_modules
# `npm ci` will not update stale deps so we also need to run
# `npm install @bazel/foobar@${VERSION}` for each package in the @bazel
# scope
echo_and_run npm ci
for package in ${packages[@]} ; do
echo_and_run npm install ${package}@${VERSION}
done
fi
echo_and_run rm -rf node_modules
)
done
)
done