blob: 620e488a0ae3bce52e90ab07227c3395c6c6a97e [file] [log] [blame] [view] [edit]
# json5format: Rust library and command line tool to format JSON5 with comments
Reviewed on: 2020-04-03
`json5format` is a general purpose Rust library that formats JSON5 (a.k.a., "JSON for Humans")
documents according to a configurable style, preserving comments.
The library is accompanied by a `formatjson5` command line tool.
The `json5format` library is available to fuchsia and non-fuchsia Rust programs; however,
`formatjson5` is a host-only tool, currently built and installed as a fuchsia host-side developer
tool only.
# Fuchsia use cases
The `cmc format` command uses this `json5format` library to format component manifest files
(`*.cml`) in accordance with a style specific to the CML schema, for improved readability and
consistency.
`cmc format` is also the default operation for `*.cml` files when running the fuchsia multi-schema
file formatter script `fx format-code`. This script will automatically format known file types
among the files in your most recent commit to the fuchsia source tree.
# API Documentation
Documentation for both the library and command line tool can be viewed at:
https://fuchsia-docs.firebaseapp.com/rust/json5format/index.html
## Building
To add this project to your build, append `--with //src/sys/lib/json5format` to the `fx set`
invocation.
## Running
`formatjson5` is available at `host-tools/formatjson5` in the build output path after an `fx build`
invocation. This executable can also be launched via `fx formatjson5`.
For example, use the following command to review the command line options:
```
$ fx formatjson5 --help
```
## Testing
Make sure the tests are added to your build by adding `--with //src/sys/lib/json5format:tests` to
your `fx set` invocation.
Unit tests for the json5format library run as a fuchsia test package, defined by the
`json5format-tests` build target. To invoke the library unit tests manually, run:
invoked with the `fx run-host-tests` command:
```
$ fx test -o -v json5format-tests
```
Host-side tests for the `formatjson5` command can be manually launched by running:
```
$ fx test -o formatjson5
```