markdown-prose-hooks 0.1.3

Pre-commit hooks that reflow Markdown prose to one line per paragraph.
Documentation
[package]
name = "markdown-prose-hooks"
# Tracks pyproject.toml. Two implementations answering to one corpus are one
# tool, and a version that means something different in each language would be
# a question every consumer has to ask twice.
version = "0.1.3"
authors = ["Michael I Chen"]
edition = "2024"
# Pinned to what CI installs, so a language feature newer than this fails here
# rather than in a consumer's install. Also the floor for edition 2024.
rust-version = "1.86"
description = "Pre-commit hooks that reflow Markdown prose to one line per paragraph."
readme = "README.md"
license = "MIT"
repository = "https://github.com/michen00/markdown-prose-hooks"
keywords = ["pre-commit", "markdown", "formatter", "prose", "linter"]
categories = ["command-line-utilities", "text-processing"]

# Everything the library and its binary need to compile, and nothing else.
# Without this the crate ships the whole repository -- 434 files and 1.4 MiB of
# corpus fixtures, Python package, docs and workflows -- which matters most in
# the channel it is least visible in: a `language: rust` hook resolves through
# `cargo install`, so a consumer who cloned a small mirror would still pull the
# monorepo down at build time, and the mirror would have bought them nothing.
#
# `/src/*.rs` rather than `/src`, because the Python package lives at
# `src/markdown_prose_hooks/` and a directory glob would ship it to crates.io.
#
# `tests/` and `corpus/` are left out together, and have to be: the integration
# test reads the fixtures at runtime, so shipping one without the other would
# hand a consumer a `cargo test` that fails for want of data. `cargo publish`
# verifies by building rather than testing, so their absence costs nothing here
# -- and conformance is judged in CI on the repository, which is where the
# corpus lives.
include = [
    '/src/*.rs',
    '/src/bin/*.rs',
    '/README.md',
    '/LICENSE',
]

# Task 14 ships this binary, and about a megabyte is the budget. `panic` is
# ignored for the test and bench profiles, so this does not reach `cargo test`.
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
strip = true