chlog: add series selector
CI / build (push) Successful in 15m3s
CI / snap (push) Successful in 2m6s

This commit is contained in:
2026-08-11 14:42:23 +02:00
parent e3d855ca66
commit d3a07bc80d
4 changed files with 227 additions and 2 deletions
+43 -1
View File
@@ -150,8 +150,50 @@ fn main() {
Some(("chlog", sub_matches)) => {
let cwd = current_dir_or_exit();
let version = sub_matches.get_one::<String>("version").map(|s| s.as_str());
let cli_series = sub_matches.get_one::<String>("series").map(|s| s.as_str());
if let Err(e) = generate_entry("debian/changelog", Some(&cwd), version) {
// Determine target series: CLI flag > interactive selector > current changelog series
let target_series = if let Some(s) = cli_series {
Some(s.to_string())
} else {
// Parse current changelog to determine the default series
let changelog_path = cwd.join("debian/changelog");
match pkh::changelog::parse_changelog_header(&changelog_path) {
Ok((_pkg, _ver, current_series)) => {
// Try to get the list of available series for this distribution
match rt.block_on(async {
let dist =
pkh::distro_info::get_dist_from_series(&current_series).await?;
pkh::distro_info::get_ordered_series_name(&dist).await
}) {
Ok(series_list) => {
match ui::select_series(&series_list, &current_series) {
Ok(selected) => Some(selected),
Err(e) => {
error!(
"Series selection failed: {}. Using current series '{}' instead.",
e, current_series
);
Some(current_series)
}
}
}
Err(_) => {
// Could not fetch series list, use current series as default
Some(current_series)
}
}
}
Err(_) => None,
}
};
if let Err(e) = generate_entry(
"debian/changelog",
Some(&cwd),
version,
target_series.as_deref(),
) {
error!("{}", e);
std::process::exit(1);
}