mirror of
https://github.com/status-im/react-native.git
synced 2025-01-10 17:45:59 +00:00
1e32de0304
Summary: Thanks for submitting a PR! Please read these instructions carefully: Currently no subspecs are running on CI which causes us to find bugs in the podspec from time to time we upgrade master. In order to highlight errors for podspecs users when changes happen we should make sure to run all subspecs even though it might take a bit longer when running the CI Closes https://github.com/facebook/react-native/pull/14019 Differential Revision: D5079230 Pulled By: javache fbshipit-source-id: 7b3b5dba5ba147b1fc24e79299ed260f9fc6231b
63 lines
1.8 KiB
Bash
Executable File
63 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -ex
|
|
|
|
SCRIPTS=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
ROOT=$(dirname $SCRIPTS)
|
|
YOGA_ROOT="$ROOT/ReactCommon/yoga"
|
|
|
|
# Specify `SPEC_REPO` as an env variable if you want to push to a specific spec repo.
|
|
# Defaults to `react-test`, which is meant to be a dummy repo used to test that the specs fully lint.
|
|
: ${SPEC_REPO:="react-test"}
|
|
SPEC_REPO_DIR="$HOME/.cocoapods/repos/$SPEC_REPO"
|
|
|
|
# If the `SPEC_REPO` does not exist yet, assume this is purely for testing and create a dummy repo.
|
|
if ! [ -d "$SPEC_REPO_DIR" ]; then
|
|
mkdir -p "$SPEC_REPO_DIR"
|
|
cd "$SPEC_REPO_DIR"
|
|
echo "testing" > .gitkeep
|
|
git init
|
|
git add .gitkeep
|
|
git commit -m "init"
|
|
git remote add origin "https://example.com/$SPEC_REPO.git"
|
|
fi
|
|
|
|
cd "$SPEC_REPO_DIR"
|
|
SPEC_REPO_REMOTE=$(git remote get-url origin)
|
|
|
|
POD_LINT_OPT="--verbose --allow-warnings --fail-fast --private --swift-version=3.0 --sources=$SPEC_REPO_REMOTE"
|
|
|
|
# Get the version from a podspec.
|
|
version() {
|
|
ruby -rcocoapods-core -rjson -e "puts Pod::Specification.from_file('$1').version"
|
|
}
|
|
|
|
# Lint both framework and static library builds.
|
|
lint() {
|
|
pod lib lint $POD_LINT_OPT
|
|
pod lib lint $POD_LINT_OPT --use-libraries
|
|
}
|
|
|
|
# Push the spec in arg `$1`, which is expected to be in the cwd, to the `SPEC_REPO` in JSON format.
|
|
push() {
|
|
local SPEC_NAME=$1
|
|
local POD_NAME=$(basename $SPEC_NAME .podspec)
|
|
local SPEC_DIR="$SPEC_REPO_DIR/$POD_NAME/$(version $SPEC_NAME)"
|
|
local SPEC_PATH="$SPEC_DIR/$SPEC_NAME.json"
|
|
mkdir -p $SPEC_DIR
|
|
env INSTALL_YOGA_WITHOUT_PATH_OPTION=1 INSTALL_YOGA_FROM_LOCATION="$ROOT" pod ipc spec $SPEC_NAME > $SPEC_PATH
|
|
}
|
|
|
|
# Perform linting and publishing of podspec in cwd.
|
|
# Skip linting with `SKIP_LINT` if e.g. publishing to a private spec repo.
|
|
process() {
|
|
cd $1
|
|
if [ -z "$SKIP_LINT" ]; then
|
|
lint
|
|
fi
|
|
local SPEC_NAME=(*.podspec)
|
|
push $SPEC_NAME
|
|
}
|
|
|
|
process $YOGA_ROOT
|
|
process $ROOT
|