playwright/utils/publish_all_packages.sh
2020-03-02 18:53:57 -08:00

89 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
set -e
set -x
trap "cd $(pwd -P)" EXIT
cd "$(dirname $0)"
if [[ $1 == "--help" ]]; then
echo "usage: $(basename $0) [--release|--tip-of-tree]"
echo
echo "Publishes all packages."
echo
echo "--release publish @latest version of all packages"
echo "--tip-of-tree publish @next version of all packages"
exit 1
fi
if [[ $# < 1 ]]; then
echo "Please specify either --release or --tip-of-tree"
exit 1
fi
if ! command -v npm >/dev/null; then
echo "ERROR: NPM is not found"
exit 1
fi
if [[ (-n $CI) && (-n $NPM_AUTH_TOKEN) ]]; then
echo "//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}" > $HOME/.npmrc
fi
if ! npm whoami >/dev/null 2>&1; then
echo "ERROR: NPM failed to log in"
exit 1
fi
UPSTREAM_SHA=$(git ls-remote https://github.com/microsoft/playwright --tags master | cut -f1)
CURRENT_SHA=$(git rev-parse HEAD)
if [[ "${UPSTREAM_SHA}" != "${CURRENT_SHA}" ]]; then
echo "REFUSING TO PUBLISH: this is not tip-of-tree"
exit 1
fi
cd ..
if [[ $1 == "--release" ]]; then
if [[ -n $CI ]]; then
echo "Found \$CI env - cannot publish real release from CI"
exit 1
fi
if [[ -n $(git status -s) ]]; then
echo "ERROR: git status is dirty; some uncommitted changes or untracked files"
exit 1
fi
VERSION=$(node -e 'console.log(require("./package.json").version)')
echo -n "Publish Playwright v${VERSION} (y/N)? "
read ANSWER
if [[ "$ANSWER" != "y" ]]; then
echo "Bailing out."
exit 1
fi
npm run clean
npm publish .
npm publish packages/playwright-firefox
npm publish packages/playwright-webkit
npm publish packages/playwright-chromium
npm publish packages/playwright
echo "Done."
elif [[ $1 == "--tip-of-tree" ]]; then
if [[ -z $CI ]]; then
echo "Did not find \$CI env - cannot publish tip-of-tree release not from CI"
exit 1
fi
# We don't do `npm run clean` here since travis deploy will remove node
# modules, and our `npm run clean` relies on `rimraf` to be installed.
npm publish . --tag="next"
npm publish packages/playwright-firefox --tag="next"
npm publish packages/playwright-webkit --tag="next"
npm publish packages/playwright-chromium --tag="next"
npm publish packages/playwright --tag="next"
echo "Done."
else
echo "unknown argument - '$1'"
exit 1
fi