8 个版本
0.3.2 | 2023年1月31日 |
---|---|
0.3.1 | 2023年1月31日 |
0.2.2 | 2023年1月30日 |
0.1.1 | 2022年12月12日 |
#1 in #eight
每月下载 28 次
16KB
340 行
8dparser
Dpkg 信息解析器
使用方法
在 dependencies
中添加行到 cargo.toml
eight-deep-parser = "0.1"
尝试解析一个软件包
use std::process::Command;
use eight_deep_parser::{parse_multi, parse_one, Item};
fn main() {
let command = Command::new("dpkg")
.arg("-s")
.arg("plasma-workspace")
.output()
.unwrap();
let stdout = command.stdout;
let r = parse_one(std::str::from_utf8(&stdout).unwrap()).unwrap();
assert_eq!(
r.get("Package").unwrap(),
&Item::OneLine("plasma-workspace".to_string())
);
}
尝试解析多个软件包
use std::{fs, io::Read, process::Command};
use eight_deep_parser::{parse_multi, Item};
fn main() {
let dir = fs::read_dir("/var/lib/apt/lists").unwrap();
for i in dir.flatten() {
if !i.file_name().to_str().unwrap().ends_with("_Packages") {
continue;
}
let mut f = std::fs::File::open(i.path()).unwrap();
let mut buf = Vec::new();
f.read_to_end(&mut buf).unwrap();
let r = parse_multi(std::str::from_utf8(&buf).unwrap());
assert!(r.is_ok())
}
}
依赖项
~2–2.9MB
~54K SLoC