# spezilinter
**spezilinter** is a personal linter for validating and enforcing specific rules on my blog posts. Maybe you can reuse some parts for your own stuff!
## Features
- Markdown Custom Tags Linting:
- Lint special tags that I defined for my blog.
- Checks if linked image file exists.
- Validates image formats (JPG, PNG, etc.).
- JPG: Validates that EXIF metadata has been stripped (e.g., GPS coordinates).
- SVG (optional): Verifies SVG files for the presence of unsafe attributes like `onload`.
## Installation
```bash
cargo install spezilinter
```
## Usage
```console
$ spezilinter --help
spezifisch's linter for different file formats, linting for weirdly specific stuff
Usage: spezilinter [OPTIONS] <files>...
Arguments:
<files>... List of markdown files to lint
Options:
--root <root> Root directory for resolving image paths [default: .]
--disallow-onload Disallow `onload` attribute in SVG files
--stop-on-first-error Stop on the first error encountered
-h, --help Print help
-V, --version Print version
```
## Development
### Run
```bash
# inside this repository
cargo run -- --root <root-directory> <markdown-files>
```
### Test
You'll need the `bats` package for this:
```bash
make ci
```
### Pre-Commit Hook
Make sure to commit only cleanly formatted and tested code, please:
```bash
# run once
pre-commit install
# (optional) run manually
pre-commit run --all-files
```
## License
GPL-3.0-only