pactole-cli 0.2.0

Command-line interface for Pactole, a plain-text double-entry accounting ledger.
use pactole_storage_fs::{Diagnostic, DiagnosticSeverity};

pub(crate) fn print(diagnostics: &[Diagnostic]) {
    for diagnostic in diagnostics {
        let severity = match diagnostic.severity {
            DiagnosticSeverity::Error => "error",
            DiagnosticSeverity::Warning => "warning",
        };
        let code = diagnostic
            .code
            .as_deref()
            .map_or(String::new(), |code| format!(" [{code}]"));
        eprintln!(
            "{}:{}:{}: {severity}:{code} {}",
            diagnostic.path.display(),
            diagnostic.span.start.row + 1,
            diagnostic.span.start.column + 1,
            diagnostic.message,
        );
    }
}