pub fn generate_files(config: &CodegenOptions) -> Result<(), Error>Expand description
Generate Rust source files from Varlink interface files.
This function reads Varlink interface definition files from config.files, parses them,
generates corresponding Rust code, and handles output based on the configuration.
§Behavior
- If
config.outputis specified: Generates a single file with all interfaces combined. - If
config.multiple_filesis true: Generates separate.rsfiles for each interface in the current working directory. The output filename is derived from the interface name (dots replaced with underscores and converted to lowercase). - Otherwise: Writes the generated code to stdout.
§Arguments
config- Code generation options containing input files, output configuration, and formatting options.
§Returns
Returns Ok(()) on successful code generation and output.
§Errors
This function will return an error if:
Error::InvalidArgument- No input files were specified.Error::Io- File I/O failed (reading input, writing output or invokingrustfmt).Error::Zlink- A Varlink interface definition is malformed or invalid.Error::Fmt- Writing to the internal output buffer failed.Error::InvalidUtf8-rustfmtproduced output that was not valid UTF-8.
§Examples
use std::path::PathBuf;
use zlink_codegen::CodegenOptions;
let config = CodegenOptions {
files: vec![PathBuf::from("interface.varlink")],
output: Some(PathBuf::from("generated.rs")),
rustfmt: true,
..Default::default()
};
zlink_codegen::generate_files(&config).expect("Failed to generate code");