@@ -13,7 +13,7 @@ use crate::dscresources::{
1313use crate :: DscResource ;
1414use crate :: discovery:: Discovery ;
1515use crate :: parser:: Statement ;
16- use crate :: progress:: { ProgressBar , ProgressFormat } ;
16+ use crate :: progress:: { Failure , ProgressBar , ProgressFormat } ;
1717use self :: context:: Context ;
1818use self :: config_doc:: { Configuration , DataType , MicrosoftDscMetadata , Operation , SecurityContextKind } ;
1919use self :: depends_on:: get_resource_invocation_order;
@@ -245,7 +245,7 @@ impl Configurator {
245245 let get_result = match dsc_resource. get ( & filter) {
246246 Ok ( result) => result,
247247 Err ( e) => {
248- progress. set_failed ( ) ;
248+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
249249 progress. write_increment ( 1 ) ;
250250 return Err ( e) ;
251251 } ,
@@ -342,7 +342,7 @@ impl Configurator {
342342 set_result = match dsc_resource. set ( & desired, skip_test, & self . context . execution_type ) {
343343 Ok ( result) => result,
344344 Err ( e) => {
345- progress. set_failed ( ) ;
345+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
346346 progress. write_increment ( 1 ) ;
347347 return Err ( e) ;
348348 } ,
@@ -357,21 +357,21 @@ impl Configurator {
357357 let before_result = match dsc_resource. get ( & desired) {
358358 Ok ( result) => result,
359359 Err ( e) => {
360- progress. set_failed ( ) ;
360+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
361361 progress. write_increment ( 1 ) ;
362362 return Err ( e) ;
363363 } ,
364364 } ;
365365 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 ) ) ;
368368 progress. write_increment ( 1 ) ;
369- return Err ( err ) ;
369+ return Err ( e ) ;
370370 }
371371 let after_result = match dsc_resource. get ( & desired) {
372372 Ok ( result) => result,
373373 Err ( e) => {
374- progress. set_failed ( ) ;
374+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
375375 progress. write_increment ( 1 ) ;
376376 return Err ( e) ;
377377 } ,
@@ -464,7 +464,7 @@ impl Configurator {
464464 let test_result = match dsc_resource. test ( & expected) {
465465 Ok ( result) => result,
466466 Err ( e) => {
467- progress. set_failed ( ) ;
467+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
468468 progress. write_increment ( 1 ) ;
469469 return Err ( e) ;
470470 } ,
@@ -535,7 +535,7 @@ impl Configurator {
535535 let export_result = match add_resource_export_results_to_configuration ( dsc_resource, Some ( dsc_resource) , & mut conf, input. as_str ( ) ) {
536536 Ok ( result) => result,
537537 Err ( e) => {
538- progress. set_failed ( ) ;
538+ progress. set_failure ( get_failure_from_error ( & e ) ) ;
539539 progress. write_increment ( 1 ) ;
540540 return Err ( e) ;
541541 } ,
@@ -792,3 +792,21 @@ impl Configurator {
792792 Ok ( Some ( result) )
793793 }
794794}
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