blob: 5897d53e1e2a9df47224214b8a578b09a81fdfd1 [file] [log] [blame] [view]
## Creating a custom matter_idl generator
The matter_idl tool can be used to generate arbitrary code based on the Matter
data model schemas. To create a custom generator that lives outside of the
Matter SDK tree, follow the design pattern of
scripts/py_matter_idl/examples/matter_idl_plugin:
1. Create a directory for your python generator module, for example
"matter_idl_plugin".
2. Add an `__init__.py` under "matter_idl_plugin" implementing a subclass of
`CodeGenerator` named `CustomGenerator`.
3. Have `CustomGenerator` load jinja templates, also under the
"matter_idl_plugin" subdirectory.
4. Execute the `codegen.py` script passing the path to the parent directory of
"matter_idl_plugin" via
`--generator custom:<plugin_path>:<plugin_module_name>` argument and package
name like `--option package:com.example.matter.proto`
```
# From top-of-tree in this example
./scripts/codegen.py \
--generator custom:./scripts/py_matter_idl/examples:matter_idl_plugin \
--option package:com.example.matter.proto \
./src/controller/data_model/controller-clusters.matter
```