@@ -31,9 +31,13 @@ pub struct CliArgs {
3131 pub no_builder : bool ,
3232
3333 /// Add an additional derive macro to apply to all defined types.
34- #[ arg( short, long = "additional-derive" , value_name = "derive" ) ]
34+ #[ arg( short = 'd' , long = "additional-derive" , value_name = "derive" ) ]
3535 pub additional_derives : Vec < String > ,
3636
37+ /// Add an additional attribute to apply to all defined types.
38+ #[ arg( short = 'a' , long = "additional-attr" , value_name = "attr" ) ]
39+ pub additional_attrs : Vec < String > ,
40+
3741 /// The output file to write to. If not specified, the input file name will
3842 /// be used with a `.rs` extension.
3943 ///
@@ -146,6 +150,10 @@ pub fn convert(args: &CliArgs) -> Result<String> {
146150 settings. with_derive ( derive. clone ( ) ) ;
147151 }
148152
153+ for attr in & args. additional_attrs {
154+ settings. with_attr ( attr. clone ( ) ) ;
155+ }
156+
149157 for CrateSpec {
150158 name,
151159 version,
@@ -197,6 +205,7 @@ mod tests {
197205 input : PathBuf :: from ( "input.json" ) ,
198206 builder : false ,
199207 additional_derives : vec ! [ ] ,
208+ additional_attrs : vec ! [ ] ,
200209 output : Some ( PathBuf :: from ( "-" ) ) ,
201210 no_builder : false ,
202211 crates : vec ! [ ] ,
@@ -213,6 +222,7 @@ mod tests {
213222 input : PathBuf :: from ( "input.json" ) ,
214223 builder : false ,
215224 additional_derives : vec ! [ ] ,
225+ additional_attrs : vec ! [ ] ,
216226 output : Some ( PathBuf :: from ( "some_file.rs" ) ) ,
217227 no_builder : false ,
218228 crates : vec ! [ ] ,
@@ -229,6 +239,7 @@ mod tests {
229239 input : PathBuf :: from ( "input.json" ) ,
230240 builder : false ,
231241 additional_derives : vec ! [ ] ,
242+ additional_attrs : vec ! [ ] ,
232243 output : None ,
233244 no_builder : false ,
234245 crates : vec ! [ ] ,
@@ -245,6 +256,7 @@ mod tests {
245256 input : PathBuf :: from ( "input.json" ) ,
246257 builder : false ,
247258 additional_derives : vec ! [ ] ,
259+ additional_attrs : vec ! [ ] ,
248260 output : None ,
249261 no_builder : false ,
250262 crates : vec ! [ ] ,
@@ -264,6 +276,7 @@ mod tests {
264276 input : PathBuf :: from ( "input.json" ) ,
265277 builder : false ,
266278 additional_derives : vec ! [ ] ,
279+ additional_attrs : vec ! [ ] ,
267280 output : None ,
268281 no_builder : false ,
269282 crates : vec ! [ ] ,
@@ -280,6 +293,7 @@ mod tests {
280293 input : PathBuf :: from ( "input.json" ) ,
281294 builder : false ,
282295 additional_derives : vec ! [ ] ,
296+ additional_attrs : vec ! [ ] ,
283297 output : None ,
284298 no_builder : true ,
285299 crates : vec ! [ ] ,
@@ -296,6 +310,7 @@ mod tests {
296310 input : PathBuf :: from ( "input.json" ) ,
297311 builder : true ,
298312 additional_derives : vec ! [ ] ,
313+ additional_attrs : vec ! [ ] ,
299314 output : None ,
300315 no_builder : false ,
301316 crates : vec ! [ ] ,
0 commit comments