@@ -18,12 +18,10 @@ use std::{
1818} ;
1919
2020use anyhow:: Result ;
21- use build_task:: BuildTask ;
2221use cargo_metadata:: { CrateType , Message , Metadata as CargoMetadata , Package , TargetKind } ;
2322use error:: BuildActionError ;
2423use mockall_double:: double;
2524pub use package_task:: SignMode ;
26- use package_task:: { PackageTask , PackageTaskParams } ;
2725use tracing:: { debug, error as err, info, trace, warn} ;
2826use wdk_build:: {
2927 CpuArchitecture ,
@@ -32,7 +30,13 @@ use wdk_build::{
3230
3331use crate :: actions:: Profile ;
3432#[ double]
33+ use build_task:: BuildTaskRunner ;
34+ use build_task:: BuildTaskRunParams ;
35+ #[ double]
3536use crate :: providers:: { exec:: CommandExec , fs:: Fs , metadata:: Metadata , wdk_build:: WdkBuild } ;
37+ #[ double]
38+ use package_task:: PackageTaskRunner ;
39+ use package_task:: PackageTaskParams ;
3640
3741pub struct BuildActionParams < ' a > {
3842 pub working_dir : & ' a Path ,
@@ -60,6 +64,8 @@ pub struct BuildAction<'a> {
6064 command_exec : & ' a CommandExec ,
6165 fs : & ' a Fs ,
6266 metadata : & ' a Metadata ,
67+ build_task_runner : BuildTaskRunner ,
68+ package_task_runner : PackageTaskRunner ,
6369}
6470
6571impl < ' a > BuildAction < ' a > {
@@ -86,6 +92,26 @@ impl<'a> BuildAction<'a> {
8692 command_exec : & ' a CommandExec ,
8793 fs : & ' a Fs ,
8894 metadata : & ' a Metadata ,
95+ ) -> Result < Self > {
96+ Self :: new_with_runners (
97+ params,
98+ wdk_build,
99+ command_exec,
100+ fs,
101+ metadata,
102+ BuildTaskRunner :: default ( ) ,
103+ PackageTaskRunner :: default ( ) ,
104+ )
105+ }
106+
107+ fn new_with_runners (
108+ params : & BuildActionParams < ' a > ,
109+ wdk_build : & ' a WdkBuild ,
110+ command_exec : & ' a CommandExec ,
111+ fs : & ' a Fs ,
112+ metadata : & ' a Metadata ,
113+ build_task_runner : BuildTaskRunner ,
114+ package_task_runner : PackageTaskRunner ,
89115 ) -> Result < Self > {
90116 // TODO: validate params
91117 anyhow:: ensure!(
@@ -104,6 +130,8 @@ impl<'a> BuildAction<'a> {
104130 command_exec,
105131 fs,
106132 metadata,
133+ build_task_runner,
134+ package_task_runner,
107135 } )
108136 }
109137
@@ -339,16 +367,17 @@ impl<'a> BuildAction<'a> {
339367 let package_name = package. name . as_str ( ) ;
340368 info ! ( "Building package {package_name}" ) ;
341369
342- let build_task = BuildTask :: new (
343- package_name,
344- working_dir,
345- self . profile ,
346- self . target_arch ,
347- self . locked ,
348- self . verbosity_level ,
370+ let output_message_iter = self . build_task_runner . run (
371+ & BuildTaskRunParams {
372+ package_name,
373+ working_dir,
374+ profile : self . profile ,
375+ target_arch : self . target_arch ,
376+ locked : self . locked ,
377+ verbosity_level : self . verbosity_level ,
378+ } ,
349379 self . command_exec ,
350- ) ;
351- let output_message_iter = build_task. run ( ) ?;
380+ ) ?;
352381
353382 let wdk_metadata = if let Ok ( wdk_metadata) = wdk_metadata {
354383 debug ! ( "Found wdk metadata in package: {}" , package_name) ;
@@ -382,28 +411,29 @@ impl<'a> BuildAction<'a> {
382411 self . get_target_arch_from_cargo_rustc ( working_dir) ?
383412 } ;
384413 debug ! ( "Target architecture for package: {package_name} is: {target_arch}" ) ;
385- let target_dir = Self :: get_target_dir_from_output ( package, output_message_iter) ?;
414+ let target_dir = Self :: get_target_dir_from_output ( package, output_message_iter. into_iter ( ) ) ?;
386415 debug ! (
387416 "Target directory for package: {} is: {}" ,
388417 package_name,
389418 target_dir. display( )
390419 ) ;
391420
392- PackageTask :: new (
393- PackageTaskParams {
394- package_name,
395- working_dir,
396- target_dir : & target_dir,
397- target_arch : & target_arch,
398- sign_mode : self . sign_mode ,
399- sample_class : self . is_sample_class ,
400- driver_model,
401- } ,
421+ let package_task_params = PackageTaskParams {
422+ package_name,
423+ working_dir,
424+ target_dir : & target_dir,
425+ target_arch : & target_arch,
426+ sign_mode : self . sign_mode ,
427+ sample_class : self . is_sample_class ,
428+ driver_model,
429+ } ;
430+
431+ self . package_task_runner . run (
432+ & package_task_params,
402433 self . wdk_build ,
403434 self . command_exec ,
404435 self . fs ,
405- )
406- . run ( ) ?;
436+ ) ?;
407437
408438 info ! ( "Finished building {package_name}" ) ;
409439 Ok ( ( ) )
0 commit comments