engram_rs/lib.rs
1//! Engram-rs: Unified archive library with manifest, signatures, and VFS support
2//!
3//! This library provides a complete implementation of the Engram v0.3 archive format,
4//! combining:
5//! - Compressed archive storage (LZ4/Zstd)
6//! - Manifest with signature verification
7//! - VFS (Virtual File System) via embedded SQLite databases
8//! - Fast O(1) file lookup
9//!
10//! # Example
11//!
12//! ```no_run
13//! use engram_rs::{ArchiveWriter, ArchiveReader};
14//!
15//! // Create an archive
16//! let mut writer = ArchiveWriter::create("example.eng")?;
17//! writer.add_file("data.txt", b"Hello, World!")?;
18//! writer.finalize()?;
19//!
20//! // Read from archive
21//! let mut reader = ArchiveReader::open("example.eng")?;
22//! let data = reader.read_file("data.txt")?;
23//! # Ok::<(), engram_rs::error::EngramError>(())
24//! ```
25
26// Core modules
27pub mod archive;
28pub mod compat;
29pub mod error;
30pub mod manifest;
31pub mod vfs;
32
33// Re-export commonly used types
34pub use archive::{
35 ArchiveReader, ArchiveWriter, CompressionMethod, EntryInfo, FileHeader, CD_ENTRY_SIZE,
36 FORMAT_VERSION_MAJOR, FORMAT_VERSION_MINOR, HEADER_SIZE, MAGIC_NUMBER, MAX_PATH_LENGTH,
37};
38pub use compat::EngramVfs;
39pub use error::{EngramError, Result};
40pub use manifest::{Author, FileEntry, Manifest, Metadata, SignatureEntry};
41pub use vfs::VfsReader;
42
43#[cfg(test)]
44mod tests {
45 use super::*;
46
47 #[test]
48 fn test_library_basics() {
49 // Ensure core types are accessible
50 let _method = CompressionMethod::Zstd;
51 let _header = FileHeader::new();
52 }
53}