use anyhow::Result;
use crate::{app, utils::cargo::CargoToml};
#[derive(clap::Args, Debug)]
#[command()]
pub struct Cli {}
impl Cli {
pub fn exec(self) -> Result<()> {
app::set_repo_dir()?;
let features = extract_features()?;
let feature_list = features.join(",");
app::exec(
"cargo",
[
"hack",
"check",
"--tests",
"--bin",
"vector",
"--each-feature",
"--include-features",
&feature_list,
],
true,
)
}
}
const EXCLUDED_DEFAULTS: &[&str] = &["default"];
const EXCLUDED_META_FEATURES: &[&str] = &[
"all-integration-tests",
"all-e2e-tests",
"vector-api-tests",
"vector-unit-test-tests",
];
fn extract_features() -> Result<Vec<String>> {
Ok(CargoToml::load()?
.features
.into_keys()
.filter(|feature| {
!feature.contains("-utils")
&& !EXCLUDED_DEFAULTS.contains(&feature.as_str())
&& !EXCLUDED_META_FEATURES.contains(&feature.as_str())
})
.collect())
}