mirror of
https://github.com/snowfallorg/nix-software-center.git
synced 2024-10-26 23:19:24 +03:00
Fix malformed maintainer list parsing
This commit is contained in:
parent
b1a89ece31
commit
630a718bac
@ -22,6 +22,7 @@ pub struct Package {
|
||||
#[serde(skip_deserializing)]
|
||||
pub appdata: Option<AppData>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
|
||||
pub struct Meta {
|
||||
pub broken: Option<bool>,
|
||||
@ -32,7 +33,7 @@ pub struct Meta {
|
||||
#[serde(rename = "longDescription")]
|
||||
pub longdescription: Option<IString>,
|
||||
pub homepage: Option<StrOrVec>,
|
||||
pub maintainers: Option<Vec<PkgMaintainer>>,
|
||||
pub maintainers: Option<ijson::IValue>,
|
||||
pub position: Option<IString>,
|
||||
pub license: Option<LicenseEnum>,
|
||||
pub platforms: Option<Platform>
|
||||
@ -75,8 +76,8 @@ pub struct License {
|
||||
|
||||
#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)]
|
||||
pub struct PkgMaintainer {
|
||||
pub email: IString,
|
||||
pub github: IString,
|
||||
pub email: Option<IString>,
|
||||
pub github: Option<IString>,
|
||||
pub matrix: Option<IString>,
|
||||
pub name: Option<IString>
|
||||
}
|
||||
|
@ -869,29 +869,30 @@ impl Component for PkgModel {
|
||||
#[watch]
|
||||
set_label: {
|
||||
let mut s = String::new();
|
||||
for p in model.maintainers.iter() {
|
||||
if model.maintainers.iter().len() == 1 {
|
||||
let maintainerlist = model.maintainers.iter().filter(|m| m.name.is_some() || m.github.is_some()).collect::<Vec<_>>();
|
||||
for p in &maintainerlist {
|
||||
if maintainerlist.len() == 1 {
|
||||
if let Some(n) = &p.name {
|
||||
s.push_str(n);
|
||||
} else {
|
||||
s.push_str(&p.github);
|
||||
} else if let Some(g) = &p.github {
|
||||
s.push_str(g);
|
||||
}
|
||||
} else if model.maintainers.iter().len() == 2 && model.maintainers.get(0) == Some(p) {
|
||||
} else if maintainerlist.len() == 2 && model.maintainers.get(0) == Some(p) {
|
||||
if let Some(n) = &p.name {
|
||||
let _ = write!(s, "{} ", n.to_string());
|
||||
} else {
|
||||
let _ = write!(s, "{} ", p.github.to_string());
|
||||
let _ = write!(s, "{} ", n.as_str());
|
||||
} else if let Some(g) = &p.github {
|
||||
s.push_str(g);
|
||||
}
|
||||
} else if Some(p) == model.maintainers.iter().last() {
|
||||
} else if Some(p) == maintainerlist.last() {
|
||||
if let Some(n) = &p.name {
|
||||
let _ = write!(s, "and {}", n.to_string());
|
||||
} else {
|
||||
let _ = write!(s, "and {}", p.github.to_string());
|
||||
let _ = write!(s, "and {}", n.as_str());
|
||||
} else if let Some(g) = &p.github {
|
||||
let _ = write!(s, "and {}", g.as_str());
|
||||
}
|
||||
} else if let Some(n) = &p.name {
|
||||
let _ = write!(s, "{}, ", n.to_string());
|
||||
} else {
|
||||
let _ = write!(s, "{}, ", p.github.to_string());
|
||||
let _ = write!(s, "{}, ", n.as_str());
|
||||
} else if let Some(g) = &p.github {
|
||||
let _ = write!(s, "{}, ", g.as_str());
|
||||
}
|
||||
}
|
||||
if model.maintainers.is_empty() {
|
||||
|
@ -5,7 +5,7 @@ use adw::prelude::*;
|
||||
use edit_distance;
|
||||
use serde_json::Value;
|
||||
use spdx::Expression;
|
||||
use crate::{parse::{packages::{Package, LicenseEnum, Platform}, cache::{uptodatelegacy, uptodateflake}, config::{NscConfig, getconfig, editconfig}}, ui::{installedpage::InstalledItem, pkgpage::PkgPageInit, welcome::WelcomeMsg}, APPINFO, config};
|
||||
use crate::{parse::{packages::{Package, LicenseEnum, Platform, PkgMaintainer}, cache::{uptodatelegacy, uptodateflake}, config::{NscConfig, getconfig, editconfig}}, ui::{installedpage::InstalledItem, pkgpage::PkgPageInit, welcome::WelcomeMsg}, APPINFO, config};
|
||||
use log::*;
|
||||
|
||||
use super::{
|
||||
@ -873,8 +873,10 @@ impl Component for AppModel {
|
||||
platforms.insert(0, input.system.to_string());
|
||||
|
||||
if let Some(m) = input.meta.maintainers.clone() {
|
||||
for m in m {
|
||||
maintainers.push(m);
|
||||
if let Ok(m) = ijson::from_value::<Vec<PkgMaintainer>>(&m) {
|
||||
for m in m {
|
||||
maintainers.push(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user