# Cabret A yaml based static site generator, ideally with the same features as Hugo but with a simpler model. Here is a basic example of a _Cabretfile.yaml_ ```yaml build: - pipeline: - source: index.html - use: layout path: layouts/base.html - target: dist/index.html - pipeline: - source: posts/{{ .Id }}.md - plugin: markdown - use: layout path: layouts/base.html - target: dist/posts/{{ .Id }}/index.html ``` Cabret is based on the idea of a data pipeline. Along a pipeline flows **a list** of `Content` objects that are just ```go type Content struct { Type string Metadata map[string]any Data []byte } ``` The `Type` is the _mime type_ of the `Data`. The `Metadata` can be whatever the user wants and operations and populate it with special fields as they please. In some cases its useful to have `Data` be `nil`, when that happens the `Type` should be `cabret.MetadataOnly` (just the string `metadata-only`) ## Operations Each pipeline is a list of operations, the first field in an operation must be one of `source`, `use` or `target`. - `source: ` Load files matching the given pattern and populates the field `.Metadata.MatchResult` with the captures. Other supported forms are ```yaml use: source path: ``` ```yaml use: source paths: - ... - ``` - `target: