@@ -12,7 +12,7 @@ use std::path::Path;
12
12
use thiserror:: Error ;
13
13
use topological_sort:: TopologicalSort ;
14
14
15
- use super :: PackageName ;
15
+ use super :: { PackageName , PresetName } ;
16
16
17
17
/// Describes a set of packages to act upon.
18
18
///
@@ -106,6 +106,10 @@ pub struct Config {
106
106
/// Packages to be built and installed.
107
107
#[ serde( default , rename = "package" ) ]
108
108
pub packages : BTreeMap < PackageName , Package > ,
109
+
110
+ /// Target configuration.
111
+ #[ serde( default ) ]
112
+ pub target : TargetConfig ,
109
113
}
110
114
111
115
impl Config {
@@ -134,6 +138,14 @@ impl Config {
134
138
}
135
139
}
136
140
141
+ /// Configuration for targets, including preset configuration.
142
+ #[ derive( Clone , Deserialize , Debug , Default ) ]
143
+ pub struct TargetConfig {
144
+ /// Preset configuration for targets.
145
+ #[ serde( default , rename = "preset" ) ]
146
+ pub presets : BTreeMap < PresetName , TargetMap > ,
147
+ }
148
+
137
149
/// Errors which may be returned when parsing the server configuration.
138
150
#[ derive( Error , Debug ) ]
139
151
pub enum ParseError {
@@ -187,6 +199,7 @@ mod test {
187
199
( pkg_a_name. clone ( ) , pkg_a. clone ( ) ) ,
188
200
( pkg_b_name. clone ( ) , pkg_b. clone ( ) ) ,
189
201
] ) ,
202
+ target : TargetConfig :: default ( ) ,
190
203
} ;
191
204
192
205
let mut order = cfg. packages_to_build ( & TargetMap :: default ( ) ) . build_order ( ) ;
@@ -228,6 +241,7 @@ mod test {
228
241
( pkg_a_name. clone ( ) , pkg_a. clone ( ) ) ,
229
242
( pkg_b_name. clone ( ) , pkg_b. clone ( ) ) ,
230
243
] ) ,
244
+ target : TargetConfig :: default ( ) ,
231
245
} ;
232
246
233
247
let mut order = cfg. packages_to_build ( & TargetMap :: default ( ) ) . build_order ( ) ;
@@ -253,6 +267,7 @@ mod test {
253
267
254
268
let cfg = Config {
255
269
packages : BTreeMap :: from ( [ ( pkg_a_name. clone ( ) , pkg_a. clone ( ) ) ] ) ,
270
+ target : TargetConfig :: default ( ) ,
256
271
} ;
257
272
258
273
let mut order = cfg. packages_to_build ( & TargetMap :: default ( ) ) . build_order ( ) ;
0 commit comments