pull: refactor to remove series argument
All checks were successful
CI / build (push) Successful in 9m31s

This commit is contained in:
2026-01-11 12:36:19 +01:00
parent 2f43ed1597
commit 70e6d8c051
4 changed files with 14 additions and 11 deletions

View File

@@ -129,7 +129,7 @@ mod tests {
let package_info = crate::package_info::lookup(package, None, Some(series), "", dist, None) let package_info = crate::package_info::lookup(package, None, Some(series), "", dist, None)
.await .await
.expect("Cannot lookup package information"); .expect("Cannot lookup package information");
crate::pull::pull(&package_info, Some(series), Some(cwd), None) crate::pull::pull(&package_info, Some(cwd), None)
.await .await
.expect("Cannot pull package"); .expect("Cannot pull package");
log::info!("Successfully pulled package {}", package); log::info!("Successfully pulled package {}", package);

View File

@@ -111,7 +111,7 @@ fn main() {
Some(&progress_callback), Some(&progress_callback),
) )
.await?; .await?;
pkh::pull::pull(&package_info, series, None, Some(&progress_callback)).await pkh::pull::pull(&package_info, None, Some(&progress_callback)).await
}) { }) {
pb.finish_and_clear(); pb.finish_and_clear();
error!("{}", e); error!("{}", e);

View File

@@ -56,7 +56,8 @@ fn parse_series_csv(content: &str) -> Result<Vec<String>, Box<dyn Error>> {
Ok(entries.into_iter().map(|(s, _)| s).collect()) Ok(entries.into_iter().map(|(s, _)| s).collect())
} }
async fn get_ordered_series(dist: &str) -> Result<Vec<String>, Box<dyn Error>> { /// Get time-ordered list of series for a distribution, development series first
pub async fn get_ordered_series(dist: &str) -> Result<Vec<String>, Box<dyn Error>> {
let content = if Path::new(format!("/usr/share/distro-info/{dist}.csv").as_str()).exists() { let content = if Path::new(format!("/usr/share/distro-info/{dist}.csv").as_str()).exists() {
std::fs::read_to_string(format!("/usr/share/distro-info/{dist}.csv"))? std::fs::read_to_string(format!("/usr/share/distro-info/{dist}.csv"))?
} else { } else {
@@ -71,9 +72,8 @@ async fn get_ordered_series(dist: &str) -> Result<Vec<String>, Box<dyn Error>> {
let mut series = parse_series_csv(&content)?; let mut series = parse_series_csv(&content)?;
// For Debian, ensure 'sid' is first if it's not (it usually doesn't have a date or is very old/new depending on file) // For Debian, ensure 'sid' is first if it's not
// Actually in the file sid has 1993 date. // We want to try 'sid' (unstable) first for Debian.
// But we want to try 'sid' (unstable) first for Debian.
if dist == "debian" { if dist == "debian" {
series.retain(|s| s != "sid"); series.retain(|s| s != "sid");
series.insert(0, "sid".to_string()); series.insert(0, "sid".to_string());

View File

@@ -339,11 +339,11 @@ async fn fetch_archive_sources(
/// The source will be extracted under 'package/package'. /// The source will be extracted under 'package/package'.
pub async fn pull( pub async fn pull(
package_info: &PackageInfo, package_info: &PackageInfo,
series: Option<&str>,
cwd: Option<&Path>, cwd: Option<&Path>,
progress: ProgressCallback<'_>, progress: ProgressCallback<'_>,
) -> Result<(), Box<dyn Error>> { ) -> Result<(), Box<dyn Error>> {
let package = &package_info.stanza.package; let package = &package_info.stanza.package;
let series = &package_info.series;
let package_dir = if let Some(path) = cwd { let package_dir = if let Some(path) = cwd {
path.join(package) path.join(package)
} else { } else {
@@ -355,11 +355,14 @@ pub async fn pull(
// We have found a preferred VCS (git repository) for the package, so // We have found a preferred VCS (git repository) for the package, so
// we fetch the package from that repo. // we fetch the package from that repo.
// Depending on target series, we pick target branch; if no series is specified, // Depending on target series, we pick target branch; if latest series is specified,
// we target the development branch, i.e. the default branch // we target the development branch, i.e. the default branch
let branch_name = if let Some(s) = series { let branch_name = if crate::package_info::get_ordered_series(package_info.dist.as_str())
.await?[0]
!= *series
{
if package_info.dist == "ubuntu" { if package_info.dist == "ubuntu" {
Some(format!("{}/{}", package_info.dist, s)) Some(format!("{}/{}", package_info.dist, series))
} else { } else {
// Debian does not have reliable branch naming... // Debian does not have reliable branch naming...
// For now, we skip that part and clone default // For now, we skip that part and clone default
@@ -438,7 +441,7 @@ mod tests {
let info = crate::package_info::lookup(package, None, series, "", dist, None) let info = crate::package_info::lookup(package, None, series, "", dist, None)
.await .await
.unwrap(); .unwrap();
pull(&info, series, Some(cwd), None).await.unwrap(); pull(&info, Some(cwd), None).await.unwrap();
let package_dir = cwd.join(package); let package_dir = cwd.join(package);
assert!(package_dir.exists()); assert!(package_dir.exists());