Skip to content

Commit 7ee09ef

Browse files
author
Steve Lee (POWERSHELL HE/HIM) (from Dev Box)
committed
fix listing adapted resources
1 parent afe994c commit 7ee09ef

File tree

3 files changed

+32
-8
lines changed

3 files changed

+32
-8
lines changed

build.ps1

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ if (!$SkipBuild) {
161161
# make sure dependencies are built first so clippy runs correctly
162162
$windows_projects = @("pal", "registry", "reboot_pending", "wmi-adapter")
163163

164+
$macOS_projects = @("resources/brew")
165+
164166
# projects are in dependency order
165167
$projects = @(
166168
"tree-sitter-dscexpression",
@@ -170,7 +172,6 @@ if (!$SkipBuild) {
170172
"osinfo",
171173
"powershell-adapter",
172174
"process",
173-
"resources/brew",
174175
"runcommandonset",
175176
"tools/dsctest",
176177
"tools/test_group_resource",
@@ -187,6 +188,10 @@ if (!$SkipBuild) {
187188
Get-ChildItem -Path $target -Recurse -Hidden | ForEach-Object { $_.Attributes = 'Normal' }
188189
}
189190

191+
if ($IsMacOS) {
192+
$projects += $macOS_projects
193+
}
194+
190195
$failed = $false
191196
foreach ($project in $projects) {
192197
## Build format_json

dsc_lib/src/discovery/command_discovery.rs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ impl ResourceDiscovery for CommandDiscovery {
129129
if file_name_lowercase.ends_with(".dsc.resource.json") ||
130130
file_name_lowercase.ends_with(".dsc.resource.yaml") ||
131131
file_name_lowercase.ends_with(".dsc.resource.yml") {
132+
trace!("Found resource manifest: {path:?}");
132133
let resource = match load_manifest(&path)
133134
{
134135
Ok(r) => r,
@@ -146,8 +147,10 @@ impl ResourceDiscovery for CommandDiscovery {
146147
if let Some(ref manifest) = resource.manifest {
147148
let manifest = import_manifest(manifest.clone())?;
148149
if manifest.kind == Some(Kind::Adapter) {
150+
trace!("Resource adapter {} found", resource.type_name);
149151
insert_resource(&mut adapters, &resource)?;
150152
} else {
153+
trace!("Resource {} found", resource.type_name);
151154
insert_resource(&mut resources, &resource)?;
152155
}
153156
}
@@ -164,7 +167,7 @@ impl ResourceDiscovery for CommandDiscovery {
164167
Ok(())
165168
}
166169

167-
fn discover_adapted_resources(&mut self, filter: &str) -> Result<(), DscError> {
170+
fn discover_adapted_resources(&mut self, name_filter: &str, adapter_filter: &str) -> Result<(), DscError> {
168171
if self.resources.is_empty() && self.adapters.is_empty() {
169172
self.discover_resources("*")?;
170173
}
@@ -173,14 +176,22 @@ impl ResourceDiscovery for CommandDiscovery {
173176
return Ok(());
174177
}
175178

176-
let regex_str = convert_wildcard_to_regex(filter);
179+
let regex_str = convert_wildcard_to_regex(adapter_filter);
177180
debug!("Using regex {regex_str} as filter for adapter name");
178181
let mut regex_builder = RegexBuilder::new(&regex_str);
179182
regex_builder.case_insensitive(true);
180183
let Ok(regex) = regex_builder.build() else {
181184
return Err(DscError::Operation("Could not build Regex filter for adapter name".to_string()));
182185
};
183186

187+
let name_regex_str = convert_wildcard_to_regex(name_filter);
188+
debug!("Using regex {name_regex_str} as filter for resource name");
189+
let mut name_regex_builder = RegexBuilder::new(&name_regex_str);
190+
name_regex_builder.case_insensitive(true);
191+
let Ok(name_regex) = name_regex_builder.build() else {
192+
return Err(DscError::Operation("Could not build Regex filter for resource name".to_string()));
193+
};
194+
184195
let pb_span = warn_span!("");
185196
pb_span.pb_set_style(&ProgressStyle::with_template(
186197
"{spinner:.green} [{elapsed_precise:.cyan}] [{bar:40.cyan/blue}] {pos:>7}/{len:7} {msg:.yellow}"
@@ -192,6 +203,10 @@ impl ResourceDiscovery for CommandDiscovery {
192203

193204
for (adapter_name, adapters) in &self.adapters {
194205
for adapter in adapters {
206+
if !regex.is_match(&adapter_name) {
207+
continue;
208+
}
209+
195210
info!("Enumerating resources for adapter '{}'", adapter_name);
196211
let pb_adapter_span = warn_span!("");
197212
pb_adapter_span.pb_set_style(&ProgressStyle::with_template(
@@ -237,7 +252,7 @@ impl ResourceDiscovery for CommandDiscovery {
237252
continue;
238253
}
239254

240-
if regex.is_match(&resource.type_name) {
255+
if name_regex.is_match(&resource.type_name) {
241256
insert_resource(&mut adapted_resources, &resource)?;
242257
adapter_resources_count += 1;
243258
}
@@ -264,13 +279,17 @@ impl ResourceDiscovery for CommandDiscovery {
264279
self.discover_resources(type_name_filter)?;
265280

266281
if !adapter_name_filter.is_empty() {
267-
self.discover_adapted_resources(adapter_name_filter)?;
282+
self.discover_adapted_resources(type_name_filter, adapter_name_filter)?;
268283
}
269284

270285
let mut resources = BTreeMap::<String, Vec<DscResource>>::new();
271286

272-
resources.append(&mut self.resources);
273-
resources.append(&mut self.adapted_resources);
287+
if adapter_name_filter.is_empty() {
288+
resources.append(&mut self.resources);
289+
resources.append(&mut self.adapters);
290+
} else {
291+
resources.append(&mut self.adapted_resources);
292+
}
274293

275294
Ok(resources)
276295
}

dsc_lib/src/discovery/discovery_trait.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::collections::BTreeMap;
66

77
pub trait ResourceDiscovery {
88
fn discover_resources(&mut self, filter: &str) -> Result<(), DscError>;
9-
fn discover_adapted_resources(&mut self, filter: &str) -> Result<(), DscError>;
9+
fn discover_adapted_resources(&mut self, name_filter: &str, adapter_filter: &str) -> Result<(), DscError>;
1010
fn list_available_resources(&mut self, type_name_filter: &str, adapter_name_filter: &str) -> Result<BTreeMap<String, Vec<DscResource>>, DscError>;
1111
fn find_resources(&mut self, required_resource_types: &[String]) -> Result<BTreeMap<String, DscResource>, DscError>;
1212
}

0 commit comments

Comments
 (0)