pub mod build;
pub mod diff;
pub mod hash;
pub mod render;
pub mod serial;
pub mod summary;
use crate::error::GitClosureError;
pub(crate) type Result<T> = std::result::Result<T, GitClosureError>;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SnapshotFile {
pub path: String,
pub sha256: String,
pub mode: String,
pub size: u64,
pub encoding: Option<String>,
pub symlink_target: Option<String>,
pub content: Vec<u8>,
}
#[derive(Debug, Default, Clone, PartialEq, Eq)]
pub struct SnapshotHeader {
pub snapshot_hash: String,
pub file_count: usize,
pub git_rev: Option<String>,
pub git_branch: Option<String>,
pub extra_headers: Vec<(String, String)>,
}
#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub struct BuildOptions {
pub include_untracked: bool,
pub require_clean: bool,
pub source_annotation: Option<(String, String)>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct VerifyReport {
pub file_count: usize,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ListEntry {
pub path: String,
pub is_symlink: bool,
pub symlink_target: Option<String>,
pub sha256: String,
pub mode: String,
pub size: u64,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
pub struct SnapshotSummary {
pub snapshot_hash: String,
pub file_count: usize,
pub regular_count: usize,
pub symlink_count: usize,
pub total_bytes: u64,
pub git_rev: Option<String>,
pub git_branch: Option<String>,
pub largest_files: Vec<(String, u64)>,
}