use use_archive::{
ArchiveEncoding, ArchiveEntry, ArchiveEntryKind, ArchiveFormat, ArchiveManifest, ArchivePolicy,
CompressionFormat, is_safe_relative_archive_path,
};
fn main() {
let encoding = ArchiveEncoding::from_extension("release.tar.zst");
assert_eq!(encoding.archive, ArchiveFormat::Tar);
assert_eq!(encoding.compression, CompressionFormat::Zstd);
assert!(is_safe_relative_archive_path("docs/readme.md"));
assert!(!is_safe_relative_archive_path("../secrets.env"));
let policy = ArchivePolicy::strict();
let manifest = ArchiveManifest::new(encoding).with_entries(vec![
ArchiveEntry::new("docs/readme.md", ArchiveEntryKind::File).with_size(128),
]);
assert!(policy.allows_entries(manifest.entries()));
assert_eq!(manifest.file_count(), 1);
assert_eq!(manifest.total_size(), 128);
}