prosaic-project 1.0.1

Folder-of-files project format and bundler for Prosaic templates.
Documentation

prosaic-project

Folder-of-files project format and bundler for Prosaic templates.

prosaic-project loads, validates, tests, and bundles Prosaic template projects. It is the library behind the prosaic new, prosaic build, and prosaic test CLI subcommands.

Install

[dependencies]
prosaic-project = "1.0.1"

Project Layout

my-project/
  prosaic.toml
  templates/
  partials/
  fixtures/
  tests/

The manifest configures engine settings, vocabulary dependencies, style preferences, and optional style profiles. Templates and partials are TOML files; fixtures are JSON context maps; tests are scenario files that render one or more events through a session and assert the resulting prose.

What It Provides

  • Project::load_from_dir for loading the folder format.
  • Validation for template parse errors, missing fixtures, and pipe/schema issues.
  • Project::into_engine for materializing a configured prosaic_core::Engine.
  • Scenario execution through ScenarioRunner.
  • build_bundle for portable JSON manifests or generated Rust source.
  • Starter scaffolds for blank, changelog, and vocabulary-pack projects.
  • A catalog of reference StyleProfile presets.

Example

use prosaic_project::{BuildTarget, Project, build_bundle};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let project = Project::load_from_dir("my-project")?;
    let issues = project.validate();
    assert!(issues.is_empty());

    let bundle = build_bundle(&project, BuildTarget::Json)?;
    assert!(bundle.json.is_some());
    Ok(())
}

License

MIT OR Apache-2.0