diff --git a/src/changelog.rs b/src/changelog.rs index 5f311b2..6a7ed26 100644 --- a/src/changelog.rs +++ b/src/changelog.rs @@ -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 Result<(String, String), Box> { + // 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"); + } }