use anyhow::{anyhow, Result};
use std::path::PathBuf;
pub struct DeployPaths {
pub behavior: PathBuf,
pub resource: PathBuf,
}
pub fn resolve_deploy_paths(addon_name: &str) -> Result<DeployPaths> {
let _ = dotenvy::dotenv();
let bp_env = std::env::var("BEHAVIOR_PACKS_PATH").ok();
let rp_env = std::env::var("RESOURCE_PACKS_PATH").ok();
if let (Some(bp), Some(rp)) = (bp_env, rp_env) {
return Ok(DeployPaths {
behavior: PathBuf::from(bp).join(addon_name),
resource: PathBuf::from(rp).join(addon_name),
});
}
#[cfg(target_os = "windows")]
if let Some(local_app_data) = dirs::data_local_dir() {
let base = local_app_data
.join("Packages")
.join("Microsoft.MinecraftUWP_8wekyb3d8bbwe")
.join("LocalState")
.join("games")
.join("com.mojang");
if base.exists() {
return Ok(DeployPaths {
behavior: base.join("development_behavior_packs").join(addon_name),
resource: base.join("development_resource_packs").join(addon_name),
});
}
}
Err(anyhow!(
"Deploy paths not configured.\n\
Copy .env.template to .env and set BEHAVIOR_PACKS_PATH and RESOURCE_PACKS_PATH."
))
}