pull: refactor to remove series argument
All checks were successful
CI / build (push) Successful in 9m31s
All checks were successful
CI / build (push) Successful in 9m31s
This commit is contained in:
@@ -129,7 +129,7 @@ mod tests {
|
||||
let package_info = crate::package_info::lookup(package, None, Some(series), "", dist, None)
|
||||
.await
|
||||
.expect("Cannot lookup package information");
|
||||
crate::pull::pull(&package_info, Some(series), Some(cwd), None)
|
||||
crate::pull::pull(&package_info, Some(cwd), None)
|
||||
.await
|
||||
.expect("Cannot pull package");
|
||||
log::info!("Successfully pulled package {}", package);
|
||||
|
||||
@@ -111,7 +111,7 @@ fn main() {
|
||||
Some(&progress_callback),
|
||||
)
|
||||
.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();
|
||||
error!("{}", e);
|
||||
|
||||
@@ -56,7 +56,8 @@ fn parse_series_csv(content: &str) -> Result<Vec<String>, Box<dyn Error>> {
|
||||
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() {
|
||||
std::fs::read_to_string(format!("/usr/share/distro-info/{dist}.csv"))?
|
||||
} 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)?;
|
||||
|
||||
// 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)
|
||||
// Actually in the file sid has 1993 date.
|
||||
// But we want to try 'sid' (unstable) first for Debian.
|
||||
// For Debian, ensure 'sid' is first if it's not
|
||||
// We want to try 'sid' (unstable) first for Debian.
|
||||
if dist == "debian" {
|
||||
series.retain(|s| s != "sid");
|
||||
series.insert(0, "sid".to_string());
|
||||
|
||||
13
src/pull.rs
13
src/pull.rs
@@ -339,11 +339,11 @@ async fn fetch_archive_sources(
|
||||
/// The source will be extracted under 'package/package'.
|
||||
pub async fn pull(
|
||||
package_info: &PackageInfo,
|
||||
series: Option<&str>,
|
||||
cwd: Option<&Path>,
|
||||
progress: ProgressCallback<'_>,
|
||||
) -> Result<(), Box<dyn Error>> {
|
||||
let package = &package_info.stanza.package;
|
||||
let series = &package_info.series;
|
||||
let package_dir = if let Some(path) = cwd {
|
||||
path.join(package)
|
||||
} else {
|
||||
@@ -355,11 +355,14 @@ pub async fn pull(
|
||||
// We have found a preferred VCS (git repository) for the package, so
|
||||
// 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
|
||||
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" {
|
||||
Some(format!("{}/{}", package_info.dist, s))
|
||||
Some(format!("{}/{}", package_info.dist, series))
|
||||
} else {
|
||||
// Debian does not have reliable branch naming...
|
||||
// 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)
|
||||
.await
|
||||
.unwrap();
|
||||
pull(&info, series, Some(cwd), None).await.unwrap();
|
||||
pull(&info, Some(cwd), None).await.unwrap();
|
||||
|
||||
let package_dir = cwd.join(package);
|
||||
assert!(package_dir.exists());
|
||||
|
||||
Reference in New Issue
Block a user