Install the pinned node when the installed one is another major version (closes #118)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
script/bootstrap used whatever node was installed, so on the CI runner image, which ships node 24, the pinned yarn 1.22.22 ran under node 24 and printed the deprecation warning DEP0169 on every bootstrap. It now uses the installed node only when its major version is the pinned one, and otherwise installs the pinned node with nvm, as it already did when node was missing, with yarn and the packages under it. Only the major is compared because the Dockerfile stages use a node 22 alpine image that nvm cannot replace. script/fmt and script/fmt-check run yarn under nvm's pinned node when nvm has it installed, and otherwise the yarn on PATH. Model: opus-5-5
This commit is contained in:
+10
-9
@@ -7,20 +7,21 @@ ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
||||
# Must match the pin in script/bootstrap.
|
||||
NODE_VERSION="22.17.0"
|
||||
|
||||
# script/bootstrap installs node and yarn under nvm and leaves neither
|
||||
# on the PATH of the shell that called it, so resolve the pinned
|
||||
# toolchain here the way bootstrap's own install step does. nvm is a
|
||||
# bash script, hence the subshell.
|
||||
# When the installed node is not the pinned major version,
|
||||
# script/bootstrap installs the pinned node and yarn under nvm and
|
||||
# leaves neither on the PATH of the shell that called it. So yarn runs
|
||||
# under nvm's pinned node when nvm has it installed, and otherwise is
|
||||
# the yarn on PATH. nvm is a bash script, hence the subshell.
|
||||
run_yarn() {
|
||||
if command -v yarn >/dev/null 2>&1; then
|
||||
exec yarn "$@"
|
||||
if [ -d "$HOME/.nvm/versions/node/v$NODE_VERSION" ]; then
|
||||
exec bash -c '. "$HOME/.nvm/nvm.sh" && nvm use "$1" >/dev/null &&
|
||||
shift && exec yarn "$@"' bash "$NODE_VERSION" "$@"
|
||||
fi
|
||||
if [ ! -s "$HOME/.nvm/nvm.sh" ]; then
|
||||
if ! command -v yarn >/dev/null 2>&1; then
|
||||
echo "fmt-check: no yarn; run script/bootstrap first" >&2
|
||||
exit 1
|
||||
fi
|
||||
exec bash -c '. "$HOME/.nvm/nvm.sh" && nvm use "$1" >/dev/null &&
|
||||
shift && exec yarn "$@"' bash "$NODE_VERSION" "$@"
|
||||
exec yarn "$@"
|
||||
}
|
||||
|
||||
main() {
|
||||
|
||||
Reference in New Issue
Block a user