use crate::error::{ProFuzzError, ProFuzzResult};
use std::path::PathBuf;
#[derive(Clone)]
pub struct Output {
path: PathBuf,
}
impl Output {
pub fn init(path: PathBuf, auto_resume: bool) -> ProFuzzResult<Self> {
if path.is_dir() {
if !auto_resume {
return Err(ProFuzzError::AutoResumeNotEnabled);
}
} else {
tracing::info!("Created output directory: {}", path.display());
std::fs::create_dir_all(&path)?;
}
std::fs::create_dir_all(path.join("crashes"))?;
Ok(Self { path })
}
pub(crate) fn get_crash_file(&self) -> PathBuf {
self.path.join("crashes.json")
}
pub(crate) fn get_crash_folder(&self) -> PathBuf {
let dir = self.path.join("crashes");
std::fs::create_dir_all(&dir)
.unwrap_or_else(|_| panic!("Could not create crashes folder: {}!", dir.display()));
dir
}
}