This commit is contained in:
@@ -43,10 +43,10 @@ fn parse_series_csv(content: &str) -> Result<Vec<String>, Box<dyn Error>> {
|
||||
let mut entries = Vec::new();
|
||||
for result in rdr.records() {
|
||||
let record = result?;
|
||||
if let (Some(s), Some(c)) = (record.get(series_idx), record.get(created_idx)) {
|
||||
if let Ok(date) = NaiveDate::parse_from_str(c, "%Y-%m-%d") {
|
||||
entries.push((s.to_string(), date));
|
||||
}
|
||||
if let (Some(s), Some(c)) = (record.get(series_idx), record.get(created_idx))
|
||||
&& let Ok(date) = NaiveDate::parse_from_str(c, "%Y-%m-%d")
|
||||
{
|
||||
entries.push((s.to_string(), date));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,13 +186,13 @@ async fn get_components(
|
||||
let content = reqwest::get(&url).await?.text().await?;
|
||||
|
||||
for line in content.lines() {
|
||||
if line.starts_with("Components:") {
|
||||
if let Some((_, components)) = line.split_once(':') {
|
||||
return Ok(components
|
||||
.split_whitespace()
|
||||
.map(|s| s.to_string())
|
||||
.collect());
|
||||
}
|
||||
if line.starts_with("Components:")
|
||||
&& let Some((_, components)) = line.split_once(':')
|
||||
{
|
||||
return Ok(components
|
||||
.split_whitespace()
|
||||
.map(|s| s.to_string())
|
||||
.collect());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,42 +233,42 @@ fn parse_sources(
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(pkg) = fields.get("Package") {
|
||||
if pkg == target_package {
|
||||
// Check version if requested
|
||||
if let Some(ver) = target_version {
|
||||
if let Some(pkg_ver) = fields.get("Version") {
|
||||
if pkg_ver != ver {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
if let Some(pkg) = fields.get("Package")
|
||||
&& pkg == target_package
|
||||
{
|
||||
// Check version if requested
|
||||
if let Some(ver) = target_version {
|
||||
if let Some(pkg_ver) = fields.get("Version") {
|
||||
if pkg_ver != ver {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
let mut files = Vec::new();
|
||||
if let Some(checksums) = fields.get("Checksums-Sha256") {
|
||||
for line in checksums.lines() {
|
||||
let parts: Vec<&str> = line.split_whitespace().collect();
|
||||
if parts.len() >= 3 {
|
||||
files.push(FileEntry {
|
||||
sha256: parts[0].to_string(),
|
||||
size: parts[1].parse().unwrap_or(0),
|
||||
name: parts[2].to_string(),
|
||||
});
|
||||
}
|
||||
let mut files = Vec::new();
|
||||
if let Some(checksums) = fields.get("Checksums-Sha256") {
|
||||
for line in checksums.lines() {
|
||||
let parts: Vec<&str> = line.split_whitespace().collect();
|
||||
if parts.len() >= 3 {
|
||||
files.push(FileEntry {
|
||||
sha256: parts[0].to_string(),
|
||||
size: parts[1].parse().unwrap_or(0),
|
||||
name: parts[2].to_string(),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return Ok(Some(PackageStanza {
|
||||
package: pkg.clone(),
|
||||
version: fields.get("Version").cloned().unwrap_or_default(),
|
||||
directory: fields.get("Directory").cloned().unwrap_or_default(),
|
||||
vcs_git: fields.get("Vcs-Git").cloned(),
|
||||
vcs_browser: fields.get("Vcs-Browser").cloned(),
|
||||
files,
|
||||
}));
|
||||
}
|
||||
|
||||
return Ok(Some(PackageStanza {
|
||||
package: pkg.clone(),
|
||||
version: fields.get("Version").cloned().unwrap_or_default(),
|
||||
directory: fields.get("Directory").cloned().unwrap_or_default(),
|
||||
vcs_git: fields.get("Vcs-Git").cloned(),
|
||||
vcs_browser: fields.get("Vcs-Browser").cloned(),
|
||||
files,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -286,11 +286,11 @@ pub async fn get(
|
||||
// Handle Ubuntu case: Vcs-Git does not usually point to Launchpad but Salsa
|
||||
// We need to check manually if there is a launchpad repository for the package
|
||||
let mut preferred_vcs = None;
|
||||
if dist == "ubuntu" {
|
||||
if let Some(lp_url) = check_launchpad_repo(package_name).await? {
|
||||
debug!("Found Launchpad URL: {}", lp_url);
|
||||
preferred_vcs = Some(lp_url);
|
||||
}
|
||||
if dist == "ubuntu"
|
||||
&& let Some(lp_url) = check_launchpad_repo(package_name).await?
|
||||
{
|
||||
debug!("Found Launchpad URL: {}", lp_url);
|
||||
preferred_vcs = Some(lp_url);
|
||||
}
|
||||
|
||||
let base_url = get_base_url(&dist);
|
||||
@@ -324,19 +324,19 @@ pub async fn get(
|
||||
);
|
||||
|
||||
if let Some(stanza) = parse_sources(&compressed_data, package_name, version)? {
|
||||
if let Some(vcs) = &stanza.vcs_git {
|
||||
if preferred_vcs.is_none() {
|
||||
preferred_vcs = Some(vcs.clone());
|
||||
}
|
||||
if let Some(vcs) = &stanza.vcs_git
|
||||
&& preferred_vcs.is_none()
|
||||
{
|
||||
preferred_vcs = Some(vcs.clone());
|
||||
}
|
||||
|
||||
let archive_url = format!("{base_url}/{0}", stanza.directory);
|
||||
return Ok(PackageInfo {
|
||||
dist: dist,
|
||||
dist,
|
||||
series: series.to_string(),
|
||||
stanza: stanza,
|
||||
preferred_vcs: preferred_vcs,
|
||||
archive_url: archive_url,
|
||||
stanza,
|
||||
preferred_vcs,
|
||||
archive_url,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user