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 carry the same test to pick their yarn: the yarn on PATH, or yarn under the pinned node loaded through nvm. Model: opus-5-5
42 lines
1.2 KiB
Bash
Executable File
42 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# script/fmt: format all files (writes).
|
|
set -eu
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
|
|
|
# Must match the pin in script/bootstrap.
|
|
NODE_VERSION="22.17.0"
|
|
|
|
# True when the node on PATH has the pinned major version: the same
|
|
# function as in script/bootstrap, which uses it to decide where it
|
|
# installs yarn.
|
|
node_is_pinned_major() {
|
|
if ! command -v node >/dev/null 2>&1; then return 1; fi
|
|
installed="$(node --version)"
|
|
installed="${installed#v}"
|
|
[ "${installed%%.*}" = "${NODE_VERSION%%.*}" ]
|
|
}
|
|
|
|
# Run the yarn script/bootstrap installed: the yarn on PATH when the
|
|
# node on PATH has the pinned major version, and otherwise yarn under
|
|
# the pinned node in nvm, which bootstrap leaves off the PATH of the
|
|
# shell that called it. nvm is a bash script, hence the subshell.
|
|
run_yarn() {
|
|
if node_is_pinned_major; then
|
|
exec yarn "$@"
|
|
fi
|
|
if [ ! -s "$HOME/.nvm/nvm.sh" ]; then
|
|
echo "fmt: 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" "$@"
|
|
}
|
|
|
|
main() {
|
|
cd "$ROOT"
|
|
run_yarn run prettier --write '**/*.md' --tab-width 4 --prose-wrap always
|
|
}
|
|
|
|
main "$@"
|