@@ -311,6 +311,14 @@ impl Configurator {
311311 for resource in resources {
312312 progress. set_resource ( & resource. name , & resource. resource_type ) ;
313313 progress. write_activity ( format ! ( "Get '{}'" , resource. name) . as_str ( ) ) ;
314+ if let Some ( condition) = & resource. condition {
315+ let condition_result = self . statement_parser . parse_and_execute ( condition, & self . context ) ?;
316+ if condition_result != Value :: Bool ( true ) {
317+ info ! ( "{}" , t!( "configure.config_doc.skippingResource" , name = resource. name, condition = condition, result = condition_result) ) ;
318+ progress. write_increment ( 1 ) ;
319+ continue ;
320+ }
321+ }
314322 let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
315323 return Err ( DscError :: ResourceNotFound ( resource. resource_type ) ) ;
316324 } ;
@@ -387,6 +395,14 @@ impl Configurator {
387395 for resource in resources {
388396 progress. set_resource ( & resource. name , & resource. resource_type ) ;
389397 progress. write_activity ( format ! ( "Set '{}'" , resource. name) . as_str ( ) ) ;
398+ if let Some ( condition) = & resource. condition {
399+ let condition_result = self . statement_parser . parse_and_execute ( condition, & self . context ) ?;
400+ if condition_result != Value :: Bool ( true ) {
401+ info ! ( "{}" , t!( "configure.config_doc.skippingResource" , name = resource. name, condition = condition, result = condition_result) ) ;
402+ progress. write_increment ( 1 ) ;
403+ continue ;
404+ }
405+ }
390406 let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
391407 return Err ( DscError :: ResourceNotFound ( resource. resource_type ) ) ;
392408 } ;
@@ -535,6 +551,14 @@ impl Configurator {
535551 for resource in resources {
536552 progress. set_resource ( & resource. name , & resource. resource_type ) ;
537553 progress. write_activity ( format ! ( "Test '{}'" , resource. name) . as_str ( ) ) ;
554+ if let Some ( condition) = & resource. condition {
555+ let condition_result = self . statement_parser . parse_and_execute ( condition, & self . context ) ?;
556+ if condition_result != Value :: Bool ( true ) {
557+ info ! ( "{}" , t!( "configure.config_doc.skippingResource" , name = resource. name, condition = condition, result = condition_result) ) ;
558+ progress. write_increment ( 1 ) ;
559+ continue ;
560+ }
561+ }
538562 let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
539563 return Err ( DscError :: ResourceNotFound ( resource. resource_type ) ) ;
540564 } ;
@@ -608,6 +632,14 @@ impl Configurator {
608632 for resource in & resources {
609633 progress. set_resource ( & resource. name , & resource. resource_type ) ;
610634 progress. write_activity ( format ! ( "Export '{}'" , resource. name) . as_str ( ) ) ;
635+ if let Some ( condition) = & resource. condition {
636+ let condition_result = self . statement_parser . parse_and_execute ( condition, & self . context ) ?;
637+ if condition_result != Value :: Bool ( true ) {
638+ info ! ( "{}" , t!( "configure.config_doc.skippingResource" , name = resource. name, condition = condition, result = condition_result) ) ;
639+ progress. write_increment ( 1 ) ;
640+ continue ;
641+ }
642+ }
611643 let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
612644 return Err ( DscError :: ResourceNotFound ( resource. resource_type . clone ( ) ) ) ;
613645 } ;
0 commit comments