use cargo_metadata::camino::Utf8Path;
use flux_config::SmtSolver;
use serde::Deserialize;
pub mod utils;
#[derive(Deserialize, Debug, Default)]
#[serde(default, deny_unknown_fields)]
pub struct FluxMetadata {
pub enabled: bool,
pub cache: Option<bool>,
pub solver: Option<SmtSolver>,
pub scrape_quals: Option<bool>,
pub check_overflow: Option<bool>,
pub smt_define_fun: Option<bool>,
}
impl FluxMetadata {
pub fn into_flags(self, target_dir: &Utf8Path) -> Vec<String> {
let mut flags = vec![];
if let Some(true) = self.cache {
flags.push(format!("-Fcache={}", target_dir.join("FLUXCACHE")));
}
if let Some(v) = self.solver {
flags.push(format!("-Fsolver={v}"));
}
if let Some(v) = self.check_overflow {
flags.push(format!("-Fcheck-overflow={v}"));
}
if let Some(v) = self.scrape_quals {
flags.push(format!("-Fscrape-quals={v}"));
}
if let Some(v) = self.smt_define_fun {
flags.push(format!("-Fsmt-define-fun={v}"));
}
flags
}
}