feat: commit unzip_file function
This commit is contained in:
1 parent
d8506301eb
commit
b28043a944
2 files changed
+12
-1
No files matched your search
@@ -5,6 +5,8 @@ use std::{
|
|||||||
|
|
||||||
use mlua::UserData;
|
use mlua::UserData;
|
||||||
|
|
||||||
|
use crate::tools::extract_zip;
|
||||||
|
|
||||||
pub struct PluginFileSystem;
|
pub struct PluginFileSystem;
|
||||||
impl UserData for PluginFileSystem {
|
impl UserData for PluginFileSystem {
|
||||||
fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(methods: &mut M) {
|
fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(methods: &mut M) {
|
||||||
@@ -54,5 +56,14 @@ impl UserData for PluginFileSystem {
|
|||||||
file.write_all(content.as_bytes())?;
|
file.write_all(content.as_bytes())?;
|
||||||
Ok(())
|
Ok(())
|
||||||
});
|
});
|
||||||
|
methods.add_function("unzip_file", |_, args: (String, String)| {
|
||||||
|
let file = PathBuf::from(args.0);
|
||||||
|
let target = PathBuf::from(args.1);
|
||||||
|
let res = extract_zip(&file, &target);
|
||||||
|
if let Err(e) = res {
|
||||||
|
return Err(mlua::Error::RuntimeError(e.to_string()));
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -313,7 +313,7 @@ impl Tool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extract_zip(file: &Path, target: &Path) -> anyhow::Result<()> {
|
pub fn extract_zip(file: &Path, target: &Path) -> anyhow::Result<()> {
|
||||||
let zip_file = std::fs::File::open(&file)?;
|
let zip_file = std::fs::File::open(&file)?;
|
||||||
let mut zip = zip::ZipArchive::new(zip_file)?;
|
let mut zip = zip::ZipArchive::new(zip_file)?;
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user