| 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 |
| ``` |