# `::prettyplease-cli` or: How I learned to Stop Worrying and Trim the Comments.
[](
https://github.com/danielhenrymantilla/prettyplease-cli)
[](
https://crates.io/crates/prettyplease-cli)
[](
https://docs.rs/prettyplease-cli)
[](
https://gist.github.com/danielhenrymantilla/8e5b721b3929084562f8f65668920c33)
[](
https://github.com/rust-secure-code/safety-dance/)
[](
https://github.com/danielhenrymantilla/prettyplease-cli/blob/master/LICENSE-ZLIB)
[](
https://github.com/danielhenrymantilla/prettyplease-cli/actions)
Unofficial and basic CLI wrapper around the [`::prettyplease`] library.
[`::prettyplease`]: https://docs.rs/prettyplease
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_.
[`::syn::File`]: https://docs.rs/syn/^1.0.0/syn/struct.File.html
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
```bash
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
```console
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.