A Cherry site: the validated configuration plus its filesystem roots.
Configuration lives in cherry.exs at the site root — a plain keyword
list, evaluated at build time so it works identically in project mode and
binary mode (ADR 0002). The schema below is the source of truth; it is
introspectable because agents ask before they write.
All URL building goes through href/2 and abs_url/2 so every emitted
URL respects base_path (the GitHub project-pages case) — no template or
stage ever concatenates URL strings itself.
Summary
Functions
Absolute URL for an output-relative location.
Site-rooted path for an output-relative location: respects base_path.
Loads and validates cherry.exs from root.
The site config schema, for introspection and docs.
Types
Functions
Absolute URL for an output-relative location.
Site-rooted path for an output-relative location: respects base_path.
href(site, "blog/") #=> "/blog/" or "/repo/blog/"
href(site, "") #=> "/" or "/repo/"
Loads and validates cherry.exs from root.
Options: :output overrides the output directory (default root/_site).
Errors are strings that name the file and the offending field.
@spec schema() :: NimbleOptions.t()
The site config schema, for introspection and docs.