1+ /// Patch types for set-like configuration fields.
12pub mod patch;
3+ /// Configuration resolution logic (merge base config with target overrides).
24pub mod resolve;
35
46use self :: patch:: { FeatureSetVecPatch , StringSetPatch } ;
@@ -14,6 +16,7 @@ use std::collections::{BTreeMap, HashMap, HashSet};
1416#[ derive( Serialize , Deserialize , Default , Debug , Clone ) ]
1517pub struct Config {
1618 #[ serde( default ) ]
19+ /// Feature sets that must be tested in isolation.
1720 pub isolated_feature_sets : Vec < HashSet < String > > ,
1821 /// Formerly named `denylist`
1922 #[ serde( default ) ]
@@ -55,10 +58,13 @@ pub struct Config {
5558 #[ serde( default ) ]
5659 pub include_feature_sets : Vec < HashSet < String > > ,
5760 #[ serde( default ) ]
61+ /// Explicitly allowed feature sets.
5862 pub allow_feature_sets : Vec < HashSet < String > > ,
5963 #[ serde( default ) ]
64+ /// When enabled, disallow generating the empty feature set.
6065 pub no_empty_feature_set : bool ,
6166 #[ serde( default ) ]
67+ /// Arbitrary user-defined matrix values forwarded to the runner.
6268 pub matrix : HashMap < String , serde_json:: Value > ,
6369
6470 /// Target-specific configuration overrides.
@@ -67,6 +73,7 @@ pub struct Config {
6773 #[ serde( default ) ]
6874 pub target : BTreeMap < String , TargetOverride > ,
6975 #[ serde( flatten) ]
76+ /// Deprecated configuration keys (kept for backwards compatibility).
7077 pub deprecated : DeprecatedConfig ,
7178}
7279
@@ -82,40 +89,55 @@ pub struct TargetOverride {
8289 pub replace : bool ,
8390
8491 #[ serde( default ) ]
92+ /// Patch operations for [`Config::isolated_feature_sets`].
8593 pub isolated_feature_sets : Option < FeatureSetVecPatch > ,
8694 #[ serde( default ) ]
95+ /// Patch operations for [`Config::exclude_features`].
8796 pub exclude_features : Option < StringSetPatch > ,
8897 #[ serde( default ) ]
98+ /// Patch operations for [`Config::include_features`].
8999 pub include_features : Option < StringSetPatch > ,
90100 #[ serde( default ) ]
101+ /// Patch operations for [`Config::only_features`].
91102 pub only_features : Option < StringSetPatch > ,
92103 #[ serde( default ) ]
104+ /// Override for [`Config::skip_optional_dependencies`].
93105 pub skip_optional_dependencies : Option < bool > ,
94106 #[ serde( default ) ]
107+ /// Patch operations for [`Config::exclude_feature_sets`].
95108 pub exclude_feature_sets : Option < FeatureSetVecPatch > ,
96109 #[ serde( default ) ]
110+ /// Patch operations for [`Config::include_feature_sets`].
97111 pub include_feature_sets : Option < FeatureSetVecPatch > ,
98112 #[ serde( default ) ]
113+ /// Patch operations for [`Config::allow_feature_sets`].
99114 pub allow_feature_sets : Option < FeatureSetVecPatch > ,
100115 #[ serde( default ) ]
116+ /// Override for [`Config::no_empty_feature_set`].
101117 pub no_empty_feature_set : Option < bool > ,
102118 #[ serde( default ) ]
119+ /// Merge override for [`Config::matrix`].
103120 pub matrix : Option < HashMap < String , serde_json:: Value > > ,
104121}
105122
106123#[ derive( Serialize , Deserialize , Default , Debug , Clone ) ]
124+ /// Workspace-wide configuration for `cargo-feature-combinations`.
107125pub struct WorkspaceConfig {
108126 /// List of package names to exclude from the workspace analysis.
109127 #[ serde( default ) ]
110128 pub exclude_packages : HashSet < String > ,
111129}
112130
113131#[ derive( Serialize , Deserialize , Default , Debug , Clone ) ]
132+ /// Deprecated configuration keys kept for backwards compatibility.
114133pub struct DeprecatedConfig {
115134 #[ serde( default ) ]
135+ /// Former name of [`Config::exclude_feature_sets`].
116136 pub skip_feature_sets : Vec < HashSet < String > > ,
117137 #[ serde( default ) ]
138+ /// Former name of [`Config::exclude_features`].
118139 pub denylist : HashSet < String > ,
119140 #[ serde( default ) ]
141+ /// Former name of [`Config::include_feature_sets`].
120142 pub exact_combinations : Vec < HashSet < String > > ,
121143}
0 commit comments