Cavefile manifests
Cavefile manifests
Zirric packages declare dependencies and tasks in a Cavefile. A Cavefile is
regular Zirric source code that uses annotations from the cave and
cave.tasks standard library modules. For implementation details, see
proposals/ZE-002-the-cavefile.md and stdlib/cave/manifest.zirr.
Dependencies
import cave
@cave.Dependencies()
data Dependencies {
@cave.Stdlib("prelude")
prelude
@cave.Local("../some-local-package")
helpers
@cave.Git("https://code.knabel.dev/zirric-lang/zirric")
@cave.Version(">0.1.0")
future
}
Only fields within the @cave.Dependencies data declaration participate in
dependency resolution.
Tasks
import cave.tasks
@tasks.Name("generate")
@tasks.Help("Generates something")
@tasks.Exec("tasks/generate.zirr")
data GenerateTask {
@Bool
@tasks.Flag()
@tasks.Name("dry")
isDryRun
}
Tasks are registered by annotations such as @tasks.Exec or @tasks.Call. Flags
and positional arguments are expressed as annotated fields.