diff --git a/build.sh b/build.sh index 49b89d1c85ceb..505c8ef99d457 100755 --- a/build.sh +++ b/build.sh @@ -2,10 +2,11 @@ set -euo pipefail bail="--bail" +run_tests="true" while [[ "${1:-}" != "" ]]; do case $1 in -h|--help) - echo "Usage: build.sh [--no-bail] [--force|-f]" + echo "Usage: build.sh [--no-bail] [--force|-f] [--skip-test]" exit 1 ;; --no-bail) @@ -14,6 +15,9 @@ while [[ "${1:-}" != "" ]]; do -f|--force) export CDK_BUILD="--force" ;; + --skip-test|--skip-tests) + run_tests="false" + ;; *) echo "Unrecognized parameter: $1" exit 1 @@ -47,8 +51,10 @@ echo "========================================================================== echo "building..." time lerna run $bail --stream build || fail -echo "=============================================================================================" -echo "testing..." -lerna run $bail --stream test || fail +if $run_tests; then + echo "=============================================================================================" + echo "testing..." + lerna run $bail --stream test || fail +fi touch $BUILD_INDICATOR diff --git a/scripts/fix-peer-deps.sh b/scripts/fix-peer-deps.sh index e62ce6ebab684..b5d16bd738c9a 100644 --- a/scripts/fix-peer-deps.sh +++ b/scripts/fix-peer-deps.sh @@ -1,3 +1,16 @@ #!/bin/bash set -euo pipefail -lerna exec "$PWD/tools/cdk-build-tools/node_modules/.bin/jsii-fix-peers 2>/dev/null || true" \ No newline at end of file + +if [ ! -f lerna.json ]; then + echo "This script should be run from the root of the repo." + exit 1 +fi + +# first, we need to make sure that all existing peer dependencies are aligned to the "dependency" version +find . -name package.json | grep -v node_modules | xargs node scripts/sync-peer-deps.js + +# must build first so .jsii is aligned +/bin/bash ./build.sh --skip-tests + +# now, run jsii-fix-peers to add all missing peers based on the jsii spec +lerna exec "$PWD/tools/cdk-build-tools/node_modules/.bin/jsii-fix-peers 2>/dev/null || true" diff --git a/scripts/sync-peer-deps.js b/scripts/sync-peer-deps.js new file mode 100644 index 0000000000000..431221d73dc7d --- /dev/null +++ b/scripts/sync-peer-deps.js @@ -0,0 +1,25 @@ +// +// align versions of "peerDependencies" and "dependencies" for a given set of package.json files +// usage: node sync-peer-deps.js package.json pacakge.json ... +// +const fs = require('fs'); + +for (const file of process.argv.splice(2)) { + const pkg = JSON.parse(fs.readFileSync(file).toString()); + const deps = pkg.dependencies || { }; + let updated = false; + if (pkg.peerDependencies) { + for (const dep of Object.keys(pkg.peerDependencies)) { + const version = deps[dep]; + const peerVersion = pkg.peerDependencies[dep]; + if (version && version !== peerVersion) { + pkg.peerDependencies[dep] = version; + updated = true; + } + } + } + if (updated) { + console.log('updated:', file); + fs.writeFileSync(file, JSON.stringify(pkg, undefined, 2)); + } +} \ No newline at end of file