mirror of
https://github.com/LCE-Hub/LCE-Emerald-Launcher.git
synced 2026-08-20 04:27:29 +00:00
49 lines
1.5 KiB
Rust
49 lines
1.5 KiB
Rust
use serde::Serialize;
|
|
use std::fs;
|
|
#[derive(Serialize)]
|
|
pub struct DirEntry {
|
|
pub name: String,
|
|
pub is_dir: bool,
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn get_plugins_dir(app: tauri::AppHandle) -> Result<String, String> {
|
|
let dir = crate::util::get_app_dir(&app).join("plugins");
|
|
fs::create_dir_all(&dir).map_err(|e| e.to_string())?;
|
|
Ok(dir.to_string_lossy().to_string())
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn list_directory(path: String) -> Result<Vec<DirEntry>, String> {
|
|
let entries = fs::read_dir(&path).map_err(|e| e.to_string())?;
|
|
let mut results = Vec::new();
|
|
for entry in entries {
|
|
let entry = entry.map_err(|e| e.to_string())?;
|
|
results.push(DirEntry {
|
|
name: entry.file_name().to_string_lossy().to_string(),
|
|
is_dir: entry.file_type().map(|t| t.is_dir()).unwrap_or(false),
|
|
});
|
|
}
|
|
Ok(results)
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn create_plugin_dir(app: tauri::AppHandle, plugin_id: String) -> Result<String, String> {
|
|
let dir = crate::util::get_app_dir(&app)
|
|
.join("plugins")
|
|
.join(&plugin_id);
|
|
fs::create_dir_all(&dir).map_err(|e| e.to_string())?;
|
|
Ok(dir.to_string_lossy().to_string())
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn remove_plugin_dir(app: tauri::AppHandle, plugin_id: String) -> Result<(), String> {
|
|
let dir = crate::util::get_app_dir(&app)
|
|
.join("plugins")
|
|
.join(&plugin_id);
|
|
if dir.exists() {
|
|
fs::remove_dir_all(&dir).map_err(|e| e.to_string())?;
|
|
}
|
|
Ok(())
|
|
}
|