pub struct ExportFile<W: Write + Seek> { /* private fields */ }Expand description
Writes an r2z (r2modman zip) profile export.
Produces a zip archive containing a YAML manifest (export.r2x) and
optional config files.
§Examples
use std::io::Cursor;
use loadsmith_thunderstore::r2z::{ExportFile, ProfileManifest, Mod, Version};
use thunderstore::PackageIdent;
let manifest = ProfileManifest::new(
"Test Profile",
vec![Mod::new(PackageIdent::new("A", "B"), Version::new(1, 0, 0), true)],
(),
);
let mut export = ExportFile::create(Cursor::new(Vec::new()), &manifest).unwrap();
export.write_file("config/settings.cfg", &b"enabled=true"[..]).unwrap();
let data: Cursor<Vec<u8>> = export.finish().unwrap();
assert!(!data.get_ref().is_empty());Implementations§
Source§impl<W: Write + Seek> ExportFile<W>
impl<W: Write + Seek> ExportFile<W>
Sourcepub fn create<T: Serialize>(
writer: W,
manifest: &ProfileManifest<T>,
) -> Result<Self>
pub fn create<T: Serialize>( writer: W, manifest: &ProfileManifest<T>, ) -> Result<Self>
Creates a new export archive and writes the manifest as export.r2x.
§Examples
use std::io::Cursor;
use loadsmith_thunderstore::r2z::{ExportFile, ProfileManifest};
let manifest = ProfileManifest::new("Test", vec![], ());
let export = ExportFile::create(Cursor::new(Vec::new()), &manifest).unwrap();Sourcepub fn finish(self) -> Result<W>
pub fn finish(self) -> Result<W>
Finalizes the zip archive and returns the inner writer.
§Examples
use std::io::Cursor;
use loadsmith_thunderstore::r2z::{ExportFile, ProfileManifest};
let manifest = ProfileManifest::new("Test", vec![], ());
let export = ExportFile::create(Cursor::new(Vec::new()), &manifest).unwrap();
let data = export.finish().unwrap();Sourcepub fn write_file(
&mut self,
zip_path: impl AsRef<Utf8Path>,
reader: impl Read,
) -> Result<()>
pub fn write_file( &mut self, zip_path: impl AsRef<Utf8Path>, reader: impl Read, ) -> Result<()>
Writes a file into the zip archive at the given virtual path.
The path is normalized before being stored in the archive.
§Examples
use std::io::Cursor;
use loadsmith_thunderstore::r2z::{ExportFile, ProfileManifest};
let manifest = ProfileManifest::new("Test", vec![], ());
let mut export = ExportFile::create(Cursor::new(Vec::new()), &manifest).unwrap();
export.write_file("BepInEx/config/plugin.cfg", &b"key=value"[..]).unwrap();
let _data = export.finish().unwrap();Sourcepub fn write_config_from_dir(
&mut self,
directory: impl AsRef<Utf8Path>,
filter: bool,
) -> Result<()>
pub fn write_config_from_dir( &mut self, directory: impl AsRef<Utf8Path>, filter: bool, ) -> Result<()>
Walks a directory and writes its contents into the archive.
When filter is true, only files matching common config extensions
(.cfg, .txt, .json, .yml, .yaml, .ini) or paths under
BepInEx/config/ are included.
§Examples
use std::io::Cursor;
use loadsmith_thunderstore::r2z::{ExportFile, ProfileManifest};
use camino::Utf8Path;
let manifest = ProfileManifest::new("Test", vec![], ());
let mut export = ExportFile::create(Cursor::new(Vec::new()), &manifest).unwrap();
export.write_config_from_dir(Utf8Path::new("./config"), true).unwrap();
let _data = export.finish().unwrap();Auto Trait Implementations§
impl<W> !UnwindSafe for ExportFile<W>
impl<W> Freeze for ExportFile<W>where
W: Freeze,
impl<W> RefUnwindSafe for ExportFile<W>where
W: RefUnwindSafe,
impl<W> Send for ExportFile<W>where
W: Send,
impl<W> Sync for ExportFile<W>where
W: Sync,
impl<W> Unpin for ExportFile<W>where
W: Unpin,
impl<W> UnsafeUnpin for ExportFile<W>where
W: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more