Generate files from a YAML configuration file
barectf ships with the barectf
command-line interface (CLI) tool.
The barectf
CLI tool has a command interface, like
Git.
This page focuses on the barectf generate
command. See
barectf
CLI tool usage for the complete CLI tool’s documentation.
Generate files from a YAML configuration
Use the barectf generate
command to
generate files from a barectf YAML configuration
file:
$ barectf generate my-config.yaml
On success, this command writes the following files to the current working directory:
File name | Description |
---|---|
The CTF metadata stream file. You’ll need to place this file in a directory with the data stream files which your application will write through the generated tracer. See How barectf works to learn more. |
|
|
The generated tracer’s public C header file. This header contains the prototypes of the packet opening, packet closing, and tracing functions. barectf generates one packet opening/closing function per configured data stream type and one tracing function per configured event record type. Your application and platforms need to include this file. |
|
Internal macros for the generated tracer (included by |
The generated tracer’s C source code. |
Those file names assume that my-config.yaml
uses the default
prefixes.
Use dedicated output directories
Because the metadata
file which barectf generates is
part of an eventual
CTF trace, you’ll probably
want to make barectf write it to its own directory.
Use the barectf generate
command’s
--metadata-dir
option
to specify the metadata
file’s output directory:
$ barectf generate my-config.yaml --metadata-dir=my-trace
barectf generate
also offers the
--code-dir
and
--headers-dir
options
to select the output directories of the generated
tracer source file and headers.
Control inclusions
A barectf YAML configuration file can include partial YAML files.
Set the most significant inclusion search directories with the barectf
generate
command’s
--include-dir
option.
You can use the option more than once:
$ barectf generate my-config.yaml \
--include-dir=/path/to/project/barectf \
--include-dir=/path/to/base/barectf
By default, if barectf generate
can’t find an inclusion file, it
prints an error and exits with a non-zero
status.
However, it’s possible that some YAML file A includes a file B which barectf can’t find, but A doesn’t need anything from B.
Force barectf generate
to continue silently instead with its
--ignore-include-not-found
option:
$ barectf generate my-config.yaml --ignore-include-not-found \
--include-dir=/path/to/project/barectf \
--include-dir=/path/to/base/barectf \