diff options
Diffstat (limited to 'src/image.rs')
-rw-r--r-- | src/image.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/image.rs b/src/image.rs index db6102f..62f80f7 100644 --- a/src/image.rs +++ b/src/image.rs @@ -1,26 +1,34 @@ +//! Virtual machine image handling. + use std::fs::copy; use std::path::{Path, PathBuf}; use std::process::Command; use std::result::Result; +/// Errors from this module. #[derive(Debug, thiserror::Error)] pub enum ImageError { + /// Error resizing image. #[error("qemu-img resize failed: {0}")] ResizeError(String), + /// I/O error. #[error(transparent)] IoError(#[from] std::io::Error), + /// Error parsing a string as UTF8. #[error(transparent)] StringError(#[from] std::string::FromUtf8Error), } +/// A virtual machine image. #[derive(Debug, Clone)] pub struct VirtualMachineImage { filename: PathBuf, } impl VirtualMachineImage { + /// Create new image from a base image. pub fn new_from_base(base_image: &Path, image: &Path) -> Result<Self, ImageError> { copy(base_image, image)?; Ok(Self { @@ -28,10 +36,12 @@ impl VirtualMachineImage { }) } + /// Filename of the image. pub fn filename(&self) -> &Path { &self.filename } + /// Change size of image. pub fn resize(&self, new_size: u64) -> Result<(), ImageError> { let r = Command::new("qemu-img") .arg("resize") |