#comments #rustfmt #formatting #syn #format

app prettyplease-cli

Unofficial and basic CLI wrapper around the ::prettyplease library

3 releases

0.1.0 Feb 3, 2022

#23 in #rustfmt

37 downloads per month

Zlib OR MIT OR Apache-2.0

12KB
100 lines

::prettyplease-cli or: How I learned to Stop Worrying and Trim the Comments.

Repository Latest version MSRV unsafe forbidden License CI

Unofficial and basic CLI wrapper around the ::prettyplease library.

This can be used as a poorman's substitute of rustfmt, mainly for generated code.

⚠️ Warning: comments are lost ⚠️

Indeed, ::prettyplease only operates off a ::syn::File (by design). And a ::syn::File is an AST[^1] parsed representation of a file of source code. Such AST does not include comments.

[^1]: Abstract Syntax Tree

This means that piping the contents of a source file into ::syn::parse_file() and then into ::prettyplease::unparse() results in loss of comments; and this is exactly what this CLI tool does.

  • Note, however, that doc-comments are preserved, since those are part of Rust's AST.

Installation

cargo install prettyplease-cli
## You may add `--no-default-features` to speed up the compilation
## if you are not interested in the `--check` mode showing pretty line diffs.

Usage

Unofficial CLI wrapper around `::prettyplease::unparse` to format files and trim comments.

This modifies them IN PLACE, unless the `--check` flag is passed.

USAGE:
    prettyplease-fmt [OPTION] <files…>

OPTIONS:
        --check     Runs in 'check' mode. Exits with 0 if input is formatted
                    correctly. Exits with 1 if formatting is required, printing
                    a diff unless the `check-shows-diffs` Cargo feature were
                    disabled at compile-time.
    -h, --help      Shows this very message.

See https://crates.io/crates/prettyplease for more info about the formatting itself.

Missing features / FIXME

  • Preserve comments, somehow;

  • Accept files and/or globs for directory traversal;

  • Handle files in parallel.

Dependencies

~1.3–2.4MB
~48K SLoC