@@ -129,6 +129,7 @@ impl ResourceDiscovery for CommandDiscovery {
129
129
if file_name_lowercase. ends_with ( ".dsc.resource.json" ) ||
130
130
file_name_lowercase. ends_with ( ".dsc.resource.yaml" ) ||
131
131
file_name_lowercase. ends_with ( ".dsc.resource.yml" ) {
132
+ trace ! ( "Found resource manifest: {path:?}" ) ;
132
133
let resource = match load_manifest ( & path)
133
134
{
134
135
Ok ( r) => r,
@@ -146,8 +147,10 @@ impl ResourceDiscovery for CommandDiscovery {
146
147
if let Some ( ref manifest) = resource. manifest {
147
148
let manifest = import_manifest ( manifest. clone ( ) ) ?;
148
149
if manifest. kind == Some ( Kind :: Adapter ) {
150
+ trace ! ( "Resource adapter {} found" , resource. type_name) ;
149
151
insert_resource ( & mut adapters, & resource) ?;
150
152
} else {
153
+ trace ! ( "Resource {} found" , resource. type_name) ;
151
154
insert_resource ( & mut resources, & resource) ?;
152
155
}
153
156
}
@@ -164,7 +167,7 @@ impl ResourceDiscovery for CommandDiscovery {
164
167
Ok ( ( ) )
165
168
}
166
169
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 > {
168
171
if self . resources . is_empty ( ) && self . adapters . is_empty ( ) {
169
172
self . discover_resources ( "*" ) ?;
170
173
}
@@ -173,14 +176,22 @@ impl ResourceDiscovery for CommandDiscovery {
173
176
return Ok ( ( ) ) ;
174
177
}
175
178
176
- let regex_str = convert_wildcard_to_regex ( filter ) ;
179
+ let regex_str = convert_wildcard_to_regex ( adapter_filter ) ;
177
180
debug ! ( "Using regex {regex_str} as filter for adapter name" ) ;
178
181
let mut regex_builder = RegexBuilder :: new ( & regex_str) ;
179
182
regex_builder. case_insensitive ( true ) ;
180
183
let Ok ( regex) = regex_builder. build ( ) else {
181
184
return Err ( DscError :: Operation ( "Could not build Regex filter for adapter name" . to_string ( ) ) ) ;
182
185
} ;
183
186
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
+
184
195
let pb_span = warn_span ! ( "" ) ;
185
196
pb_span. pb_set_style ( & ProgressStyle :: with_template (
186
197
"{spinner:.green} [{elapsed_precise:.cyan}] [{bar:40.cyan/blue}] {pos:>7}/{len:7} {msg:.yellow}"
@@ -192,6 +203,10 @@ impl ResourceDiscovery for CommandDiscovery {
192
203
193
204
for ( adapter_name, adapters) in & self . adapters {
194
205
for adapter in adapters {
206
+ if !regex. is_match ( & adapter_name) {
207
+ continue ;
208
+ }
209
+
195
210
info ! ( "Enumerating resources for adapter '{}'" , adapter_name) ;
196
211
let pb_adapter_span = warn_span ! ( "" ) ;
197
212
pb_adapter_span. pb_set_style ( & ProgressStyle :: with_template (
@@ -237,7 +252,7 @@ impl ResourceDiscovery for CommandDiscovery {
237
252
continue ;
238
253
}
239
254
240
- if regex . is_match ( & resource. type_name ) {
255
+ if name_regex . is_match ( & resource. type_name ) {
241
256
insert_resource ( & mut adapted_resources, & resource) ?;
242
257
adapter_resources_count += 1 ;
243
258
}
@@ -264,13 +279,17 @@ impl ResourceDiscovery for CommandDiscovery {
264
279
self . discover_resources ( type_name_filter) ?;
265
280
266
281
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) ?;
268
283
}
269
284
270
285
let mut resources = BTreeMap :: < String , Vec < DscResource > > :: new ( ) ;
271
286
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
+ }
274
293
275
294
Ok ( resources)
276
295
}
0 commit comments