composefs 0.3.0

Rust library for the composefs filesystem
Documentation
use anyhow::Result;

use crate::{
    dumpfile::write_dumpfile,
    erofs::writer::mkfs_erofs,
    fsverity::{compute_verity, FsVerityHashValue},
    repository::Repository,
    tree::FileSystem,
};

impl<ObjectID: FsVerityHashValue> FileSystem<ObjectID> {
    pub fn commit_image(
        &mut self,
        repository: &Repository<ObjectID>,
        image_name: Option<&str>,
    ) -> Result<ObjectID> {
        self.ensure_root_stat();
        repository.write_image(image_name, &mkfs_erofs(self))
    }

    pub fn compute_image_id(&mut self) -> ObjectID {
        self.ensure_root_stat();
        compute_verity(&mkfs_erofs(self))
    }

    pub fn print_dumpfile(&mut self) -> Result<()> {
        self.ensure_root_stat();
        write_dumpfile(&mut std::io::stdout(), self)
    }
}