archive_basic_usage/
basic_usage.rs1use use_archive::{
2 ArchiveEncoding, ArchiveEntry, ArchiveEntryKind, ArchiveFormat, ArchiveManifest, ArchivePolicy,
3 CompressionFormat, is_safe_relative_archive_path,
4};
5
6fn main() {
7 let encoding = ArchiveEncoding::from_extension("release.tar.zst");
8
9 assert_eq!(encoding.archive, ArchiveFormat::Tar);
10 assert_eq!(encoding.compression, CompressionFormat::Zstd);
11 assert!(is_safe_relative_archive_path("docs/readme.md"));
12 assert!(!is_safe_relative_archive_path("../secrets.env"));
13
14 let policy = ArchivePolicy::strict();
15 let manifest = ArchiveManifest::new(encoding).with_entries(vec![
16 ArchiveEntry::new("docs/readme.md", ArchiveEntryKind::File).with_size(128),
17 ]);
18
19 assert!(policy.allows_entries(manifest.entries()));
20 assert_eq!(manifest.file_count(), 1);
21 assert_eq!(manifest.total_size(), 128);
22}