From 53672efe1950f8e72cedc61e619898b0e91c1f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ramos?= <165856+hramos@users.noreply.github.com> Date: Fri, 12 Oct 2018 14:15:06 -0700 Subject: [PATCH] Enforce lockfile is kept up to date (#21739) --- scripts/circleci/validate_yarn_lockfile.sh | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 scripts/circleci/validate_yarn_lockfile.sh diff --git a/scripts/circleci/validate_yarn_lockfile.sh b/scripts/circleci/validate_yarn_lockfile.sh new file mode 100755 index 00000000000..5626dd9567b --- /dev/null +++ b/scripts/circleci/validate_yarn_lockfile.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Abort the mission if any command fails +set -e + +# Allow the script to be invoked from various environments +if [[ -z "${OVERRIDE_YARN_BINARY}" ]]; then + YARN_BINARY=$(command -v yarn) +else + YARN_BINARY="${OVERRIDE_YARN_BINARY}" +fi + +REACT_NATIVE_TEMP_DIR=$(mktemp -d /tmp/react-native-XXXXXXXX) + +function cleanup { + set +e + rm -rf "$REACT_NATIVE_TEMP_DIR" + set -e +} + +function msg { + echo -e " " + echo -e "\\x1B[36m${1}\\x1B[0m"; + echo -e "\\x1B[36m${1//?/=}\\x1B[0m" +} + +trap cleanup EXIT + +cp -R ./package.json "$REACT_NATIVE_TEMP_DIR" +cp -R ./yarn.lock "$REACT_NATIVE_TEMP_DIR" +pushd "$REACT_NATIVE_TEMP_DIR" >/dev/null + +if ! $YARN_BINARY --ignore-scripts --silent --non-interactive --mutex network --frozen-lockfile; then + msg "Yarn validation failed." + echo "This means the package.json and yarn.lock disagree in some way." + echo "Try fixing it by running \`yarn\` and committing the changes." +fi + +popd >/dev/null