mirror of
https://github.com/DioxusLabs/dioxus
synced 2025-02-17 06:08:26 +00:00
feat: commit codee
This commit is contained in:
parent
59acefadc9
commit
3630224659
5 changed files with 49 additions and 6 deletions
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"Lua.diagnostics.globals": [
|
"Lua.diagnostics.globals": [
|
||||||
"plugin_logger"
|
"plugin_logger",
|
||||||
|
"PLUGIN_DOWNLOADER"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
8
src/plugin/interface/download.rs
Normal file
8
src/plugin/interface/download.rs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
use mlua::UserData;
|
||||||
|
|
||||||
|
pub struct PluginDownloader;
|
||||||
|
impl UserData for PluginDownloader {
|
||||||
|
fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(_methods: &mut M) {
|
||||||
|
// methods.add_function("name", function)
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,7 @@
|
||||||
use std::path::PathBuf;
|
use std::{
|
||||||
|
fs::{create_dir, create_dir_all},
|
||||||
|
path::PathBuf, io::{Read, Write},
|
||||||
|
};
|
||||||
|
|
||||||
use mlua::UserData;
|
use mlua::UserData;
|
||||||
|
|
||||||
|
@ -17,5 +20,34 @@ impl UserData for PluginFileSystem {
|
||||||
let path = PathBuf::from(path);
|
let path = PathBuf::from(path);
|
||||||
Ok(path.is_file())
|
Ok(path.is_file())
|
||||||
});
|
});
|
||||||
|
methods.add_function("create_dir", |_, args: (String, bool)| {
|
||||||
|
let path = args.0;
|
||||||
|
let recursive = args.1;
|
||||||
|
let path = PathBuf::from(path);
|
||||||
|
if !path.exists() {
|
||||||
|
let v = if recursive {
|
||||||
|
create_dir_all(path)
|
||||||
|
} else {
|
||||||
|
create_dir(path)
|
||||||
|
};
|
||||||
|
return Ok(v.is_ok());
|
||||||
|
}
|
||||||
|
Ok(true)
|
||||||
|
});
|
||||||
|
methods.add_function("file_get_content", |_, path: String| {
|
||||||
|
let path = PathBuf::from(path);
|
||||||
|
let mut file = std::fs::File::open(path)?;
|
||||||
|
let mut buffer = String::new();
|
||||||
|
file.read_to_string(&mut buffer)?;
|
||||||
|
Ok(buffer)
|
||||||
|
});
|
||||||
|
methods.add_function("file_set_content", |_, args: (String, String)| {
|
||||||
|
let path = args.0;
|
||||||
|
let content = args.1;
|
||||||
|
let path = PathBuf::from(path);
|
||||||
|
let mut file = std::fs::File::create(path)?;
|
||||||
|
file.write_all(content.as_bytes())?;
|
||||||
|
Ok(())
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ use mlua::{FromLua, Function, ToLua};
|
||||||
pub mod logger;
|
pub mod logger;
|
||||||
pub mod command;
|
pub mod command;
|
||||||
pub mod fs;
|
pub mod fs;
|
||||||
|
pub mod download;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct PluginInfo<'lua> {
|
pub struct PluginInfo<'lua> {
|
||||||
|
|
|
@ -7,7 +7,7 @@ use crate::tools::{app_path, clone_repo};
|
||||||
|
|
||||||
use self::{
|
use self::{
|
||||||
interface::PluginInfo,
|
interface::PluginInfo,
|
||||||
interface::{command::PluginCommander, logger::PluginLogger, fs::PluginFileSystem},
|
interface::{command::PluginCommander, logger::PluginLogger, fs::PluginFileSystem, download::PluginDownloader},
|
||||||
};
|
};
|
||||||
|
|
||||||
pub mod interface;
|
pub mod interface;
|
||||||
|
@ -36,7 +36,8 @@ impl PluginManager {
|
||||||
lua.globals()
|
lua.globals()
|
||||||
.set("PLUGIN_COMMAND", PluginCommander)
|
.set("PLUGIN_COMMAND", PluginCommander)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
lua.globals().set("PLUGINFS", PluginFileSystem).unwrap();
|
lua.globals().set("PLUGIN_FS", PluginFileSystem).unwrap();
|
||||||
|
lua.globals().set("PLUGIN_DOWNLOAD", PluginDownloader).unwrap();
|
||||||
|
|
||||||
let plugin_dir = Self::init_plugin_dir();
|
let plugin_dir = Self::init_plugin_dir();
|
||||||
let mut index = 1;
|
let mut index = 1;
|
||||||
|
@ -73,7 +74,7 @@ impl PluginManager {
|
||||||
for i in 1..(manager.len()? as i32 + 1) {
|
for i in 1..(manager.len()? as i32 + 1) {
|
||||||
let v = manager.get::<i32, PluginInfo>(i)?;
|
let v = manager.get::<i32, PluginInfo>(i)?;
|
||||||
println!("{v:?}");
|
println!("{v:?}");
|
||||||
let code = format!("manager[{i}].onLoad()");
|
let code = format!("manager[{i}].on_load()");
|
||||||
lua.load(&code).exec()?;
|
lua.load(&code).exec()?;
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
Loading…
Add table
Reference in a new issue