mod read;
#[cfg(test)]
mod tests;
mod write;
use arcbox_image::machine_image::MachineImageManifest;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use super::MachineMount;
pub use read::{extract_data_disk, read_manifest};
pub use write::write;
pub const FORMAT_VERSION: u32 = 1;
const MANIFEST_ENTRY: &str = "manifest.json";
const DATA_DISK_ENTRY: &str = "data.img";
const TAR_BLOCK: usize = 512;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ArchiveManifest {
pub format_version: u32,
pub arcbox_version: String,
pub exported_at: DateTime<Utc>,
pub machine: ArchivedMachine,
pub image: MachineImageManifest,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ArchivedMachine {
pub name: String,
pub cpus: u32,
pub memory_mb: u64,
pub disk_gb: u64,
pub distro: String,
#[serde(default)]
pub distro_version: Option<String>,
#[serde(default)]
pub mounts: Vec<MachineMount>,
}