PatchBukkit/rust/src/directories.rs
Alexander Medvedev e1fb278af0 fix: ci
2026-08-19 11:56:13 +02:00

65 lines
1.8 KiB
Rust

use std::{fs, path::PathBuf};
use pumpkin::plugin::Context;
pub struct PatchBukkitDirectories {
pub base: PathBuf,
pub plugins: PathBuf,
pub plugin_updates: PathBuf,
pub j4rs: PathBuf,
pub jassets: PathBuf,
}
pub fn setup_directories(server: &Context) -> Result<PatchBukkitDirectories, String> {
let data_folder = std::path::absolute(server.get_data_folder())
.map_err(|_| "Failed to get absolute directory from relative")?;
let server_root = data_folder
.parent()
.ok_or("Failed to determine server root from PatchBukkit data folder")?;
let base = server_root.join("patchbukkit");
let plugins = base.join("patchbukkit-plugins");
let plugin_updates = plugins.join("update");
let j4rs = base.join("j4rs");
let jassets = j4rs.join("jassets");
fs::create_dir_all(&jassets)
.map_err(|err| format!("Failed to create jassets folder: {err:?}"))?;
fs::create_dir_all(&plugins)
.map_err(|err| format!("Failed to create patchbukkit-plugins folder: {err:?}"))?;
let patchbukkit_jar_dest = jassets.join("patchbukkit.jar");
let candidates = [
server_root
.join("java")
.join("patchbukkit")
.join("build")
.join("libs")
.join("patchbukkit.jar"),
server_root
.join("patchbukkit")
.join("java")
.join("patchbukkit")
.join("build")
.join("libs")
.join("patchbukkit.jar"),
];
for candidate in &candidates {
if candidate.exists() {
let _ = fs::copy(candidate, &patchbukkit_jar_dest);
break;
}
}
Ok(PatchBukkitDirectories {
base,
plugins,
plugin_updates,
j4rs,
jassets,
})
}