alias fmt := format
alias fmtw := format-write

tags:
    ctags -R .

test:
    scripts/check-tags.sh test/tags/valid-tags
    ! scripts/check-tags.sh test/tags/invalid-tags 2>/dev/null
    ! scripts/check-tags.sh test/tags/invalid-tags2 2>/dev/null

format: tags
    git ls-files -z "*.sh" | xargs -0 shfmt -d
    ./scripts/check-tags.sh ./tags

format-write:
    git ls-files -z "*.sh" | xargs -0 shfmt -w

check:
    codespell
    git ls-files -z "*.sh" | xargs -0 shellcheck
    ! rg -i "# (FIXME|TODO)"

pre-commit: format check test
