default: test doc clippy format shellcheck shellinstall wasm todo

all: default prof binary logo ctan perf latex

alias b := build
alias d := doc
alias t := test
alias l := latex
alias c := clippy
alias f := format

build:
  @cargo build -r

test:
  @cargo test --no-fail-fast

doc:
  @cargo doc

shellinstall:
  @cargo build -r --features shellinstall

testignored:
  @cargo test -- --ignored

clippy:
  @cargo clippy -r && cargo shear

format:
  @cargo fmt
  @alejandra -q .

latex:
  @cd extra && bash latex.sh

wasm:
  @mkdir -p web/pkg
  @cargo build -r -F wasm --lib --target wasm32-unknown-unknown
  @wasm-bindgen --target web --out-dir web/pkg \
      target/wasm32-unknown-unknown/release/tex_fmt.wasm
  @cd web/pkg && wasm-opt -Oz -o tex_fmt_bg.wasm tex_fmt_bg.wasm

perf:
  @cd extra && bash perf.sh

prof:
  @cd extra && bash prof.sh

binary:
  @cd extra && bash binary.sh

upgrade:
  @cargo upgrade && cargo update

shellcheck:
  @shellcheck extra/*.sh

ctan:
  @rm -f ctan/latex-formatter.pdf ctan/latex-formatter.tar.gz
  @cd ctan && latexmk -pdf latex-formatter.tex
  @rm -rf ctan/latex-formatter
  @rm -f ctan/*.aux ctan/*.fdb_latexmk ctan/*.fls ctan/*.log
  @rm -f ctan/*.synctex.gz ctan/*.dvi
  @mkdir -p ctan/latex-formatter
  @cp ctan/latex-formatter.pdf ctan/latex-formatter.tex ctan/latex-formatter
  @cp ctan/README.md LICENSE NEWS.md Cargo.toml ctan/latex-formatter
  @cp -r src/ ctan/latex-formatter

nix:
  @nix flake update

todo:
  @rg -g '!justfile' todo || true

logo:
  @cd extra && python logo.py
  @cd extra && magick -background none logo.svg -resize 5000x5000 logo.png
  @cd extra && python card.py
  @cd extra && magick -background none card.svg -resize 1280x640\! card.png
  @cd extra && inkscape -w 2560 -h 1280 card.svg -o card.png
  @cd extra && rm -f logo.png card.svg

clean:
  @cargo clean
  @rm -fv result
  @rm -fv extra/perf.data extra/perf.data.old
  @rm -fv extra/flamegraph.svg extra/card.png
  @rm -fv extra/hyperfine-*.csv
  @rm -rfv web/pkg/
  @rm -rfv ctan/latex-formatter/
  @rm -fv ctan/latex-formatter.pdf
  @rm -fv ctan/latex-formatter.tar.gz
