use std::path::PathBuf;
use crate::spec::types::OpSpec;
#[derive(Clone, Copy)]
pub struct EnforceCtx<'a> {
pub specs: &'a [OpSpec],
pub backend: Option<&'a dyn vyre::VyreBackend>,
pub workspace_root: &'a std::path::Path,
}
impl<'a> EnforceCtx<'a> {
#[inline]
pub fn new(
specs: &'a [OpSpec],
backend: Option<&'a dyn vyre::VyreBackend>,
workspace_root: &'a std::path::Path,
) -> Self {
Self {
specs,
backend,
workspace_root,
}
}
}
#[inline]
pub fn workspace_root() -> PathBuf {
std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
.parent()
.map(std::path::Path::to_path_buf)
.unwrap_or_else(|| PathBuf::from(env!("CARGO_MANIFEST_DIR")))
}