use std::path::Path;
use crate::atomic_write::atomic_write;
use crate::errors::ManifestError;
use super::parse::parse_manifest;
use super::schema::Manifest;
use super::write::write_manifest;
pub fn read_from(path: &Path) -> Result<Manifest, ManifestError> {
let source = std::fs::read_to_string(path).map_err(|source| ManifestError::Io {
source,
path: Some(path.to_path_buf()),
})?;
parse_manifest(&source, Some(path))
}
pub fn write_to(path: &Path, manifest: &Manifest) -> Result<(), ManifestError> {
let body = write_manifest(manifest);
atomic_write(path, body.as_bytes()).map_err(|source| ManifestError::Io {
source,
path: Some(path.to_path_buf()),
})
}