mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 09:57:02 +01:00
7e824fdc5e
Certain draft PRs that add new dependencies have been failing because CI will try to use the GitHub npm registry, which we use for preview builds. This registry does not have non-preview package versions, so the installation will fail if new non-preview dependencies are needed. CI has been updated to only use the GitHub npm registry when preview builds are detected in the manifest.
41 lines
1.4 KiB
Bash
Executable File
41 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
set -u
|
|
set -o pipefail
|
|
|
|
PR_NUMBER="${CIRCLE_PULL_REQUEST##*/}"
|
|
if [ -n "$PR_NUMBER" ]
|
|
then
|
|
IS_DRAFT="$(gh pr view --json isDraft --jq '.isDraft' "$PR_NUMBER")"
|
|
else
|
|
IS_DRAFT='false'
|
|
fi
|
|
|
|
# Build query to see whether there are any "preview-like" packages in the manifest
|
|
# A "preview-like" package is a `@metamask`-scoped package with a prerelease version that has no period.
|
|
QUERY='.dependencies + .devDependencies' # Get list of all dependencies
|
|
QUERY+=' | with_entries( select(.key | startswith("@metamask") ) )' # filter to @metamask-scoped packages
|
|
QUERY+=' | to_entries[].value' # Get version ranges
|
|
QUERY+=' | select(test("^\\d+\\.\\d+\\.\\d+-[^.]+$"))' # Get pinned versions where the prerelease part has no "."
|
|
|
|
# Use `-e` flag so that exit code indicates whether any matches were found
|
|
if jq -e "${QUERY}" < ./package.json
|
|
then
|
|
echo "Preview builds detected"
|
|
HAS_PREVIEW_BUILDS='true'
|
|
else
|
|
echo "No preview builds detected"
|
|
HAS_PREVIEW_BUILDS='false'
|
|
fi
|
|
|
|
if [[ $IS_DRAFT == 'true' && $HAS_PREVIEW_BUILDS == 'true' ]]
|
|
then
|
|
# Use GitHub registry on draft PRs, allowing the use of preview builds
|
|
echo "Installing with preview builds"
|
|
METAMASK_NPM_REGISTRY=https://npm.pkg.github.com yarn --immutable
|
|
else
|
|
echo "Installing without preview builds"
|
|
yarn --immutable
|
|
fi
|