CLI README Builder
A builder to generate a README
Overview
The goal of this package is to automate the process of creating a readme file for Dart console applications.
How it Works
This package generates a single file which contains --help output from every command in the application.
This builder works as follows:
- Find the binary executable file in your package
- Run the executable with the
--helpflag - Capture the output and parse it
- For each top-level command, capture the
--helpoutput of that command and its sub-commands - Generate a file with the information gathered above
Usage
-
Add
cli_readme_builderandbuild_runnertopubspec.yamlname: example_cli dev_dependencies: build_runner: ^1.0.0 cli_readme_builder: ^1.0.0 -
Run a build
> dart pub run build_runner build -
README.g.mdwill be generated with content:
example_cli
Example CLI app
Usage
example_cli --helpHelp output:
Example CLI app Usage: example_cli <command> [arguments] Global options: -h, --help Print this usage information. Available commands: child_command Child Command description Run "example_cli help <command>" for more information about a command.Available commands
child_command
example_cli child_command --helpHelp output:
Child Command description Usage: example_cli child_command [arguments] -h, --help Print this usage information. --option_arg=<value help for option> An option argument --[no-]flag_arg A flag argument Run "example_cli help" to see global options.
See a full example output here: Example App Output
Customization
To change the path of the generated file, create a build.yaml
in the root of your package.
By changing the output option of this builder, the path can be customized:
targets:
$default:
builders:
cli_readme_builder:
options:
output: my_output_file.md
Advanced
Verbose logging
In an effort to make debugging easier, verbose_logging can be added as an input to the build.yaml
targets:
$default:
builders:
cli_readme_builder:
options:
verbose_logging: true
Maintainers
Libraries
- cli_readme_builder
- Configuration for using
package:build-compatible build systems.