nori/codegen/plugin
Plugin system for code generation.
Plugins are function values — idiomatic Gleam, no traits needed.
Types
A generated output file.
pub type GeneratedFile {
GeneratedFile(path: String, content: String)
}
Constructors
-
GeneratedFile(path: String, content: String)Arguments
- path
-
Relative path for the output file
- content
-
File content
Configuration for a code generator.
pub type GeneratorConfig {
GeneratorConfig(
output_dir: String,
overwrite: Bool,
extra: dict.Dict(String, String),
)
}
Constructors
-
GeneratorConfig( output_dir: String, overwrite: Bool, extra: dict.Dict(String, String), )Arguments
- output_dir
-
Output directory for generated files
- overwrite
-
Whether to overwrite existing files
- extra
-
Plugin-specific configuration options
A code generation plugin.
pub type Plugin {
Plugin(
name: String,
generate: fn(ir.CodegenIR, GeneratorConfig) -> Result(
List(GeneratedFile),
String,
),
)
}
Constructors
-
Plugin( name: String, generate: fn(ir.CodegenIR, GeneratorConfig) -> Result( List(GeneratedFile), String, ), )Arguments
- name
-
Plugin name
- generate
-
Generate function: takes IR + config, returns list of files
Values
pub fn default_config(output_dir: String) -> GeneratorConfig
Creates a default GeneratorConfig.