use std::{
env,
path::{Component, PathBuf},
};
use rustolio_utils::prelude::*;
use crate::Result;
pub fn manifest_dir() -> Result<PathBuf> {
Ok(PathBuf::from(
env::var("CARGO_MANIFEST_DIR").context("CARGO_MANIFEST_DIR not set")?,
))
}
pub fn static_dir() -> Result<PathBuf> {
let dir = manifest_dir()?.join("static");
Ok(dir)
}
pub fn pkg_dir() -> Result<PathBuf> {
let dir = manifest_dir()?.join("pkg");
Ok(dir)
}
pub fn out_dir() -> Result<PathBuf> {
Ok(env::var("OUT_DIR").context("OUT_DIR not set")?.into())
}
pub fn target_dir() -> Result<PathBuf> {
let out_dir: PathBuf = out_dir()?;
let mut target = PathBuf::new();
for dir in out_dir.components() {
target.push(dir);
if matches!(dir, Component::Normal(d) if d == "target") {
break;
}
}
Ok(target)
}
pub fn web_build_dir() -> Result<PathBuf> {
Ok(target_dir()?.join("rustolio-web-build"))
}
pub fn tmp_dir() -> Result<PathBuf> {
Ok(target_dir()?.join("tmp"))
}