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

# 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 [ -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 ! command -v yarn >/dev/null 2>&1; then
        echo "fmt: no yarn; run script/bootstrap first" >&2
        exit 1
    fi
    exec yarn "$@"
}

main() {
    cd "$ROOT"
    run_yarn run prettier --write '**/*.md' --tab-width 4 --prose-wrap always
}

main "$@"
