changelog: obtain maintainer infomation

This commit is contained in:
2025-11-27 23:43:33 +01:00
parent 311304666f
commit 9c15490774

View File

@@ -70,7 +70,8 @@ pub fn generate_entry(changelog_file: &str, cwd: Option<&Path>, user_version: Op
compute_new_version(&old_version, false, false, false)
};
let new_entry = format_entry(&package, &new_version, &series, &commits, "Test Test", "test@test");
let (maintainer_name, maintainer_email) = get_maintainer_info()?;
let new_entry = format_entry(&package, &new_version, &series, &commits, &maintainer_name, &maintainer_email);
prepend_to_file(&changelog_path, &new_entry)?;
@@ -251,6 +252,19 @@ fn prepend_to_file(path: &Path, content: &str) -> Result<(), Box<dyn std::error:
Ok(())
}
fn get_maintainer_info() -> Result<(String, String), Box<dyn std::error::Error>> {
// From environment variables
if let (Ok(name), Ok(email)) = (std::env::var("DEBFULLNAME"), std::env::var("DEBEMAIL")) {
return Ok((name, email));
}
// From git config
let config = git2::Config::open_default()?;
let name = config.get_string("user.name")?;
let email = config.get_string("user.email")?;
Ok((name, email))
}
#[cfg(test)]
mod tests {
use super::*;
@@ -340,4 +354,18 @@ mod tests {
assert_eq!(compute_new_version("1.0.5", false, false, false), "1.0.6");
assert_eq!(compute_new_version("20241126", false, false, false), "20241127");
}
#[test]
fn test_get_maintainer_info() {
// Test with env vars
std::env::set_var("DEBFULLNAME", "Env Name");
std::env::set_var("DEBEMAIL", "env@example.com");
let (name, email) = get_maintainer_info().unwrap();
assert_eq!(name, "Env Name");
assert_eq!(email, "env@example.com");
std::env::remove_var("DEBFULLNAME");
std::env::remove_var("DEBEMAIL");
}
}