.PHONY: bootstrap setup test lint fmt fmt-check check build build-bin install dev clean docker hooks YARN := yarn run bootstrap: @script/bootstrap setup: @script/setup test: @script/test lint: @script/lint fmt: @script/fmt fmt-check: @script/fmt-check check: @script/check build: @script/build # Bundles the built dist/, so the binary reports the version script/build # stamped. # # On Linux, nix's bun loads through a C library in the nix store, and a binary # bun compiles from itself keeps that loader. nix-collect-garbage can delete # that C library, and the binary then no longer starts. # A --target other than the host's makes bun use its downloaded release build, # which loads through the system's C library. That is tested only on x86-64, # with the baseline build, so other Linux machines are refused. build-bin: build case "$$(uname -s)-$$(uname -m)" in \ Linux-x86_64) target=--target=bun-linux-x64-baseline ;; \ Linux-*) echo "make build-bin: on Linux only x86-64 is supported" >&2; exit 1 ;; \ *) target= ;; \ esac; \ nix-shell -p bun --run "bun build dist/bin/quak.js --compile $$target --outfile bin/quak" install: build-bin mkdir -p ~/bin cp bin/quak ~/bin/quak chmod +x ~/bin/quak dev: @$(YARN) tsc --watch clean: @rm -rf dist coverage .vitest-cache *.tsbuildinfo docker: @script/docker hooks: @script/install-precommit