package dunolint-lib
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=b44119c96aeabb960e852711c2f20ae43f0011e796f05e012141ba980a5b58f6
sha512=5bf76732adc940db6cac0875e94c3eaff436288faba95388b9675c68b3f30f5362e01f289fc8a096325f7db812ace273773a1e051ab7d7ace3b8db4a57a0e070
Description
[dunolint] is a set of OCaml libraries and a cli tool to lint and help manage files in (large) dune projects.
[dunolint-lib] is the package you need as a user to define a dunolint config, without pulling all the dependencies required by the linter engine and command line.
It defines a configuration language in which you can express linting invariants for your projects. The tool will enforce these invariants, applying global and systematic changes automatically when able, and help with general ergonomics questions.
For example: "I want for all libs in this subdirectory to enable
bisect_ppx
, please go patch my dune files". Or, "I would like all
libraries that verify this particular predicate to supply the ppx flag
-unused-code-warnings=force
", and more.
You can setup [dunolint] as part of your CI checks to help enforcing properties and linting checks going forward.
README
dunolint
Introduction
Welcome to dunolint, a project composed of libraries and a CLI designed to assist with maintaining build files typically found in OCaml repos managed by the Dune build system (e.g., files named dune, dune-project, etc.).
Project Goals
The goal of dunolint is to check customizable invariants in your repo and help with ergonomic issues, such as applying systematic changes across many files. It supports things like enabling instrumentation, configuring recurring lint or preprocess flags, sorting libraries alphabetically, and more. You can use it at your convenience during development, and enforce consistency by integrating it into your CI pipeline.
Documentation
Published here.
Current State
It's currently in the early stages of development and there's little code and features at this point. I'm seeking feedback and early discussions about the project next steps.
Get Involved
I would love to hear your thoughts about dunolint. If you're interested in this project and would like to engage in discussions or provide feedback, please feel free to open an issue or start a discussion in the GitHub space of the project.
Thank you for your interest in dunolint!
Acknowledgements
We're very thankful to:
Dependencies (15)
-
sexplib0
>= "v0.17"
-
re
>= "1.8.0"
-
ppxlib
>= "0.35.0"
-
ppx_sexp_value
>= "v0.17"
-
ppx_sexp_conv
>= "v0.17"
-
ppx_let
>= "v0.17"
-
ppx_here
>= "v0.17"
-
ppx_hash
>= "v0.17"
-
ppx_enumerate
>= "v0.17"
-
ppx_compare
>= "v0.17"
-
fpath-base
>= "0.2.2"
-
dune-glob
>= "3.17"
-
base
>= "v0.17"
-
ocaml
>= "5.3"
-
dune
>= "3.17"
Dev Dependencies (1)
-
odoc
with-doc
Used by (1)
Conflicts
None