pub mod patch;
pub mod resolve;
use self::patch::{FeatureSetVecPatch, StringSetPatch};
use serde::{Deserialize, Serialize};
use std::collections::{BTreeMap, HashMap, HashSet};
#[derive(Serialize, Deserialize, Default, Debug, Clone)]
pub struct Config {
#[serde(default)]
pub isolated_feature_sets: Vec<HashSet<String>>,
#[serde(default)]
pub exclude_features: HashSet<String>,
#[serde(default)]
pub include_features: HashSet<String>,
#[serde(default)]
pub only_features: HashSet<String>,
#[serde(default)]
pub skip_optional_dependencies: bool,
#[serde(default)]
pub exclude_packages: HashSet<String>,
#[serde(default)]
pub exclude_feature_sets: Vec<HashSet<String>>,
#[serde(default)]
pub include_feature_sets: Vec<HashSet<String>>,
#[serde(default)]
pub allow_feature_sets: Vec<HashSet<String>>,
#[serde(default)]
pub no_empty_feature_set: bool,
#[serde(default)]
pub matrix: HashMap<String, serde_json::Value>,
#[serde(default)]
pub target: BTreeMap<String, TargetOverride>,
#[serde(flatten)]
pub deprecated: DeprecatedConfig,
}
#[derive(Serialize, Deserialize, Default, Debug, Clone)]
pub struct TargetOverride {
#[serde(default)]
pub replace: bool,
#[serde(default)]
pub isolated_feature_sets: Option<FeatureSetVecPatch>,
#[serde(default)]
pub exclude_features: Option<StringSetPatch>,
#[serde(default)]
pub include_features: Option<StringSetPatch>,
#[serde(default)]
pub only_features: Option<StringSetPatch>,
#[serde(default)]
pub skip_optional_dependencies: Option<bool>,
#[serde(default)]
pub exclude_feature_sets: Option<FeatureSetVecPatch>,
#[serde(default)]
pub include_feature_sets: Option<FeatureSetVecPatch>,
#[serde(default)]
pub allow_feature_sets: Option<FeatureSetVecPatch>,
#[serde(default)]
pub no_empty_feature_set: Option<bool>,
#[serde(default)]
pub matrix: Option<HashMap<String, serde_json::Value>>,
}
#[derive(Serialize, Deserialize, Default, Debug, Clone)]
pub struct WorkspaceConfig {
#[serde(default)]
pub exclude_packages: HashSet<String>,
}
#[derive(Serialize, Deserialize, Default, Debug, Clone)]
pub struct DeprecatedConfig {
#[serde(default)]
pub skip_feature_sets: Vec<HashSet<String>>,
#[serde(default)]
pub denylist: HashSet<String>,
#[serde(default)]
pub exact_combinations: Vec<HashSet<String>>,
}