Fix profile package listing

This commit is contained in:
Victor Fuentes 2022-09-29 03:20:04 -04:00
parent 8c9b1da67a
commit 8a6810fe08
No known key found for this signature in database
GPG Key ID: 0A88B68D6A9ACAE0
3 changed files with 21 additions and 16 deletions

View File

@ -64,7 +64,7 @@
openssl
pandoc
pango
pkgconfig
pkg-config
polkit
wrapGAppsHook4
nixos-appstream-data

View File

@ -158,6 +158,11 @@ pub struct AppScreenshotImage {
pub url: String,
}
#[derive(Debug, Serialize, Deserialize)]
struct FlakePkgs {
packages: HashMap<String, FlakeJson>
}
#[derive(Debug, Serialize, Deserialize)]
struct FlakeJson {
pname: IString,
@ -236,7 +241,7 @@ pub fn readprofilepkgs() -> Result<HashMap<String, String>, Box<dyn Error + Sen
}
let file = File::open(cachefile)?;
let reader = BufReader::new(file);
let profilepkgs: HashMap<String, FlakeJson> = simd_json::serde::from_reader(reader)?;
let profilepkgs = profilepkgs.into_iter().filter_map(|(k, v)| if let Some(pkg) = k.strip_prefix("legacyPackages.x86_64-linux.") { Some((pkg.to_string(), v.version.to_string())) } else { None }).collect::<HashMap<_, _>>();
let profilepkgs: FlakePkgs = simd_json::serde::from_reader(reader)?;
let profilepkgs = profilepkgs.packages.into_iter().map(|(pkg, v)| (pkg.to_string(), v.version.to_string())).collect::<HashMap<_, _>>();
Ok(profilepkgs)
}

View File

@ -957,20 +957,20 @@ impl Component for AppModel {
.arg("show-derivation")
.arg(&storepath)
.output()?;
let data: Value = serde_json::from_str(&String::from_utf8_lossy(&output.stdout))?;
if let Some(version) = data.as_object().unwrap().values().next().unwrap()["env"].get("version") {
let version = version.as_str().unwrap().to_string();
pcurrpkgs.insert(
pkgname.to_string(),
version,
);
} else {
pcurrpkgs.insert(
pkgname.to_string(),
String::default(),
);
if let Ok(data) = serde_json::from_str::<Value>(&String::from_utf8_lossy(&output.stdout)) {
if let Some(version) = data.as_object().unwrap().values().next().unwrap()["env"].get("version") {
let version = version.as_str().unwrap().to_string();
pcurrpkgs.insert(
pkgname.to_string(),
version,
);
} else {
pcurrpkgs.insert(
pkgname.to_string(),
String::default(),
);
}
}
}
}
}