blob: e4e2fd0dce8082eabb97427aee0876694b9dbf5b [file] [log] [blame] [view] [edit]
Fidldoc is a command-line tool that generates reference pages based on FIDL JSON IR.
# Build
1. Include fidldoc by adding a direct or indirect reference to it in your `fx set` (e.g. `fx set core.x64 --with //tools/fidl/fidldoc`)
1. Build with `fx build tools/fidl/fidldoc:fidldoc`
# Run
1. Run with a single file `fx fidldoc fuchsia-device.fidl.json`
1. Run with a list of files `fx fidldoc json/*`
By default, docs will be generated in `./docs/`. You can change that by specifying the `--output` (or `-o`) command-line flag.
Use the `--template` (or `-t`) flag to select the output format. Currently, the two supported values are `markdown` and `html`.
Additional configurations can be provided in a `fidldoc.config.json` file and passed as part of the command
line interface.
Example:
```
fx fidldoc -v \
./out/x64/fidling/gen/zircon/system/fidl/fuchsia-mem/fuchsia-mem.fidl.json \
-c ./out/default/host_x64/fidldoc.config.json
```
The `all_fidl_json.txt` file provides a list of file locations to all of the FIDL JSON IR files that
are part of the Fuchsia build. You can use this file to generate all of the reference docs.
The snippet below shows an example of how to do it:
```
FIDL_PATHS=$(cat ./out/default/all_fidl_json.txt | sed -e 's/^/.\/out\/default\//')
fx fidldoc -v $(echo $FIDL_PATHS)
```
You can optionally pass a `--tag` flag to specify a source definition.
Example - How to use the `--tag` flag to point to the current git commit or branch:
```
fx fidldoc -v \
./out/x64/fidling/gen/zircon/system/fidl/fuchsia-mem/fuchsia-mem.fidl.json \
-c ./out/default/host_x64/fidldoc.config.json \
--tag $(git rev-parse HEAD)
```
# Templates
The output is generated by the Rust
[Handlebars](https://docs.rs/handlebars/latest/handlebars/) library which is an
implementation of a similar JS library (see [the usage
guide](https://handlebarsjs.com/guide/expressions.html).
There are two template sets:
* **Markdown** (the default): Selectable with `-t markdown`, This is the
normal FIDL markdown output.
* **System call**: Selectable with `-t syscall`, this is a specialized mode
for generating the Zircon system call documentation. See
zircon/vdso/update-docs-from-fidl.
# Test
The `tests` target will generate a unit test binary in the build output directory.
1. Set the test target `fx set core.x64 --with //tools/fidl/fidldoc:tests`
1. Run with `fx test host_x64/fidldoc_bin_test`
# Goldens
The test `fidldoc_goldens_test` uses `.test.fidl` files from
`//tools/fidl/fidlc/testdata` as input, and compares the generated output with
goldens from `//tools/fidl/fidldoc/goldens`.
To regenerate the goldens run:
```
fx regen-goldens fidldoc
```