use camino::Utf8PathBuf;
use cordance_core::advise::{AdviseFinding, Severity};
use cordance_core::pack::CordancePack;
use super::AdviseRule;
pub struct RChangelog1;
impl AdviseRule for RChangelog1 {
fn id(&self) -> &'static str {
"R-changelog-1"
}
fn doctrine_anchor(&self) -> &'static str {
"doctrine/principles/documentation-knowledge.md"
}
fn check(&self, pack: &CordancePack) -> Vec<AdviseFinding> {
let changelog = pack
.sources
.iter()
.find(|r| !r.blocked && r.path.as_str() == "CHANGELOG.md");
let has_content = changelog.is_some_and(|r| r.size_bytes > 100);
if has_content {
return vec![];
}
vec![AdviseFinding {
id: self.id().into(),
severity: Severity::Info,
summary: "CHANGELOG.md missing or very short (< 100 bytes).".into(),
doctrine_anchor: Utf8PathBuf::from(self.doctrine_anchor()),
project_paths: vec!["CHANGELOG.md".into()],
remediation: "Add CHANGELOG.md following Keep a Changelog format.".into(),
}]
}
}