use std::env;
use std::fs;
use std::path::{Path, PathBuf};
use std::time::{SystemTime, UNIX_EPOCH};
pub(crate) struct TempProject {
path: PathBuf,
}
impl TempProject {
pub(crate) fn new(label: &str) -> Self {
let nanos = SystemTime::now()
.duration_since(UNIX_EPOCH)
.expect("system time should be after epoch")
.as_nanos();
let path = env::temp_dir().join(format!(
"xtazy-dealer-test-{}-{label}-{nanos}",
std::process::id()
));
fs::create_dir_all(&path).expect("temp project should be created");
Self { path }
}
pub(crate) fn path(&self) -> &Path {
&self.path
}
}
impl Drop for TempProject {
fn drop(&mut self) {
let _ = fs::remove_dir_all(&self.path);
}
}