pkgs1
This commit is contained in:
parent
449924a4aa
commit
5dcdd8510f
@ -0,0 +1,36 @@
|
||||
use crate::structs::Package;
|
||||
|
||||
fn parse_dpkg_output(output: &str) -> Vec<Package> {
|
||||
output
|
||||
.lines()
|
||||
.filter_map(|line| {
|
||||
let mut parts = line.split('\t');
|
||||
let name = parts.next()?.to_string();
|
||||
let version = parts.next()?.to_string();
|
||||
Some(Package { name, version })
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
use std::collections::HashMap;
|
||||
|
||||
fn packages_to_hashmap(packages: &[Package]) -> HashMap<String, String> {
|
||||
packages.iter().map(|p| (p.name.clone(), p.version.clone())).collect()
|
||||
}
|
||||
|
||||
#[derive(serde::Serialize)]
|
||||
struct PackagesWrapper<'a> {
|
||||
packages: &'a HashMap<String, String>,
|
||||
}
|
||||
|
||||
use std::fs;
|
||||
use std::error::Error;
|
||||
use serde::Serialize;
|
||||
|
||||
/// Save any serializable struct or collection into a TOML file.
|
||||
pub fn save_to_toml<T: Serialize>(data: &T, path: &str) -> Result<(), Box<dyn Error>> {
|
||||
let toml_string = toml::to_string_pretty(data)?;
|
||||
fs::write(path, toml_string)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -7,6 +7,11 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let sources = load_sources("/etc/apt/sources.list")?;
|
||||
save_sources_to_toml(&sources, "sources.toml")?;
|
||||
println!("Saved sources to sources.toml");
|
||||
|
||||
let pkg_map = packages_to_hashmap(&packages);
|
||||
let wrapper = PackagesWrapper { packages: &pkg_map };
|
||||
save_to_toml(&wrapper, "packages.toml")?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user