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)
|
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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
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'.
|
/// 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());
|
||||||
|
|||||||
Reference in New Issue
Block a user