diagprint 0.8.1

A Rust diagnostics lifecycle framework for structured diagnostics, rendering, remediation, CI, editors, and telemetry.
Documentation
use diagprint::{Reporter, SourceCache, render::TerminalRenderer};

fn main() {
    let sources = SourceCache::new();

    sources.insert(
        "memory://example/generated.rs",
        concat!("fn generated() {\n", "    let answer = mystery();\n", "}\n",),
    );

    let reporter = Reporter::builder()
        .application("virtual-source-example")
        .build()
        .unwrap();

    let diagnostic = reporter
        .error("Generated source contains an unresolved value")
        .code("E-VIRTUAL")
        .label(
            "memory://example/generated.rs",
            2,
            Some(9),
            Some(6),
            Some("this source exists only in memory"),
        );

    let renderer = TerminalRenderer {
        color: false,
        width: 72,
        ..Default::default()
    };

    print!("{}", renderer.render_with_sources(&diagnostic, &sources));
}