hof leverages CUE (configure, unify, execute) throughout and is core to the developer experience.
This decision was made for two initial reasons.
- hof is declarative code generation. We are essentially writing configuration when we write our input for code generation.
- CUE is purpose built for large scale configuration. It has good theory and tooling for working with configuration spanning many files.
CUE is ideal for many reasons:
- looks like existing configuration while offering a full, logical language.
- philosophically sound and based on a strong heritage.
- declarative and logical, it proves that what you wrote is consistent and valid.
- purpose built language, system, and tools for large scale configuration.
You can learn more about CUE from these links:
- Cuetorials (maintained by us)
hof uses CUE v0.4.3
- Purpose built language for config, use as a DSL, lift much of the logic to CUE
- Module aware, we get packages and dependenices for free, can combine schemas and generators in interesting ways