Skip to content

Commit dded606

Browse files
author
Steve Lee (POWERSHELL HE/HIM) (from Dev Box)
committed
Update Appx discover extension to match changes in extensions
1 parent 587093d commit dded606

File tree

5 files changed

+15
-7
lines changed

5 files changed

+15
-7
lines changed

dsc_lib/locales/en-us.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ resourceManifestSchemaDescription = "Defines the JSON Schema the resource manife
170170
[extensions.dscextension]
171171
discoverNoResults = "No results returned for discovery extension '%{extension}'"
172172
discoverNotAbsolutePath = "Resource path from extension '%{extension}' is not an absolute path: %{path}"
173+
extensionReturned = "Extension '%{extension}' returned line: %{line}"
173174

174175
[extensions.extension_manifest]
175176
extensionManifestSchemaTitle = "Extension manifest schema URI"

dsc_lib/src/discovery/command_discovery.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,11 @@ impl ResourceDiscovery for CommandDiscovery {
306306
}
307307
}
308308
self.adapters = adapters;
309+
// go through the resource and remove duplicates with same name and version
310+
for (_resource_name, resource_vec) in &mut resources {
311+
let mut uniques: HashSet<String> = HashSet::new();
312+
resource_vec.retain(|e| uniques.insert(e.version.clone()));
313+
}
309314
self.resources = resources;
310315
},
311316
DiscoveryKind::Extension => {

dsc_lib/src/extensions/dscextension.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use serde::{Deserialize, Serialize};
66
use serde_json::Value;
77
use schemars::JsonSchema;
88
use std::{fmt::Display, path::Path};
9-
use tracing::info;
9+
use tracing::{info, trace};
1010

1111
use crate::{discovery::command_discovery::{load_manifest, ImportedManifest}, dscerror::DscError, dscresources::{command_resource::{invoke_command, process_args}, dscresource::DscResource}};
1212

@@ -99,6 +99,7 @@ impl DscExtension {
9999
info!("{}", t!("extensions.dscextension.discoverNoResults", extension = self.type_name));
100100
} else {
101101
for line in stdout.lines() {
102+
trace!("{}", t!("extensions.dscextension.extensionReturned", extension = self.type_name, line = line));
102103
let discover_result: DiscoverResult = match serde_json::from_str(line) {
103104
Ok(result) => result,
104105
Err(err) => {

extensions/appx/appx-discover.ps1

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
Get-AppxPackage | ForEach-Object {
2-
Get-ChildItem -LiteralPath $_.InstallLocation -File -Include '*.dsc.resource.json','*.dsc.resource.yaml','*.dsc.resource.yml' | ForEach-Object {
3-
@{ resourceManifestPath = $_.FullName } | ConvertTo-Json -Compress
1+
$packages = Get-AppxPackage
2+
foreach ($package in $packages) {
3+
$manifests = Get-ChildItem -Path "$($package.InstallLocation)\*" -File -Include '*.dsc.resource.json','*.dsc.resource.yaml','*.dsc.resource.yml' -ErrorAction Ignore
4+
foreach ($manifest in $manifests) {
5+
@{ manifestPath = $manifest.FullName } | ConvertTo-Json -Compress
46
}
57
}

extensions/appx/appx.dsc.extension.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
{
22
"$schema": "https://aka.ms/dsc/schemas/v3/bundled/resource/manifest.json",
3-
"type": "Microsoft.Windows.AppX/Discover",
3+
"type": "Microsoft.Windows.Appx/Discover",
44
"version": "0.1.0",
5-
"description": "Discovers DSC resources packaged as AppX packages.",
6-
"author": "Microsoft Corporation",
5+
"description": "Discovers DSC resources packaged as Appx packages.",
76
"discover": {
87
"executable": "powershell",
98
"args": [

0 commit comments

Comments
 (0)