Support projects that require pnpm

This commit is contained in:
Gordon Messmer 2025-10-22 13:40:43 -07:00
commit 5499f8cb3e

View file

@ -14,15 +14,68 @@ usage() {
exit 1
}
if ! [ -f /usr/bin/npm ]; then
echo >&2
echo "`basename $0` requires npm to run" >&2
echo >&2
echo "Run the following to fix this" >&2
echo " sudo dnf install npm" >&2
echo >&2
exit 2
fi
# Set to "npm" or "pnpm":
NPM=npm
require_npm() {
if ! [ -f /usr/bin/npm ]; then
echo >&2
echo "`basename $0` requires npm to run" >&2
echo >&2
echo "Run the following to fix this" >&2
echo " sudo dnf install npm" >&2
echo >&2
exit 2
fi
}
# For now, always require npm:
require_npm
require_pnpm() {
if ! [ -f /usr/bin/pnpm ]; then
echo >&2
echo "`basename $0` requires pnpm to run" >&2
echo >&2
echo "Run the following to fix this" >&2
echo " sudo dnf install pnpm" >&2
echo >&2
exit 2
fi
NPM=pnpm
}
npm_pack() {
case "${NPM}" in
npm)
npm pack "$@"
;;
pnpm)
pnpm pack "$@"
;;
esac
}
npm_install_dev() {
case "${NPM}" in
npm)
npm install --omit=optional
;;
pnpm)
pnpm install --no-optional --dev
;;
esac
}
npm_install_prod() {
case "${NPM}" in
npm)
npm install --omit=optional --omit=dev
;;
pnpm)
pnpm install --no-optional --prod
;;
esac
}
if [ $# -lt 1 ]; then
usage
@ -54,20 +107,22 @@ pushd ${TMP_DIR}
if [ -f "$TARBALL" ]; then
TARBALL_DIR=$(mktemp -d -t ci-XXXXXXXXXX)
pushd ${TARBALL_DIR}
[ -f pnpm-workspace.yaml ] && require_pnpm
tar xfz ${TARBALL} --strip-components 1
npm pack .
npm_pack .
popd > /dev/null
mv ${TARBALL_DIR}/*.tgz .
rm -rf ${TARBALL_DIR}
else
npm pack ${PACKAGE}
npm_pack ${PACKAGE}
fi
tar xfz *.tgz
cd package
[ -f pnpm-workspace.yaml ] && require_pnpm
for packagejson in $(find . -type d -name node_modules\* -prune -o -type f -name package.json -print); do
pushd $(dirname $packagejson)
echo " Downloading prod dependencies"
npm install --omit=dev --omit=optional
npm_install_prod
if [ $? -ge 1 ] ; then
echo " ERROR WILL ROBINSON"
rm -rf node_modules
@ -97,7 +152,7 @@ fi
for packagejson in $(find . -type d -name node_modules\* -prune -o -type f -name package.json -print); do
pushd $(dirname $packagejson)
echo " Downloading dev dependencies"
npm install --omit=optional
npm_install_dev
if [ $? -ge 1 ] ; then
echo " ERROR WILL ROBINSON"
else