1 个版本 (0 个不稳定版本)
新 1.0.0-rc.1 | 2024 年 8 月 2 日 |
---|
#297 在 文件系统
92 每月下载次数
38KB
667 行
此库允许检查 Cargo/crates.io 包的内容,不需要在磁盘上写入任何临时文件,并且在大多数情况下也不需要在内存中保留文件。
它是一个用于压缩 tar 归档的流式解析器(.crate
文件)。此外,它可以执行正确性检查以检测格式不正确的包(例如,重复的 tar 路径、大小写不敏感文件系统上的模糊路径、指向 crate 外部的符号链接)。
use crate_untar::*;
// you'll need other libraries to download the .crate file and verify its cecksum
let mut archive = Unarchiver::new(std::fs::File::open("example.crate")?)?;
let mut tarball = TarballParser::new(&mut archive, "example", "1.0.0")?;
for res in tarball.entries() {
let (path, file) = res?;
// filter by path or file.len() if you need
if path.extension() != Some("rs".as_ref()) {
continue;
}
// process the file here if you want
// The file implements io::Read too
let vec = file.into_vec()?;
}
let parsed = tarball.finalize()?;
println!("{:#?}", parsed.cargo_toml);
println!("{:#?}", parsed.cargo_toml_orig);
println!("{:#?}", parsed.cargo_lock);
println!("{:#?}", parsed.cargo_vcs_info);
# Ok::<_, Box<dyn std::error::Error>>(())
依赖关系
~6–14MB
~193K SLoC