blob: 1b670b0a01adedbc011320b25079155a91054c08 [file] [log] [blame] [view]
# Developer tool guidelines
This section provides guidelines on *creating* CLI and GUI tools for
Fuchsia.
For information on existing tools, please refer to documentation for those
tools.
## Other topics
- [Command-line tool requirements](cli.md)
- [CLI --help requirements](cli_help.md)
- GUI Tool requirements (needs writing)
## Packaging a tool for inclusion in the Integrator Development Kit (IDK)
The Integrator Development Kit (IDK) will contain:
* The tool binary itself.
* A document in
[//docs/development/idk/documentation](/docs/development/idk/documentation)
describing the contract of this tool and how to connect it to the target
system. The target audience of this document is people writing integration
scripts rather than being an end-user-friendly how-to (debugger example).
## Environment-specific SDKs
The `ffx target list` command abstracts device listing and selection across all
SDK variants. With the right tool design, the extent of integration required
should be to run `ffx target list` to get the address and pass the address to
the tool with other environment-specific flags. In the case of the debugger the
tool-specific code would:
* Connect to a shell (this should be a primitive provided by the
environment-specific SDK) on the target and run the `debug_agent`.
* Run zxdb with the address provided by `ffx target list`, passing any local
settings files and symbol paths on the command-line.
## Tool requirements
Tools should allow all environment parameters to be passed in via command-line
arguments. Examples include the location of settings files and symbol
locations. This allows different SDKs to be hermetic.
Tools should be written to make writing environment-specific scripts as simple
as possible. For example, the debugger should automatically retry connections
(https://fxbug.dev/42137364) so the current behavior of waiting for the port to be open in
the launch scripts can be removed.
Tool authors are responsible for:
* Writing the tool with the appropriate interface.
* Providing documentation on this interface in
//docs/development/idk/documentation.
* Currently please reach out to get bugs filed on individual SDKs. We are
working on a better process for this (https://fxbug.dev/42137108).