Skip to content

Commit

Permalink
OSS: update Podfile.lock automatically when bumping release version
Browse files Browse the repository at this point in the history
Summary:
To ensure consistency of RNTester Podfile.lock:
* introduce a script to run `pod install` on the current commit
* have the script check the exact CocoaPods version to use for consistency
* have version bump script run this automatically to keep it up-to-date with the version change

To validate, have this change in `0.66-stable` branch, then try:

```
./scripts/bump-oss-version.js 0.66.0-rc.5
```

This automatically ran `pod install` which produced the Podfile.lock update.

Changelog: [Internal]

Reviewed By: TheSavior

Differential Revision: D31132867

fbshipit-source-id: 1c82653ca0cfc5471ed2c5091c09648a7acbab90
  • Loading branch information
fkgozali committed Sep 23, 2021
1 parent 6b014e8 commit 9967318
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
11 changes: 11 additions & 0 deletions scripts/bump-oss-version.js
Expand Up @@ -32,6 +32,8 @@ let argv = yargs
}).argv;

const nightlyBuild = argv.nightly;
// Nightly builds don't need an update as main will already be up-to-date.
const updatePodfileLock = !nightlyBuild;

let version, branch;
if (nightlyBuild) {
Expand Down Expand Up @@ -152,6 +154,15 @@ if (
// Change react-native version in the template's package.json
exec(`node scripts/set-rn-template-version.js ${version}`);

if (updatePodfileLock) {
echo('Updating RNTester Podfile.lock...')
if (exec('source scripts/update_podfile_lock.sh && update_pods').code) {
echo('Failed to update RNTester Podfile.lock.');
echo('Fix the issue, revert and try again.');
exit(1);
}
}

// Verify that files changed, we just do a git diff and check how many times version is added across files
let numberOfChangedLinesWithNewVersion = exec(
`git diff -U0 | grep '^[+]' | grep -c ${version} `,
Expand Down
41 changes: 41 additions & 0 deletions scripts/update_podfile_lock.sh
@@ -0,0 +1,41 @@
#!/bin/bash
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.

# This script updates RNTester Podfile.lock after verifying the CocoaPods environment.
# Usage:
# source scripts/update_podfile_lock && update_pods

THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd)
RNTESTER_DIR="$THIS_DIR/../packages/rn-tester"

# Note: Keep in sync with FB internal.
REQUIRED_COCOAPODS_VERSION="1.10.1"

validate_env () {
# Check that CocoaPods is working.
if [ -z "$(command -v pod)" ]; then
echo "You need to install CocoaPods."
echo "See https://guides.cocoapods.org/using/getting-started.html#getting-started for instructions."
exit 1
fi

COCOAPODS_VERSION=$(pod --version)
if [[ "$COCOAPODS_VERSION" != "$REQUIRED_COCOAPODS_VERSION" ]];
then
echo "You must have CocoaPods $REQUIRED_COCOAPODS_VERSION installed; you have $COCOAPODS_VERSION."
echo "Installing via gem is recommended:"
echo " sudo gem install cocoapods -v $REQUIRED_COCOAPODS_VERSION"
exit 1
fi
}

update_pods () {
validate_env

cd "$RNTESTER_DIR" || exit
pod install
cd "$THIS_DIR" || exit
}

0 comments on commit 9967318

Please sign in to comment.