Skip to main content

mylangiser/
lib.rs

1// SPDX-License-Identifier: PMPL-1.0-or-later
2// Copyright (c) 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3//
4// mylangiser library — progressive-disclosure interface generation from
5// complex APIs via My-Lang. This crate provides:
6//
7// - `manifest` — Parse and validate mylangiser.toml manifests
8// - `codegen`  — Score complexity, assign levels, generate layered wrappers
9// - `abi`      — Core type definitions (DisclosureLevel, ComplexityScore, etc.)
10
11pub mod abi;
12pub mod codegen;
13pub mod manifest;
14
15pub use abi::{APIEndpoint, ComplexityScore, DisclosureLevel, LayeredWrapper, SmartDefault};
16pub use manifest::{load_manifest, validate, Manifest};
17
18/// Convenience function: load a manifest, validate it, and generate all
19/// layered wrapper code in the specified output directory.
20///
21/// # Errors
22/// Returns an error if the manifest is invalid or file I/O fails.
23pub fn generate(manifest_path: &str, output_dir: &str) -> anyhow::Result<()> {
24    let m = load_manifest(manifest_path)?;
25    validate(&m)?;
26    codegen::generate_all(&m, output_dir)
27}