pub struct Repository { /* private fields */ }Expand description
A repository of Architecture Decision Records.
Implementations§
Source§impl Repository
impl Repository
Sourcepub fn open(root: impl Into<PathBuf>) -> Result<Self>
pub fn open(root: impl Into<PathBuf>) -> Result<Self>
Open an existing repository at the given root.
Sourcepub fn open_or_default(root: impl Into<PathBuf>) -> Self
pub fn open_or_default(root: impl Into<PathBuf>) -> Self
Open a repository, or create default config if not found.
Sourcepub fn init(
root: impl Into<PathBuf>,
adr_dir: Option<PathBuf>,
ng: bool,
) -> Result<Self>
pub fn init( root: impl Into<PathBuf>, adr_dir: Option<PathBuf>, ng: bool, ) -> Result<Self>
Initialize a new repository at the given root.
Sourcepub fn with_template_format(self, format: TemplateFormat) -> Self
pub fn with_template_format(self, format: TemplateFormat) -> Self
Set the template format.
Sourcepub fn with_template_variant(self, variant: TemplateVariant) -> Self
pub fn with_template_variant(self, variant: TemplateVariant) -> Self
Set the template variant.
Sourcepub fn with_mode(self, mode: ConfigMode) -> Self
pub fn with_mode(self, mode: ConfigMode) -> Self
Override the configuration mode.
Sourcepub fn with_custom_template(self, template: Template) -> Self
pub fn with_custom_template(self, template: Template) -> Self
Set a custom template.
Sourcepub fn list_with_errors(&self) -> Result<(Vec<Adr>, Vec<(PathBuf, Error)>)>
pub fn list_with_errors(&self) -> Result<(Vec<Adr>, Vec<(PathBuf, Error)>)>
List all ADRs, also returning parse errors for files that look like ADRs but failed to parse.
This is used by the doctor command to report files that could not be
parsed (e.g., invalid frontmatter).
Sourcepub fn next_number(&self) -> Result<u32>
pub fn next_number(&self) -> Result<u32>
Get the next available ADR number.
Sourcepub fn find(&self, query: &str) -> Result<Adr>
pub fn find(&self, query: &str) -> Result<Adr>
Find an ADR by query (number or fuzzy title match).
Sourcepub fn new_adr(&self, title: impl Into<String>) -> Result<(Adr, PathBuf)>
pub fn new_adr(&self, title: impl Into<String>) -> Result<(Adr, PathBuf)>
Create a new ADR with the given title.
Sourcepub fn supersede(
&self,
title: impl Into<String>,
superseded: u32,
) -> Result<(Adr, PathBuf)>
pub fn supersede( &self, title: impl Into<String>, superseded: u32, ) -> Result<(Adr, PathBuf)>
Create a new ADR that supersedes another.
Sourcepub fn set_status(
&self,
number: u32,
status: AdrStatus,
superseded_by: Option<u32>,
) -> Result<PathBuf>
pub fn set_status( &self, number: u32, status: AdrStatus, superseded_by: Option<u32>, ) -> Result<PathBuf>
Change the status of an ADR.
If the new status is Superseded and superseded_by is provided,
a superseded-by link will be added automatically.
Sourcepub fn link(
&self,
source: u32,
target: u32,
source_kind: LinkKind,
target_kind: LinkKind,
) -> Result<()>
pub fn link( &self, source: u32, target: u32, source_kind: LinkKind, target_kind: LinkKind, ) -> Result<()>
Link two ADRs together.
Sourcepub fn update(&self, adr: &Adr, body: BodySectionPatch) -> Result<PathBuf>
pub fn update(&self, adr: &Adr, body: BodySectionPatch) -> Result<PathBuf>
Update an existing ADR.
When body is non-empty, only the listed body sections are patched in place;
metadata bytes on disk are left unchanged. When body is empty, metadata
(status, links, tags, and MADR 4.0.0 frontmatter fields) is updated via the
same path as Self::update_metadata.
Empty body does not re-render context/decision/consequences from adr
(unlike the pre-BodySectionPatch API). Mutating those fields on adr and
calling update(&adr, BodySectionPatch::default()) writes metadata only;
body text on disk is unchanged. Pass the new text in body to patch sections.
adr.title and adr.date are not written by this method.
Unlisted body sections are left byte-for-byte unchanged on disk, including MADR
### Consequences / ### Confirmation subsections under ## Decision Outcome.
Sourcepub fn read_content(&self, adr: &Adr) -> Result<String>
pub fn read_content(&self, adr: &Adr) -> Result<String>
Read the content of an ADR file.
Sourcepub fn write_content(&self, adr: &Adr, content: &str) -> Result<PathBuf>
pub fn write_content(&self, adr: &Adr, content: &str) -> Result<PathBuf>
Write content to an ADR file.
Sourcepub fn update_metadata(&self, adr: &Adr) -> Result<PathBuf>
pub fn update_metadata(&self, adr: &Adr) -> Result<PathBuf>
Update only the metadata (status, links, tags) of an existing ADR file, preserving all other content byte-for-byte.