Skip to content

Commit 721ea46

Browse files
committed
refactor common code
1 parent ab293a7 commit 721ea46

File tree

1 file changed

+23
-28
lines changed

1 file changed

+23
-28
lines changed

dsc_lib/src/configure/mod.rs

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -311,13 +311,9 @@ 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-
}
314+
if self.skip_resource(&resource)? {
315+
progress.write_increment(1);
316+
continue;
321317
}
322318
let Some(dsc_resource) = discovery.find_resource(&resource.resource_type) else {
323319
return Err(DscError::ResourceNotFound(resource.resource_type));
@@ -395,13 +391,9 @@ impl Configurator {
395391
for resource in resources {
396392
progress.set_resource(&resource.name, &resource.resource_type);
397393
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-
}
394+
if self.skip_resource(&resource)? {
395+
progress.write_increment(1);
396+
continue;
405397
}
406398
let Some(dsc_resource) = discovery.find_resource(&resource.resource_type) else {
407399
return Err(DscError::ResourceNotFound(resource.resource_type));
@@ -551,13 +543,9 @@ impl Configurator {
551543
for resource in resources {
552544
progress.set_resource(&resource.name, &resource.resource_type);
553545
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-
}
546+
if self.skip_resource(&resource)? {
547+
progress.write_increment(1);
548+
continue;
561549
}
562550
let Some(dsc_resource) = discovery.find_resource(&resource.resource_type) else {
563551
return Err(DscError::ResourceNotFound(resource.resource_type));
@@ -632,13 +620,9 @@ impl Configurator {
632620
for resource in &resources {
633621
progress.set_resource(&resource.name, &resource.resource_type);
634622
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-
}
623+
if self.skip_resource(resource)? {
624+
progress.write_increment(1);
625+
continue;
642626
}
643627
let Some(dsc_resource) = discovery.find_resource(&resource.resource_type) else {
644628
return Err(DscError::ResourceNotFound(resource.resource_type.clone()));
@@ -674,6 +658,17 @@ impl Configurator {
674658
Ok(result)
675659
}
676660

661+
fn skip_resource(&mut self, resource: &Resource) -> Result<bool, DscError> {
662+
if let Some(condition) = &resource.condition {
663+
let condition_result = self.statement_parser.parse_and_execute(condition, &self.context)?;
664+
if condition_result != Value::Bool(true) {
665+
info!("{}", t!("configure.config_doc.skippingResource", name = resource.name, condition = condition, result = condition_result));
666+
return Ok(true);
667+
}
668+
}
669+
Ok(false)
670+
}
671+
677672
/// Set the mounted path for the configuration.
678673
///
679674
/// # Arguments

0 commit comments

Comments
 (0)