mod docs;
mod obsidian;
#[cfg(feature = "mcp")]
pub mod mcp;
pub use docs::{IndexEntry, RenderedAdr, markdown_to_html, render_adr, render_adr_index};
pub use obsidian::{VaultNote, note_name, render_note};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Target {
DocsSite,
ObsidianVault,
}
impl Target {
#[must_use]
pub fn as_str(self) -> &'static str {
match self {
Self::DocsSite => "docs",
Self::ObsidianVault => "obsidian",
}
}
#[must_use]
pub fn parse(s: &str) -> Option<Self> {
match s {
"docs" => Some(Self::DocsSite),
"obsidian" => Some(Self::ObsidianVault),
_ => None,
}
}
}
#[cfg(test)]
mod tests {
use super::Target;
#[test]
fn target_names_are_stable() {
assert_eq!(Target::DocsSite.as_str(), "docs");
assert_eq!(Target::ObsidianVault.as_str(), "obsidian");
assert_eq!(Target::parse("docs"), Some(Target::DocsSite));
assert_eq!(Target::parse("obsidian"), Some(Target::ObsidianVault));
assert_eq!(Target::parse("nope"), None);
}
}