@@ -13,7 +13,7 @@ use crate::dscresources::{
13
13
use crate :: DscResource ;
14
14
use crate :: discovery:: Discovery ;
15
15
use crate :: parser:: Statement ;
16
- use crate :: progress:: { ProgressBar , ProgressFormat } ;
16
+ use crate :: progress:: { Failure , ProgressBar , ProgressFormat } ;
17
17
use self :: context:: Context ;
18
18
use self :: config_doc:: { Configuration , DataType , MicrosoftDscMetadata , Operation , SecurityContextKind } ;
19
19
use self :: depends_on:: get_resource_invocation_order;
@@ -245,7 +245,7 @@ impl Configurator {
245
245
let get_result = match dsc_resource. get ( & filter) {
246
246
Ok ( result) => result,
247
247
Err ( e) => {
248
- progress. set_failed ( ) ;
248
+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
249
249
progress. write_increment ( 1 ) ;
250
250
return Err ( e) ;
251
251
} ,
@@ -342,7 +342,7 @@ impl Configurator {
342
342
set_result = match dsc_resource. set ( & desired, skip_test, & self . context . execution_type ) {
343
343
Ok ( result) => result,
344
344
Err ( e) => {
345
- progress. set_failed ( ) ;
345
+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
346
346
progress. write_increment ( 1 ) ;
347
347
return Err ( e) ;
348
348
} ,
@@ -357,21 +357,21 @@ impl Configurator {
357
357
let before_result = match dsc_resource. get ( & desired) {
358
358
Ok ( result) => result,
359
359
Err ( e) => {
360
- progress. set_failed ( ) ;
360
+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
361
361
progress. write_increment ( 1 ) ;
362
362
return Err ( e) ;
363
363
} ,
364
364
} ;
365
365
start_datetime = chrono:: Local :: now ( ) ;
366
- if let Err ( err ) = dsc_resource. delete ( & desired) {
367
- progress. set_failed ( ) ;
366
+ if let Err ( e ) = dsc_resource. delete ( & desired) {
367
+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
368
368
progress. write_increment ( 1 ) ;
369
- return Err ( err ) ;
369
+ return Err ( e ) ;
370
370
}
371
371
let after_result = match dsc_resource. get ( & desired) {
372
372
Ok ( result) => result,
373
373
Err ( e) => {
374
- progress. set_failed ( ) ;
374
+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
375
375
progress. write_increment ( 1 ) ;
376
376
return Err ( e) ;
377
377
} ,
@@ -464,7 +464,7 @@ impl Configurator {
464
464
let test_result = match dsc_resource. test ( & expected) {
465
465
Ok ( result) => result,
466
466
Err ( e) => {
467
- progress. set_failed ( ) ;
467
+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
468
468
progress. write_increment ( 1 ) ;
469
469
return Err ( e) ;
470
470
} ,
@@ -535,7 +535,7 @@ impl Configurator {
535
535
let export_result = match add_resource_export_results_to_configuration ( dsc_resource, Some ( dsc_resource) , & mut conf, input. as_str ( ) ) {
536
536
Ok ( result) => result,
537
537
Err ( e) => {
538
- progress. set_failed ( ) ;
538
+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
539
539
progress. write_increment ( 1 ) ;
540
540
return Err ( e) ;
541
541
} ,
@@ -792,3 +792,21 @@ impl Configurator {
792
792
Ok ( Some ( result) )
793
793
}
794
794
}
795
+
796
+ fn get_failure_from_error ( err : & DscError ) -> Option < Failure > {
797
+ match err {
798
+ DscError :: CommandExit ( _resource, exit_code, reason) => {
799
+ Some ( Failure {
800
+ message : reason. to_string ( ) ,
801
+ exit_code : exit_code. clone ( ) ,
802
+ } )
803
+ } ,
804
+ DscError :: CommandExitFromManifest ( _resource, exit_code, reason) => {
805
+ Some ( Failure {
806
+ message : reason. to_string ( ) ,
807
+ exit_code : exit_code. clone ( ) ,
808
+ } )
809
+ } ,
810
+ _ => None ,
811
+ }
812
+ }
0 commit comments