Skip to content

Commit 2071b20

Browse files
author
Steve Lee (POWERSHELL HE/HIM) (from Dev Box)
committed
fix logic for applying filter and make invalid version an info
1 parent e67dfc0 commit 2071b20

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

dsc_lib/src/discovery/command_discovery.rs

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -274,20 +274,16 @@ impl ResourceDiscovery for CommandDiscovery {
274274

275275
fn list_available_resources(&mut self, type_name_filter: &str, adapter_name_filter: &str) -> Result<BTreeMap<String, Vec<DscResource>>, DscError> {
276276

277-
trace!("Listing resources with type_name_filter/adapter_name_filter: {type_name_filter}/{adapter_name_filter}");
278-
279-
self.discover_resources(type_name_filter)?;
280-
281-
if !adapter_name_filter.is_empty() {
282-
self.discover_adapted_resources(type_name_filter, adapter_name_filter)?;
283-
}
284-
277+
trace!("Listing resources with type_name_filter '{type_name_filter}' and adapter_name_filter '{adapter_name_filter}'");
285278
let mut resources = BTreeMap::<String, Vec<DscResource>>::new();
286279

287280
if adapter_name_filter.is_empty() {
281+
self.discover_resources(type_name_filter)?;
288282
resources.append(&mut self.resources);
289283
resources.append(&mut self.adapters);
290284
} else {
285+
self.discover_resources("*")?;
286+
self.discover_adapted_resources(type_name_filter, adapter_name_filter)?;
291287
resources.append(&mut self.adapted_resources);
292288
}
293289

@@ -353,8 +349,22 @@ fn insert_resource(resources: &mut BTreeMap<String, Vec<DscResource>>, resource:
353349
// compare the resource versions and insert newest to oldest using semver
354350
let mut insert_index = resource_versions.len();
355351
for (index, resource_instance) in resource_versions.iter().enumerate() {
356-
let resource_instance_version = Version::parse(&resource_instance.version)?;
357-
let resource_version = Version::parse(&resource.version)?;
352+
let resource_instance_version = match Version::parse(&resource_instance.version) {
353+
Ok(v) => v,
354+
Err(err) => {
355+
// write as info since PowerShell resources tend to have invalid semver
356+
info!("Resource '{}' has invalid version: {err}", resource_instance.type_name);
357+
continue;
358+
},
359+
};
360+
let resource_version = match Version::parse(&resource.version) {
361+
Ok(v) => v,
362+
Err(err) => {
363+
// write as info since PowerShell resources tend to have invalid semver
364+
info!("Resource '{}' has invalid version: {err}", resource.type_name);
365+
continue;
366+
},
367+
};
358368
// if the version already exists, we skip
359369
if resource_instance_version == resource_version {
360370
return Ok(());

dsc_lib/src/dscerror.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,6 @@ pub enum DscError {
9898
#[error("Security context: {0}")]
9999
SecurityContext(String),
100100

101-
#[error("Semver: {0}")]
102-
Semver(#[from] semver::Error),
103-
104101
#[error("Utf-8 conversion error: {0}")]
105102
Utf8Conversion(#[from] Utf8Error),
106103

0 commit comments

Comments
 (0)