#!/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" # 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. run_yarn() { if command -v yarn >/dev/null 2>&1; then yarn "$@" return fi if [ ! -s "$HOME/.nvm/nvm.sh" ]; then echo "fmt: no yarn; run script/bootstrap first" >&2 exit 1 fi bash -c '. "$HOME/.nvm/nvm.sh" && nvm use "$1" >/dev/null && shift && exec yarn "$@"' bash "$NODE_VERSION" "$@" } main() { cd "$ROOT" gofmt -s -w . goimports -w . # Pinned prettier reads settings from .prettierrc (tabWidth 4, # proseWrap always); .prettierignore keeps alpine.min.js untouched. # Globs are quoted so prettier expands them, not the shell. run_yarn run prettier --write 'static/js/*.js' '**/*.md' } main "$@"