#!/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 "$@"