diff options
| -rw-r--r-- | docs/linting.md | 23 | ||||
| -rw-r--r-- | eslint.config.js | 9 | ||||
| -rwxr-xr-x | git-hooks/pre-commit | 4 | ||||
| -rw-r--r-- | package.json | 3 | ||||
| -rwxr-xr-x | tools/check-lint | 11 | ||||
| -rwxr-xr-x | tools/delint | 11 |
6 files changed, 54 insertions, 7 deletions
diff --git a/docs/linting.md b/docs/linting.md new file mode 100644 index 0000000..6620a74 --- /dev/null +++ b/docs/linting.md @@ -0,0 +1,23 @@ +# Linting + +We use automated tools, rather than human effort, to spot possible bugs or dubious structural choices, where possible. This is handled by three tools: + +- Javascript is linted using [eslint]. +- Rust is linted using [cargo check] and [clippy]. + +[eslint]: https://eslint.org/ + +[cargo check]: https://doc.rust-lang.org/cargo/commands/cargo-check.html + +[clippy]: https://doc.rust-lang.org/cargo/commands/cargo-clippy.html + +## Tools + +- To check for detectable lints, run + `tools/check-lint`. This should be run whenever making changes, and is part of the optional + `git-hooks/pre-commit` hook script. + +- To fix lints that have automatic fixes, run + `tools/delint`. + +You can also run the individual lint tools directly. The tool scripts listed above contain the specific commands needed. diff --git a/eslint.config.js b/eslint.config.js index 7d23626..57b0875 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,3 +1,10 @@ import prettier from 'eslint-config-prettier'; import svelte from 'eslint-plugin-svelte'; -export default [prettier, ...svelte.configs['flat/prettier']]; + +export default [ + prettier, + ...svelte.configs['flat/prettier'], + { + ignores: ['target/', 'coverage/'], + }, +]; diff --git a/git-hooks/pre-commit b/git-hooks/pre-commit index 3d0ae17..ea34684 100755 --- a/git-hooks/pre-commit +++ b/git-hooks/pre-commit @@ -4,14 +4,12 @@ # run. It gets old fast. That's why this doesn't run tests, for example. tools/check-format +tools/check-lint # Make sure package-lock.json is up to date with package.json npm ci --dry-run # Make sure Cargo.lock is up to date with Cargo.toml. cargo update --locked --workspace -# Make sure there are no screamers in the code (both languages). -npm run lint -cargo check # Make sure the prepared statement data in .sqlx is up to date. Requires # `cargo-sqlx` (`cargo install cargo-sqlx`). export DATABASE_URL=sqlite://pilcrow.db.pre-commit?mode=rwc diff --git a/package.json b/package.json index 3a75fcb..6a1446e 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,6 @@ "npm": ">=10.0.0 <11.0.0", "node": ">=22.0.0 <23.0.0" }, - "scripts": { - "lint": "eslint ui" - }, "devDependencies": { "@sveltejs/adapter-static": "^3.0.8", "@sveltejs/kit": "^2.17.2", diff --git a/tools/check-lint b/tools/check-lint new file mode 100755 index 0000000..ab7fdd3 --- /dev/null +++ b/tools/check-lint @@ -0,0 +1,11 @@ +#!/bin/bash -e + +## tools/check-lint +## +## Detects lintable mistakes and stylistic problems. + +cd "$(dirname "$0")/.." + +npx eslint +cargo check +cargo clippy diff --git a/tools/delint b/tools/delint new file mode 100755 index 0000000..132841b --- /dev/null +++ b/tools/delint @@ -0,0 +1,11 @@ +#!/bin/bash -e + +## tools/delint +## +## Automatically fixes lintable mistakes and stylistic problems, where possible. + +cd "$(dirname "$0")/.." + +npx eslint --fix +cargo fix +cargo clippy --fix |
