Skip to main content

adrs_core/
lib.rs

1//! # adrs-core
2//!
3//! Core library for managing Architecture Decision Records (ADRs).
4//!
5//! This library provides the foundational types and operations for working with ADRs,
6//! including parsing, creating, linking, and querying decision records.
7//!
8//! ## Modes
9//!
10//! The library supports two modes:
11//!
12//! - **Compatible mode** (default): Writes markdown-only format compatible with adr-tools,
13//!   but can read both legacy and next-gen formats.
14//! - **Next-gen mode**: Uses YAML frontmatter for structured metadata, enabling richer
15//!   features like typed links and better validation.
16
17mod config;
18pub mod doctor;
19mod error;
20pub mod export;
21pub mod lint;
22mod parse;
23mod repository;
24mod template;
25mod types;
26
27pub use config::{Config, ConfigMode, ConfigSource, DiscoveredConfig, discover};
28pub use error::{Error, Result};
29pub use export::{
30    ConsideredOption, ImportOptions, ImportResult, JSON_ADR_SCHEMA, JSON_ADR_VERSION, JsonAdr,
31    JsonAdrBulkExport, JsonAdrLink, JsonAdrSingle, RepositoryInfo, ToolInfo, export_adr,
32    export_directory, export_repository, import_to_directory,
33};
34pub use lint::{Issue, IssueSeverity, LintReport, check_all, check_repository, lint_adr, lint_all};
35pub use parse::Parser;
36pub use repository::Repository;
37pub use template::{Template, TemplateEngine, TemplateFormat, TemplateVariant};
38pub use types::{Adr, AdrLink, AdrStatus, LinkKind};
39
40// Legacy doctor module - deprecated, use lint module instead
41#[deprecated(since = "0.6.0", note = "Use lint module instead")]
42pub use doctor::{Check, Diagnostic, DoctorReport, Severity, check as doctor_check};