diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 91f06ff..6939e8c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,7 +13,7 @@ on: jobs: test: - name: 🛠️ Build and Test + name: 🛠️ Build and Test C# runs-on: ubuntu-latest permissions: contents: read @@ -61,11 +61,90 @@ jobs: if: always() run: dotnet format --verify-no-changes + testps: + name: 🛠️ Build and Test PowerShell + runs-on: ubuntu-latest + permissions: + contents: read + issues: read + checks: write + pull-requests: write + steps: + - name: 👨‍💻 Check-out code + uses: actions/checkout@v4 + + - name: 👨‍🔧 Setup .NET Core SDK + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.x + + - name: 🔍 Enable problem matchers + run: echo "::add-matcher::.github/matchers/dotnet.json" + + - name: 🦸‍♂️ Restore steriods + uses: actions/cache@v4 + with: + path: ~/.nuget/packages + # Look to see if there is a cache hit for the corresponding requirements file + key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} + restore-keys: | + ${{ runner.os }}-nuget + + - name: 🎒 Load packages + run: dotnet restore + + - name: 🛠️ Build module + shell: pwsh + run: + dotnet build ./src/Svrooij.WinTuner.CmdLets/Svrooij.WinTuner.CmdLets.csproj --configuration Release --no-restore -p:Version="0.0.1-dev" -o ./dist/WinTuner + + - name: 📦 Install Pester + shell: pwsh + run: Install-Module -Name Pester -Force -SkipPublisherCheck -Scope CurrentUser + + - name: 🕵️ Import module and list commands + shell: pwsh + run: | + Import-Module ./dist/WinTuner/WinTuner.psd1 + Get-Command -Module WinTuner + + - name: 🧪 Run test + shell: pwsh + run: | + Import-Module Pester + Import-Module ./dist/WinTuner/WinTuner.psd1 + $pesterConfig = [PesterConfiguration]@{ + Output = @{ + Verbosity = "Normal" + CIFormat = "Auto" + StackTraceVerbosity = "FirstLine" + } + TestResult = @{ + Enabled = $true + OutputPath = "${{ github.workspace }}/testresults/TestResults.xml" + OutputFormat = "JUnitXml" + } + Run = @{ + Path = "./tests/WinTuner.Cmdlets.Tests" + Exit = $true + } + Should = @{ + ErrorAction = "Continue" + } + } + Invoke-Pester -Configuration $pesterConfig + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + if: always() + with: + files: ${{ github.workspace }}/testresults/*.xml + publish-nuget: name: 📦 Publish WinTuner to nuget runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') - needs: [test] + needs: [test, testps] steps: - name: 👨‍💻 Check-out code uses: actions/checkout@v4 @@ -109,7 +188,7 @@ jobs: name: 📦 Publish WinTuner to PowerShell Gallery runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') - needs: [test] + needs: [test, testps] steps: - name: 👨‍💻 Check-out code uses: actions/checkout@v4 @@ -149,12 +228,11 @@ jobs: shell: pwsh run: dotnet build ./src/Svrooij.WinTuner.CmdLets/Svrooij.WinTuner.CmdLets.csproj --configuration Release --no-restore -p:Version=$("${{ github.ref_name }}".Substring(1)) -o ./dist/WinTuner - - name: 🧪 Run tests (import module) + - name: 🧪 Import module shell: pwsh run: | Import-Module ./dist/WinTuner/WinTuner.psd1 Get-Command -Module WinTuner - Get-Command -Module WinTuner | Select-Object -ExpandProperty Name | ForEach-Object { Get-Help -Name $_ -Full } - name: 📦 Publish WinTuner to PowerShell Gallery shell: pwsh diff --git a/.gitignore b/.gitignore index db8019b..f43c980 100644 --- a/.gitignore +++ b/.gitignore @@ -367,3 +367,5 @@ dist # LUT config file from Visual Studio *.lutconfig + +TestResults.xml \ No newline at end of file diff --git a/src/Svrooij.WinTuner.CmdLets/Commands/DeployWtMsStoreApp.cs b/src/Svrooij.WinTuner.CmdLets/Commands/DeployWtMsStoreApp.cs index 928ded0..ea28721 100644 --- a/src/Svrooij.WinTuner.CmdLets/Commands/DeployWtMsStoreApp.cs +++ b/src/Svrooij.WinTuner.CmdLets/Commands/DeployWtMsStoreApp.cs @@ -61,7 +61,9 @@ public override async Task ProcessRecordAsync(CancellationToken cancellationToke ValidateAuthenticationParameters(); if (ParameterSetName == nameof(SearchQuery)) { +#if NET8_0_OR_GREATER ArgumentException.ThrowIfNullOrWhiteSpace(SearchQuery); +#endif logger!.LogInformation("Searching package id for {searchQuery}", SearchQuery); PackageId = await graphStoreAppUploader!.GetStoreIdForNameAsync(SearchQuery!, cancellationToken); if (string.IsNullOrEmpty(PackageId)) @@ -72,13 +74,15 @@ public override async Task ProcessRecordAsync(CancellationToken cancellationToke } // At this moment the package ID should always be filled. - ArgumentException.ThrowIfNullOrWhiteSpace(PackageId); +#if NET8_0_OR_GREATER + ArgumentException.ThrowIfNullOrWhiteSpace(PackageId); +#endif logger!.LogInformation("Uploading MSStore app {PackageId} to Intune", PackageId); var graphServiceClient = CreateGraphServiceClient(httpClient!); try { - var app = await graphStoreAppUploader!.CreateStoreAppAsync(graphServiceClient, PackageId, cancellationToken); + var app = await graphStoreAppUploader!.CreateStoreAppAsync(graphServiceClient, PackageId!, cancellationToken); logger!.LogInformation("Created MSStore app {PackageId} with id {appId}", PackageId, app!.Id); WriteObject(app); diff --git a/src/Svrooij.WinTuner.CmdLets/Svrooij.WinTuner.CmdLets.csproj b/src/Svrooij.WinTuner.CmdLets/Svrooij.WinTuner.CmdLets.csproj index e40f4b1..b9bcf5b 100644 --- a/src/Svrooij.WinTuner.CmdLets/Svrooij.WinTuner.CmdLets.csproj +++ b/src/Svrooij.WinTuner.CmdLets/Svrooij.WinTuner.CmdLets.csproj @@ -1,7 +1,7 @@  - net8.0 + net6.0 Svrooij.WinTuner.CmdLets 10.0 en @@ -14,8 +14,8 @@ - - + + All diff --git a/src/Svrooij.WinTuner.CmdLets/Svrooij.WinTuner.CmdLets.dll-Help.xml b/src/Svrooij.WinTuner.CmdLets/Svrooij.WinTuner.CmdLets.dll-Help.xml index 6a05a2c..a0308c9 100644 --- a/src/Svrooij.WinTuner.CmdLets/Svrooij.WinTuner.CmdLets.dll-Help.xml +++ b/src/Svrooij.WinTuner.CmdLets/Svrooij.WinTuner.CmdLets.dll-Help.xml @@ -1,5 +1,404 @@  + + + Deploy-WtMsStoreApp + Deploy + WtMsStoreApp + + Create a MsStore app in Intune + + + + Use this command to create an Microsoft Store app in Microsoft Intune + + + + Deploy-WtMsStoreApp + + PackageId + + The package id to upload to Intune. + + String + + String + + + None + + + UseManagedIdentity + + Use a managed identity to connect to Intune + + Boolean + + Boolean + + + None + + + UseDefaultAzureCredential + + Use default Azure Credentials from Azure.Identity to connect to Intune + + Boolean + + Boolean + + + None + + + Token + + Use a token from another source to connect to Intune + + String + + String + + + None + + + Username + + Use a username to trigger interactive login or SSO + + String + + String + + + None + + + TenantId + + Specify the tenant ID, optional for interactive, mandatory for Client Credentials flow. Loaded from `AZURE_TENANT_ID` + + String + + String + + + None + + + ClientId + + Specify the client ID, optional for interactive, mandatory for Client Credentials flow. Loaded from `AZURE_CLIENT_ID` + + String + + String + + + None + + + ClientSecret + + Specify the client secret, mandatory for Client Credentials flow. Loaded from `AZURE_CLIENT_SECRET` + + String + + String + + + None + + + ProgressAction + + {{ Fill ProgressAction Description }} + + ActionPreference + + ActionPreference + + + None + + + + Deploy-WtMsStoreApp + + SearchQuery + + Name of the app to look for, first match will be created. + + String + + String + + + None + + + UseManagedIdentity + + Use a managed identity to connect to Intune + + Boolean + + Boolean + + + None + + + UseDefaultAzureCredential + + Use default Azure Credentials from Azure.Identity to connect to Intune + + Boolean + + Boolean + + + None + + + Token + + Use a token from another source to connect to Intune + + String + + String + + + None + + + Username + + Use a username to trigger interactive login or SSO + + String + + String + + + None + + + TenantId + + Specify the tenant ID, optional for interactive, mandatory for Client Credentials flow. Loaded from `AZURE_TENANT_ID` + + String + + String + + + None + + + ClientId + + Specify the client ID, optional for interactive, mandatory for Client Credentials flow. Loaded from `AZURE_CLIENT_ID` + + String + + String + + + None + + + ClientSecret + + Specify the client secret, mandatory for Client Credentials flow. Loaded from `AZURE_CLIENT_SECRET` + + String + + String + + + None + + + ProgressAction + + {{ Fill ProgressAction Description }} + + ActionPreference + + ActionPreference + + + None + + + + + + ClientId + + Specify the client ID, optional for interactive, mandatory for Client Credentials flow. Loaded from `AZURE_CLIENT_ID` + + String + + String + + + None + + + ClientSecret + + Specify the client secret, mandatory for Client Credentials flow. Loaded from `AZURE_CLIENT_SECRET` + + String + + String + + + None + + + PackageId + + The package id to upload to Intune. + + String + + String + + + None + + + SearchQuery + + Name of the app to look for, first match will be created. + + String + + String + + + None + + + TenantId + + Specify the tenant ID, optional for interactive, mandatory for Client Credentials flow. Loaded from `AZURE_TENANT_ID` + + String + + String + + + None + + + Token + + Use a token from another source to connect to Intune + + String + + String + + + None + + + UseDefaultAzureCredential + + Use default Azure Credentials from Azure.Identity to connect to Intune + + Boolean + + Boolean + + + None + + + UseManagedIdentity + + Use a managed identity to connect to Intune + + Boolean + + Boolean + + + None + + + Username + + Use a username to trigger interactive login or SSO + + String + + String + + + None + + + ProgressAction + + {{ Fill ProgressAction Description }} + + ActionPreference + + ActionPreference + + + None + + + + + + None + + + + + + + + + + Microsoft.Graph.Beta.Models.WinGetApp + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Deploy-WtMsStoreApp -PackageId 9NZVDKPMR9RD -Username admin@myofficetenant.onmicrosoft.com + + Add Firefox to Intune, using interactive authentication + + + + + + Online Version: + https://wintuner.app/docs/wintuner-powershell/Deploy-WtMsStoreApp + + + Deploy-WtWin32App diff --git a/src/Svrooij.WinTuner.CmdLets/WinTuner.psd1 b/src/Svrooij.WinTuner.CmdLets/WinTuner.psd1 index 326d712..0118eb6 100644 --- a/src/Svrooij.WinTuner.CmdLets/WinTuner.psd1 +++ b/src/Svrooij.WinTuner.CmdLets/WinTuner.psd1 @@ -21,7 +21,8 @@ # Minimum version of the Windows PowerShell engine required by this module. # This module is build on net8.0 which requires PowerShell 7.4 - PowerShellVersion = '7.4' + # May 5th 2024 Bring back support for PowerShell 7.2 (which seems to be the only supported version in Azure Runbooks) + PowerShellVersion = '7.2' # Minimum version of the .NET Framework required by this module. # DotNetFrameworkVersion = '4.7.2' @@ -58,15 +59,15 @@ # FunctionsToExport = @() # Cmdlets to export from this module. - CmdletsToExport = @( - "Deploy-WtWin32App", - "Get-WtWin32Apps", - "New-IntuneWinPackage", - "New-WtWingetPackage", - "Remove-WtWin32App", - "Unprotect-IntuneWinPackage" - "Update-WtIntuneApp" - ) + # CmdletsToExport = @( + # "Deploy-WtWin32App", + # "Get-WtWin32Apps", + # "New-IntuneWinPackage", + # "New-WtWingetPackage", + # "Remove-WtWin32App", + # "Unprotect-IntuneWinPackage" + # "Update-WtIntuneApp" + # ) # Variables to export from this module. # VariablesToExport = @() diff --git a/src/Svrooij.WinTuner.CmdLets/docs/Deploy-WtMsStoreApp.md b/src/Svrooij.WinTuner.CmdLets/docs/Deploy-WtMsStoreApp.md new file mode 100644 index 0000000..5f5ec57 --- /dev/null +++ b/src/Svrooij.WinTuner.CmdLets/docs/Deploy-WtMsStoreApp.md @@ -0,0 +1,209 @@ +--- +external help file: Svrooij.WinTuner.CmdLets.dll-Help.xml +Module Name: Svrooij.WinTuner.CmdLets +online version: https://wintuner.app/docs/wintuner-powershell/Deploy-WtMsStoreApp +schema: 2.0.0 +--- + +# Deploy-WtMsStoreApp + +## SYNOPSIS +Create a MsStore app in Intune + +## SYNTAX + +### PackageId (Default) +``` +Deploy-WtMsStoreApp [-PackageId] [[-UseManagedIdentity] ] + [[-UseDefaultAzureCredential] ] [[-Token] ] [[-Username] ] [[-TenantId] ] + [[-ClientId] ] [[-ClientSecret] ] [-ProgressAction ] [] +``` + +### SearchQuery +``` +Deploy-WtMsStoreApp [-SearchQuery] [[-UseManagedIdentity] ] + [[-UseDefaultAzureCredential] ] [[-Token] ] [[-Username] ] [[-TenantId] ] + [[-ClientId] ] [[-ClientSecret] ] [-ProgressAction ] [] +``` + +## DESCRIPTION +Use this command to create an Microsoft Store app in Microsoft Intune + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> Deploy-WtMsStoreApp -PackageId 9NZVDKPMR9RD -Username admin@myofficetenant.onmicrosoft.com +``` + +Add Firefox to Intune, using interactive authentication + +## PARAMETERS + +### -ClientId +Specify the client ID, optional for interactive, mandatory for Client Credentials flow. +Loaded from \`AZURE_CLIENT_ID\` + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 27 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ClientSecret +Specify the client secret, mandatory for Client Credentials flow. +Loaded from \`AZURE_CLIENT_SECRET\` + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 28 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PackageId +The package id to upload to Intune. + +```yaml +Type: String +Parameter Sets: PackageId +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SearchQuery +Name of the app to look for, first match will be created. + +```yaml +Type: String +Parameter Sets: SearchQuery +Aliases: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TenantId +Specify the tenant ID, optional for interactive, mandatory for Client Credentials flow. +Loaded from \`AZURE_TENANT_ID\` + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 26 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Token +Use a token from another source to connect to Intune + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 22 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseDefaultAzureCredential +Use default Azure Credentials from Azure.Identity to connect to Intune + +```yaml +Type: Boolean +Parameter Sets: (All) +Aliases: + +Required: False +Position: 21 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseManagedIdentity +Use a managed identity to connect to Intune + +```yaml +Type: Boolean +Parameter Sets: (All) +Aliases: + +Required: False +Position: 20 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Username +Use a username to trigger interactive login or SSO + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: 25 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ProgressAction +{{ Fill ProgressAction Description }} + +```yaml +Type: ActionPreference +Parameter Sets: (All) +Aliases: proga + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +## OUTPUTS + +### Microsoft.Graph.Beta.Models.WinGetApp + +## NOTES + +## RELATED LINKS diff --git a/src/Svrooij.WinTuner.CmdLets/docs/Svrooij.WinTuner.CmdLets.md b/src/Svrooij.WinTuner.CmdLets/docs/Svrooij.WinTuner.CmdLets.md index 947ef41..dd02d57 100644 --- a/src/Svrooij.WinTuner.CmdLets/docs/Svrooij.WinTuner.CmdLets.md +++ b/src/Svrooij.WinTuner.CmdLets/docs/Svrooij.WinTuner.CmdLets.md @@ -11,6 +11,9 @@ Locale: en-US WinTuner PowerShell is a module to help you create an deploy Win32 apps in Microsoft Intune. It can create an IntuneWin package from any folder or from an installer downloaded from WinGet. ## Svrooij.WinTuner.CmdLets Cmdlets +### [Deploy-WtMsStoreApp](Deploy-WtMsStoreApp.md) +Create a MsStore app in Intune + ### [Deploy-WtWin32App](Deploy-WtWin32App.md) Create a Win32Lob app in Intune diff --git a/src/Svrooij.WinTuner.CmdLets/generate-docs.ps1 b/src/Svrooij.WinTuner.CmdLets/generate-docs.ps1 index 4847fbe..3a311af 100644 --- a/src/Svrooij.WinTuner.CmdLets/generate-docs.ps1 +++ b/src/Svrooij.WinTuner.CmdLets/generate-docs.ps1 @@ -1,4 +1,4 @@ -$xmlDocsPath = "${PSScriptRoot}\bin\Release\net8.0\Svrooij.WinTuner.CmdLets.xml" +$xmlDocsPath = "${PSScriptRoot}\bin\Release\net6.0\Svrooij.WinTuner.CmdLets.xml" $docsFolder = "docs" Write-Output "Building the project to get the latest XML documentation file" @@ -64,6 +64,11 @@ foreach ($member in $members) { $description = $member.summary.'para' | Where-Object { $_.type -eq 'description' } | Select-Object -ExpandProperty '#text' Write-Debug "Description: $description" + # Extract the link + $link = $member.summary.'para' | Where-Object { $_.type -eq 'link' } | Select-Object -ExpandProperty 'uri' + Write-Debug "Link: $link" + + # Extract the example $exampleDescription = $member.example.'para'| Where-Object { $_.type -eq 'description' } | Select-Object -ExpandProperty '#text' $exampleCode = $member.example.'code' @@ -94,11 +99,19 @@ foreach ($member in $members) { # Replace the example code placeholder '{{ Add example code here }}' with the actual example code $mdFileContent = $mdFileContent.Replace('{{ Add example code here }}', $exampleCode) + # Add the link to the documentation + # Check if there is a line that starts with 'online version:' without a link behind it + if ($mdFileContent.Contains('online version:') -and !$mdFileContent.Contains('online version: http')) + { + $mdFileContent = $mdFileContent.Replace('online version:', 'online version: ' + $link) + } + + # Write the updated file back to disk $mdFileContent | Set-Content $mdFilePath } else { - Write-Warning "File $mdFilePath does not exist" + #Write-Warning "File $mdFilePath does not exist" } } } diff --git a/src/Svrooij.WinTuner.CmdLets/packages.lock.json b/src/Svrooij.WinTuner.CmdLets/packages.lock.json index d14706f..388dca9 100644 --- a/src/Svrooij.WinTuner.CmdLets/packages.lock.json +++ b/src/Svrooij.WinTuner.CmdLets/packages.lock.json @@ -1,7 +1,7 @@ { "version": 1, "dependencies": { - "net8.0": { + "net6.0": { "Azure.Identity": { "type": "Direct", "requested": "[1.11.2, )", @@ -17,22 +17,45 @@ "System.Threading.Tasks.Extensions": "4.5.4" } }, - "PowerShellStandard.Library": { + "Microsoft.PowerShell.SDK": { "type": "Direct", - "requested": "[5.1.1, )", - "resolved": "5.1.1", - "contentHash": "e31xJjG+Kjbv6YF3Yq6D4Dl3or8v7LrNF41k3CXrWozW6hR1zcOe5KYuZJaGSiAgLnwP8wcW+I3+IWEzMPZKXQ==" + "requested": "[7.2.19, )", + "resolved": "7.2.19", + "contentHash": "St3yuzNDmzmgkDGcfEvEV90jG/J1HQG3W5TKzHXVhagh0DEaJ5TVEAR3He2I5ulr8kbrdwoOW33MJiotV1HNMQ==", + "dependencies": { + "Microsoft.Extensions.ObjectPool": "5.0.17", + "Microsoft.Management.Infrastructure.CimCmdlets": "7.2.19", + "Microsoft.NETCore.Windows.ApiSets": "1.0.1", + "Microsoft.PowerShell.Commands.Diagnostics": "7.2.19", + "Microsoft.PowerShell.Commands.Management": "7.2.19", + "Microsoft.PowerShell.Commands.Utility": "7.2.19", + "Microsoft.PowerShell.ConsoleHost": "7.2.19", + "Microsoft.PowerShell.Security": "7.2.19", + "Microsoft.WSMan.Management": "7.2.19", + "Microsoft.Windows.Compatibility": "6.0.8", + "System.Data.SqlClient": "4.8.6", + "System.IO.Packaging": "6.0.0", + "System.Management.Automation": "7.2.19", + "System.Net.Http.WinHttpHandler": "6.0.1", + "System.Private.ServiceModel": "4.9.0", + "System.ServiceModel.Duplex": "4.9.0", + "System.ServiceModel.Http": "4.9.0", + "System.ServiceModel.NetTcp": "4.9.0", + "System.ServiceModel.Primitives": "4.9.0", + "System.ServiceModel.Security": "4.9.0", + "System.Text.Encodings.Web": "6.0.0" + } }, "Svrooij.PowerShell.DependencyInjection": { "type": "Direct", - "requested": "[1.1.0, )", - "resolved": "1.1.0", - "contentHash": "U2VAnEnEoNqyhBKMsMvh4qsSmvAzsGQgJJbx/gLokKJNr89699hOk0hmJhlWxCgv5fOxUrByAFTz/B6s5C8HTA==", + "requested": "[1.1.4, )", + "resolved": "1.1.4", + "contentHash": "oBPE1tTEKdAEW4SENTKSZWV7E30gk6XMBAo5LHF8Cmq9HPzsdwfDnhIgOF7xzzn+xkVWBQBwKrV7i6TtVGYsXw==", "dependencies": { "Microsoft.Extensions.DependencyInjection": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", "Microsoft.Extensions.Logging.Configuration": "8.0.0", - "Microsoft.PowerShell.SDK": "7.4.1" + "Microsoft.PowerShell.SDK": "7.2.19" } }, "Azure.Core": { @@ -50,41 +73,10 @@ "System.Threading.Tasks.Extensions": "4.5.4" } }, - "JetBrains.Annotations": { - "type": "Transitive", - "resolved": "2021.2.0", - "contentHash": "kKSyoVfndMriKHLfYGmr0uzQuI4jcc3TKGyww7buJFCYeHb/X0kodYBPL7n9454q7v6ASiRmDgpPGaDGerg/Hg==" - }, - "Json.More.Net": { - "type": "Transitive", - "resolved": "1.9.3", - "contentHash": "BKIsKHXR2Jq+LdLdxPo3L09Lv0ld9xs1fAMvSAe2cf2YOl3at9vw0RrMlhC2ookDi7VtrgHXzc2Et5mVBOAUdw==", - "dependencies": { - "System.Text.Json": "6.0.2" - } - }, - "JsonPointer.Net": { - "type": "Transitive", - "resolved": "3.0.3", - "contentHash": "mCGQc15lHLp1R2CVhWiipnZurHXm93+LbPPAT/vXQm5PdHt6WQuYLhaEF8VZ+aXL9P2I6bGND6pDTEfqFs6gig==", - "dependencies": { - "Json.More.Net": "1.8.0" - } - }, - "JsonSchema.Net": { - "type": "Transitive", - "resolved": "5.2.7", - "contentHash": "8un7Xq2MoKiWNo0HQtf2sPr3764W9NjNELIx3l9d3fIKEjg3tYtrZmxN+CgXKtzku4g52CqYUZuI+o0ue226vw==", - "dependencies": { - "JetBrains.Annotations": "2021.2.0", - "Json.More.Net": "1.9.0", - "JsonPointer.Net": "3.0.3" - } - }, "Markdig.Signed": { "type": "Transitive", - "resolved": "0.33.0", - "contentHash": "/BE/XANxmocgEqajbWB/ur4Jei+j1FkXppWH9JFmEuoq8T3xJndkQKZVCW/7lTdc9Ru6kfEAkwSXFOv30EkU2Q==" + "resolved": "0.31.0", + "contentHash": "u05eQvNRunYLR+J0SZAgt8ia+qCF3cMfyYh7LR4jSjG5Tg+0HuRrv7u/Gox9kOItWlSacMITcHBio7jas/zaEQ==" }, "Microsoft.ApplicationInsights": { "type": "Transitive", @@ -101,26 +93,29 @@ }, "Microsoft.CodeAnalysis.Analyzers": { "type": "Transitive", - "resolved": "3.3.4", - "contentHash": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==" + "resolved": "3.3.2", + "contentHash": "7xt6zTlIEizUgEsYAIgm37EbdkiMmr6fP6J9pDoKEpiGM4pi32BCPGr/IczmSJI9Zzp0a6HOzpr9OvpMP+2veA==" }, "Microsoft.CodeAnalysis.Common": { "type": "Transitive", - "resolved": "4.8.0", - "contentHash": "/jR+e/9aT+BApoQJABlVCKnnggGQbvGh7BKq2/wI1LamxC+LbzhcLj4Vj7gXCofl1n4E521YfF9w0WcASGg/KA==", + "resolved": "4.0.1", + "contentHash": "SMREwaVD5SzatlWhh9aahQAtSWdb63NcE//f+bQzgHSECU6xtDtaxk0kwV+asdFfr6HtW38UeO6jvqdfzudg3w==", "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "System.Collections.Immutable": "7.0.0", - "System.Reflection.Metadata": "7.0.0", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" + "Microsoft.CodeAnalysis.Analyzers": "3.3.2", + "System.Collections.Immutable": "5.0.0", + "System.Memory": "4.5.4", + "System.Reflection.Metadata": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encoding.CodePages": "4.5.1", + "System.Threading.Tasks.Extensions": "4.5.4" } }, "Microsoft.CodeAnalysis.CSharp": { "type": "Transitive", - "resolved": "4.8.0", - "contentHash": "+3+qfdb/aaGD8PZRCrsdobbzGs1m9u119SkkJt8e/mk3xLJz/udLtS2T6nY27OTXxBBw10HzAbC8Z9w08VyP/g==", + "resolved": "4.0.1", + "contentHash": "Q9RxxydPpUElj/x1/qykDTUGsRoKbJG8H5XUSeMGmMu54fBiuX1xyanom9caa1oQfh5JIW1BgLxobSaWs4WyHQ==", "dependencies": { - "Microsoft.CodeAnalysis.Common": "[4.8.0]" + "Microsoft.CodeAnalysis.Common": "[4.0.1]" } }, "Microsoft.CSharp": { @@ -166,26 +161,6 @@ "resolved": "8.0.1", "contentHash": "fGLiCRLMYd00JYpClraLjJTNKLmMJPnqxMaiRzEBIIvevlzxz33mXy39Lkd48hu1G+N21S7QpaO5ZzKsI6FRuA==" }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "3PZp/YSkIXrF7QK7PfC1bkyRYwqOHpWFad8Qx+4wkuumAeXo1NHaxpS9LboNA9OvNSAu+QOVlXbMyoY+pHSqcw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "JHYCQG7HmugNYUhOl368g+NMxYE/N/AiclCYRNlgCY9eVyiBkOHMwK4x60RYMxv9EL3+rmj1mqHvdCiPpC+D4Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "System.Diagnostics.DiagnosticSource": "8.0.0" - } - }, "Microsoft.Extensions.Http": { "type": "Transitive", "resolved": "8.0.0", @@ -193,7 +168,6 @@ "dependencies": { "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "Microsoft.Extensions.Diagnostics": "8.0.0", "Microsoft.Extensions.Logging": "8.0.0", "Microsoft.Extensions.Logging.Abstractions": "8.0.0", "Microsoft.Extensions.Options": "8.0.0" @@ -261,7 +235,10 @@ "Microsoft.Extensions.Primitives": { "type": "Transitive", "resolved": "8.0.0", - "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==" + "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } }, "Microsoft.Graph.Beta": { "type": "Transitive", @@ -431,30 +408,30 @@ }, "Microsoft.Management.Infrastructure": { "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "cGZi0q5IujCTVYKo9h22Pw+UwfZDV82HXO8HTxMG2HqntPlT3Ls8jY6punLp4YzCypJNpfCAu2kae3TIyuAiJw==", + "resolved": "2.0.0", + "contentHash": "IaKZRNBBv3sdrmBWd+aqwHq8cVHk/3WgWFAN/dt40MRY9rbtHiDfTTmaEN0tGTmQqGCGDo/ncntA8MvFMvcsRw==", "dependencies": { - "Microsoft.Management.Infrastructure.Runtime.Unix": "3.0.0", - "Microsoft.Management.Infrastructure.Runtime.Win": "3.0.0" + "Microsoft.Management.Infrastructure.Runtime.Unix": "2.0.0", + "Microsoft.Management.Infrastructure.Runtime.Win": "2.0.0" } }, "Microsoft.Management.Infrastructure.CimCmdlets": { "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "y8ssJEx6pd+8Nsebupt8dKyyc+kLutacaaZBIRLKfUc84BE0Pv88hs6v8TF1M3c7pk2xkZDmEXMdVDCpWdJ/YQ==", + "resolved": "7.2.19", + "contentHash": "6xA31DY8e8HEh8upPKGSKO/SQMpq7WdJN7g3nCnDHDWIXILBJGjycQMCDJ5fNBcUrOQocvGrkWq1CkT4sTYVDQ==", "dependencies": { - "System.Management.Automation": "7.4.1" + "System.Management.Automation": "7.2.19" } }, "Microsoft.Management.Infrastructure.Runtime.Unix": { "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ==" + "resolved": "2.0.0", + "contentHash": "p0lslMX5bdWLxO2P7ao+rjAMOB0LEwPYpzvdCQ2OEYgX2NxFpQ8ILvqPGnYlTAb53rT8gu5DyIol1HboHFYfxQ==" }, "Microsoft.Management.Infrastructure.Runtime.Win": { "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ==" + "resolved": "2.0.0", + "contentHash": "vjBWQeDOjgernkrOdbEgn7M70SF7hof7ORdKPSlL06Uc15+oYdth5dZju9KsgUoti/cwnkZTiwtDx/lRtay0sA==" }, "Microsoft.NETCore.Platforms": { "type": "Transitive", @@ -466,53 +443,58 @@ "resolved": "1.1.0", "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" }, + "Microsoft.NETCore.Windows.ApiSets": { + "type": "Transitive", + "resolved": "1.0.1", + "contentHash": "SaToCvvsGMxTgtLv/BrFQ5IFMPRE1zpWbnqbpwykJa8W5XiX82CXI6K2o7yf5xS7EP6t/JzFLV0SIDuWpvBZVw==" + }, "Microsoft.PowerShell.Commands.Diagnostics": { "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "TSNoWEO9xQPcQG5TYgi3puJgpwjVbMe5VesgzfZ4+lGWJurgI3y2vanXZSQoyRzlreqEtjBNggS/8TpHOO3nZA==", + "resolved": "7.2.19", + "contentHash": "a16vIXKUiVCjP9IXccice7qsqzJ4yDkqoFf0/mC2Ks/19CBDVZ+NoyThYv+OHrkNRM9l4AlDfY3/YghfIN693A==", "dependencies": { - "System.Management.Automation": "7.4.1" + "System.Management.Automation": "7.2.19" } }, "Microsoft.PowerShell.Commands.Management": { "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "LtyD1q6dHsiYeVsWLEbBajP1AKy83uXYNwyvRxU6uxO3q4N3+Ntt0wHQsZmSBoS3jvEvHDJklMxmW/SHoNgSKw==", + "resolved": "7.2.19", + "contentHash": "htZvTe79+RgW/qR43u4mdwVIhT8xgaKaJdovOEGZlQHbHuYolzPhr30I/PD+u/n29oN98JnPuwsQmOGQb5zt3Q==", "dependencies": { - "Microsoft.PowerShell.Security": "7.4.1", - "System.ServiceProcess.ServiceController": "8.0.0" + "Microsoft.PowerShell.Security": "7.2.19", + "System.ServiceProcess.ServiceController": "6.0.1" } }, "Microsoft.PowerShell.Commands.Utility": { "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "P2Fynn9+ooRiAKP5zB2e/fo0hhp/Ss81fqASAHH3mevYZPmnAPNxZMAkvMiayA8Pe6o6GVswXj3vyf5JUtN+mg==", + "resolved": "7.2.19", + "contentHash": "CcunVLhnECHVA8HSp6XsRe+DWOjUp1PGwMY4ga3psUTNnf+z3q7S75hV2SkzI6MVK0UE4J0nR+pa2Zai4B+yTg==", "dependencies": { - "Json.More.Net": "1.9.3", - "JsonSchema.Net": "5.2.7", - "Markdig.Signed": "0.33.0", - "Microsoft.CodeAnalysis.CSharp": "4.8.0", + "Markdig.Signed": "0.31.0", + "Microsoft.CodeAnalysis.CSharp": "4.0.1", "Microsoft.PowerShell.MarkdownRender": "7.2.1", - "System.Drawing.Common": "8.0.1", - "System.Management.Automation": "7.4.1", - "System.Text.Json": "6.0.9", - "System.Threading.AccessControl": "8.0.0" + "Microsoft.Win32.SystemEvents": "6.0.1", + "NJsonSchema": "10.5.2", + "Namotion.Reflection": "2.0.10", + "System.Drawing.Common": "6.0.0", + "System.Management.Automation": "7.2.19", + "System.Threading.AccessControl": "6.0.0" } }, "Microsoft.PowerShell.ConsoleHost": { "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "IXyTckU0QE0+YdHyR7MvcUXPUQAGMQISX0M0594fV1gemkiIgRQ2Q7la3lEjE09GGwxAkDEfWFxE3Z/cDjV77w==", + "resolved": "7.2.19", + "contentHash": "5iSzAEj6Lqib0BLggWj2B7zAaeQ0DdbXNecI0cqUNf6GQxbyBHb3BUWyXn6IVEvwBwX7x9er2NV6gFoFlqoxCw==", "dependencies": { - "System.Management.Automation": "7.4.1" + "System.Management.Automation": "7.2.19" } }, "Microsoft.PowerShell.CoreCLR.Eventing": { "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "uyByMNZ3XVUrJAxdHrXM/75vcKdfbs04J5iIZfDA8m9z8TJDViRMjyHNcp8K/ZXyzpT2Lua2d7g+dP47E9wAcg==", + "resolved": "7.2.19", + "contentHash": "O/q71SzqJAQ7me4/17HkLO88BIlVwzdjRUlEXUZs4UCNbGgTMvFrTLOhkQ2DRRoZvHIrK3RcU6uDXVQPFoapEQ==", "dependencies": { - "System.Diagnostics.EventLog": "8.0.0" + "System.Diagnostics.EventLog": "6.0.0" } }, "Microsoft.PowerShell.MarkdownRender": { @@ -525,50 +507,17 @@ }, "Microsoft.PowerShell.Native": { "type": "Transitive", - "resolved": "7.4.0", - "contentHash": "FlaJ3JBWhqFToYT0ycMb/Xxzoof7oTQbNyI4UikgubC7AMWt5ptBNKjIAMPvOcvEHr+ohaO9GvRWp3tiyS3sKw==" - }, - "Microsoft.PowerShell.SDK": { - "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "1h0KixYhgGUuRQssGWdqvMCxyHYerw8VPK0XEu2OllUj704yGNTsLb2MjUPV5m35UR/R3JSJL6l9VDx1DdG0fw==", - "dependencies": { - "Microsoft.Extensions.ObjectPool": "5.0.17", - "Microsoft.Management.Infrastructure.CimCmdlets": "7.4.1", - "Microsoft.PowerShell.Commands.Diagnostics": "7.4.1", - "Microsoft.PowerShell.Commands.Management": "7.4.1", - "Microsoft.PowerShell.Commands.Utility": "7.4.1", - "Microsoft.PowerShell.ConsoleHost": "7.4.1", - "Microsoft.PowerShell.Security": "7.4.1", - "Microsoft.WSMan.Management": "7.4.1", - "Microsoft.Windows.Compatibility": "8.0.1", - "System.Data.SqlClient": "4.8.6", - "System.IO.Packaging": "8.0.0", - "System.Management.Automation": "7.4.1", - "System.Net.Http.WinHttpHandler": "8.0.0", - "System.Private.ServiceModel": "4.10.3", - "System.ServiceModel.Duplex": "4.10.3", - "System.ServiceModel.Http": "4.10.3", - "System.ServiceModel.NetTcp": "4.10.3", - "System.ServiceModel.Primitives": "4.10.3", - "System.ServiceModel.Security": "4.10.3", - "System.Text.Encodings.Web": "8.0.0", - "System.Web.Services.Description": "4.10.3" - } + "resolved": "7.2.1", + "contentHash": "Ce7sccSKHemYA/p/ADD3twqp2RgvtPV6ch+hY6n50tWkGmytfSccYgnhtG30/1SaU0ktCLvg0/NSE6XB10XFqA==" }, "Microsoft.PowerShell.Security": { "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "fEMvsyVqDdGFMSLjNpFHdEGo/OGO2WaQlpyqUCKgRknpnpO+MBaWZBGcLu81sidN3iDtTotClzQOQwVXMeNEVQ==", + "resolved": "7.2.19", + "contentHash": "+XfNK6CrkZ4StwpCah9Qp//s+Ulfa4kmutGsyPQZalSMC51uy3AI/kjbLGJG6ubt/SSMl2+hDudmcA/ZhMu7Cw==", "dependencies": { - "System.Management.Automation": "7.4.1" + "System.Management.Automation": "7.2.19" } }, - "Microsoft.Security.Extensions": { - "type": "Transitive", - "resolved": "1.2.0", - "contentHash": "GjHZBE5PHKrxPRyGujWQKwbKNjPQYds6HcAWKeV49X3KPgBfF2B1vV5uJey5UluyGQlvAO/DezL7WzEx9HlPQA==" - }, "Microsoft.Win32.Registry": { "type": "Transitive", "resolved": "4.7.0", @@ -580,70 +529,82 @@ }, "Microsoft.Win32.Registry.AccessControl": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "u8PB9/v02C8mBXzl0vJ7bOyC020zOP+T1mRct+KA46DqZkB40XtsNn9pGD0QowTRsT6R4jPCghn+yAODn2UMMw==" + "resolved": "6.0.0", + "contentHash": "UoE+eeuBKL+GFHxHV3FjHlY5K8Wr/IR7Ee/a2oDNqFodF1iMqyt5hIs0U9Z217AbWrHrNle4750kD03hv1IMZw==", + "dependencies": { + "System.Security.AccessControl": "6.0.0" + } }, "Microsoft.Win32.SystemEvents": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "9opKRyOKMCi2xJ7Bj7kxtZ1r9vbzosMvRrdEhVhDz8j8MoBGgB+WmC94yH839NPH+BclAjtQ/pyagvi/8gDLkw==" + "resolved": "6.0.1", + "contentHash": "AlsaDWyQHLFB7O2nfbny0x0oziB34WWzGnf/4Q5R8KjXhu8MnCsxE2MIePr192lIIaxarfTLI9bQg+qtmM+9ag==" }, "Microsoft.Windows.Compatibility": { "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "Gr6QvHy9Y5PK5/ijl+cnCnfLr9HdCVByHtbPR5CxOAPeshURdJ/SNMi1t7qbUMBFCU9zsBlXSE1q/TsOUS0u8A==", - "dependencies": { - "Microsoft.Win32.Registry.AccessControl": "8.0.0", - "Microsoft.Win32.SystemEvents": "8.0.0", - "System.CodeDom": "8.0.0", - "System.ComponentModel.Composition": "8.0.0", - "System.ComponentModel.Composition.Registration": "8.0.0", - "System.Configuration.ConfigurationManager": "8.0.0", - "System.Data.Odbc": "8.0.0", - "System.Data.OleDb": "8.0.0", - "System.Data.SqlClient": "4.8.5", - "System.Diagnostics.EventLog": "8.0.0", - "System.Diagnostics.PerformanceCounter": "8.0.0", - "System.DirectoryServices": "8.0.0", - "System.DirectoryServices.AccountManagement": "8.0.0", - "System.DirectoryServices.Protocols": "8.0.0", - "System.Drawing.Common": "8.0.1", - "System.IO.Packaging": "8.0.0", - "System.IO.Ports": "8.0.0", - "System.Management": "8.0.0", - "System.Reflection.Context": "8.0.0", - "System.Runtime.Caching": "8.0.0", - "System.Security.Cryptography.Pkcs": "8.0.0", - "System.Security.Cryptography.ProtectedData": "8.0.0", - "System.Security.Cryptography.Xml": "8.0.0", - "System.Security.Permissions": "8.0.0", - "System.ServiceModel.Duplex": "4.10.0", - "System.ServiceModel.Http": "4.10.0", - "System.ServiceModel.NetTcp": "4.10.0", - "System.ServiceModel.Primitives": "4.10.0", - "System.ServiceModel.Security": "4.10.0", - "System.ServiceModel.Syndication": "8.0.0", - "System.ServiceProcess.ServiceController": "8.0.0", - "System.Speech": "8.0.0", - "System.Text.Encoding.CodePages": "8.0.0", - "System.Threading.AccessControl": "8.0.0", - "System.Web.Services.Description": "4.10.0" + "resolved": "6.0.8", + "contentHash": "/Yp0fR9z6sGYAQlc3KTeH9e2mWH+bzDCAllb4rSnHu1iEj5NGP/94lcy572Uu8o4K3+LoL9pWKpxHhXu1MEFTg==", + "dependencies": { + "Microsoft.Win32.Registry.AccessControl": "6.0.0", + "Microsoft.Win32.SystemEvents": "6.0.1", + "System.CodeDom": "6.0.0", + "System.ComponentModel.Composition": "6.0.0", + "System.ComponentModel.Composition.Registration": "6.0.0", + "System.Configuration.ConfigurationManager": "6.0.1", + "System.Data.Odbc": "6.0.1", + "System.Data.OleDb": "6.0.0", + "System.Data.SqlClient": "4.8.6", + "System.Diagnostics.EventLog": "6.0.0", + "System.Diagnostics.PerformanceCounter": "6.0.1", + "System.DirectoryServices": "6.0.1", + "System.DirectoryServices.AccountManagement": "6.0.0", + "System.DirectoryServices.Protocols": "6.0.2", + "System.Drawing.Common": "6.0.0", + "System.IO.Packaging": "6.0.0", + "System.IO.Ports": "6.0.0", + "System.Management": "6.0.2", + "System.Reflection.Context": "6.0.0", + "System.Runtime.Caching": "6.0.0", + "System.Security.AccessControl": "6.0.0", + "System.Security.Cryptography.Pkcs": "6.0.3", + "System.Security.Cryptography.ProtectedData": "6.0.0", + "System.Security.Cryptography.Xml": "6.0.1", + "System.Security.Permissions": "6.0.0", + "System.ServiceModel.Duplex": "4.9.0", + "System.ServiceModel.Http": "4.9.0", + "System.ServiceModel.NetTcp": "4.9.0", + "System.ServiceModel.Primitives": "4.9.0", + "System.ServiceModel.Security": "4.9.0", + "System.ServiceModel.Syndication": "6.0.0", + "System.ServiceProcess.ServiceController": "6.0.1", + "System.Speech": "6.0.0", + "System.Text.Encoding.CodePages": "6.0.0", + "System.Threading.AccessControl": "6.0.0", + "System.Web.Services.Description": "4.9.0" } }, "Microsoft.WSMan.Management": { "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "fkngCgs8WB0yk4vB+2Q3r3GQWkWq5y1X6Cn3/Y/UFxmpeSm6UFG10Tl5gi0rD2ZNvQgBP9++VVfxoQgSGqqTNQ==", + "resolved": "7.2.19", + "contentHash": "yXVUesnIUXFoWiTTqIAHKkkRVWKCcGI4LdXJZR9+RBeSORyFjPR9fBsJujCojP5vuAk46sK8s4Ase56XbSfamw==", "dependencies": { - "Microsoft.WSMan.Runtime": "7.4.1", - "System.Management.Automation": "7.4.1", - "System.ServiceProcess.ServiceController": "8.0.0" + "Microsoft.WSMan.Runtime": "7.2.19", + "System.Management.Automation": "7.2.19", + "System.ServiceProcess.ServiceController": "6.0.1" } }, "Microsoft.WSMan.Runtime": { "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "m7NZmuQ7WHcosiU1Fpu82VV7bfI36p4bvMmhZOp2ECCgPYy3RvxVPf/SFKJQ5y721e3Ruindb5mVXxXQZ05TaA==" + "resolved": "7.2.19", + "contentHash": "iBx5rUgfnrp8aoZGeouQxLgIkNDmXcynwbbgh37oQY/dWADulcFD9bdkTZoocjhbO7UzMhiDk8b1h2brEK2qcQ==" + }, + "Namotion.Reflection": { + "type": "Transitive", + "resolved": "2.0.10", + "contentHash": "KHndyscosup/AnzMQLzW0g6+z0h2NCmTyW9hnEL/T/ZkiUIQWBA1RadYgUT+dXuMORmQI/BXm+DXYySWwq8h0Q==", + "dependencies": { + "Microsoft.CSharp": "4.3.0" + } }, "NETStandard.Library": { "type": "Transitive", @@ -658,6 +619,15 @@ "resolved": "13.0.3", "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, + "NJsonSchema": { + "type": "Transitive", + "resolved": "10.5.2", + "contentHash": "Vr2CbySuXh74TQFU0rGJYZOS492xOE64cPXdB7a0cfXJb/N45Bf4v7sd4LOla0jNhgc5V/B61Ko3qecriL195w==", + "dependencies": { + "Namotion.Reflection": "2.0.3", + "Newtonsoft.Json": "9.0.1" + } + }, "Riok.Mapperly": { "type": "Transitive", "resolved": "3.5.1", @@ -665,18 +635,18 @@ }, "runtime.linux-arm.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "gK720fg6HemDg8sXcfy+xCMZ9+hF78Gc7BmREbmkS4noqlu1BAr9qZtuWGhLzFjBfgecmdtl4+SYVwJ1VneZBQ==" + "resolved": "6.0.0", + "contentHash": "75q52H7CSpgIoIDwXb9o833EvBZIXJ0mdPhz1E6jSisEXUBlSCPalC29cj3EXsjpuDwr0dj1LRXZepIQH/oL4Q==" }, "runtime.linux-arm64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "KYG6/3ojhEWbb3FwQAKgGWPHrY+HKUXXdVjJlrtyCLn3EMcNTaNcPadb2c0ndQzixZSmAxZKopXJr0nLwhOrpQ==" + "resolved": "6.0.0", + "contentHash": "xn2bMThmXr3CsvOYmS8ex2Yz1xo+kcnhVg2iVhS9PlmqjZPAkrEo/I40wjrBZH/tU4kvH0s1AE8opAvQ3KIS8g==" }, "runtime.linux-x64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "Wnw5vhA4mgGbIFoo6l9Fk3iEcwRSq49a1aKwJgXUCUtEQLCSUDjTGSxqy/oMUuOyyn7uLHsH8KgZzQ1y3lReiQ==" + "resolved": "6.0.0", + "contentHash": "16nbNXwv0sC+gLGIuecri0skjuh6R1maIJggsaNP7MQBcbVcEfWFUOkEnsnvoLEjy0XerfibuRptfQ8AmdIcWA==" }, "runtime.native.System.Data.SqlClient.sni": { "type": "Transitive", @@ -690,25 +660,25 @@ }, "runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "Ee7Sz5llLpTgyKIWzKI/GeuRSbFkOABgJRY00SqTY0OkTYtkB+9l5rFZfE7fxPA3c22RfytCBYkUdAkcmwMjQg==", + "resolved": "6.0.0", + "contentHash": "KaaXlpOcuZjMdmyF5wzzx3b+PRKIzt6A5Ax9dKenPDQbVJAFpev+casD0BIig1pBcbs3zx7CqWemzUJKAeHdSQ==", "dependencies": { - "runtime.linux-arm.runtime.native.System.IO.Ports": "8.0.0", - "runtime.linux-arm64.runtime.native.System.IO.Ports": "8.0.0", - "runtime.linux-x64.runtime.native.System.IO.Ports": "8.0.0", - "runtime.osx-arm64.runtime.native.System.IO.Ports": "8.0.0", - "runtime.osx-x64.runtime.native.System.IO.Ports": "8.0.0" + "runtime.linux-arm.runtime.native.System.IO.Ports": "6.0.0", + "runtime.linux-arm64.runtime.native.System.IO.Ports": "6.0.0", + "runtime.linux-x64.runtime.native.System.IO.Ports": "6.0.0", + "runtime.osx-arm64.runtime.native.System.IO.Ports": "6.0.0", + "runtime.osx-x64.runtime.native.System.IO.Ports": "6.0.0" } }, "runtime.osx-arm64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "rbUBLAaFW9oVkbsb0+XSrAo2QdhBeAyzLl5KQ6Oci9L/u626uXGKInsVJG6B9Z5EO8bmplC8tsMiaHK8wOBZ+w==" + "resolved": "6.0.0", + "contentHash": "fXG12NodG1QrCdoaeSQ1gVnk/koi4WYY4jZtarMkZeQMyReBm1nZlSRoPnUjLr2ZR36TiMjpcGnQfxymieUe7w==" }, "runtime.osx-x64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "IcfB4jKtM9pkzP9OpYelEcUX1MiDt0IJPBh3XYYdEISFF+6Mc+T8WWi0dr9wVh1gtcdVjubVEIBgB8BHESlGfQ==" + "resolved": "6.0.0", + "contentHash": "/As+zPY49+dSUXkh+fTUbyPhqrdGN//evLxo4Vue88pfh1BHZgF7q4kMblTkxYvwR6Vi03zSYxysSFktO8/SDQ==" }, "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { "type": "Transitive", @@ -751,8 +721,8 @@ }, "System.CodeDom": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==" + "resolved": "6.0.0", + "contentHash": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==" }, "System.Collections": { "type": "Transitive", @@ -766,47 +736,47 @@ }, "System.Collections.Immutable": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==" + "resolved": "5.0.0", + "contentHash": "FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==" }, "System.ComponentModel.Composition": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "bGhUX5BTivJ9Wax0qnJy7uGq7dn/TQkEpJ2Fpu1etg8dbPwyDkUzNPc1d3I2/jUr9y4wDI3a1dkSmi8X21Pzbw==" + "resolved": "6.0.0", + "contentHash": "60Qv+F7oxomOjJeTDA5Z4iCyFbQ0B/2Mi5HT+13pxxq0lVnu2ipbWMzFB+RWKr3wWKA8BSncXr9PH/fECwMX5Q==" }, "System.ComponentModel.Composition.Registration": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "BVMXYqX7Z0Zdq3tc94UKJL/cOWq4LF3ufexfdPuUDrDl4ekbbfwPVzsusVbx+aq6Yx60CJnmJLyHtM3V2Q7BBQ==", + "resolved": "6.0.0", + "contentHash": "+i3RLlOgTsf15VeADBPpzPyRiXq71aLSuzdHeNtmq9f6BwpF3OWhB76p0WDUNCa3Z+SLD4dJbBM9yAep7kQCGA==", "dependencies": { - "System.ComponentModel.Composition": "8.0.0", - "System.Reflection.Context": "8.0.0" + "System.ComponentModel.Composition": "6.0.0", + "System.Reflection.Context": "6.0.0" } }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "JlYi9XVvIREURRUlGMr1F6vOFLk7YSY4p1vHo4kX3tQ0AGrjqlRWHDi66ImHhy6qwXBG3BJ6Y1QlYQ+Qz6Xgww==", + "resolved": "6.0.1", + "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==", "dependencies": { - "System.Diagnostics.EventLog": "8.0.0", - "System.Security.Cryptography.ProtectedData": "8.0.0" + "System.Security.Cryptography.ProtectedData": "6.0.0", + "System.Security.Permissions": "6.0.0" } }, "System.Data.Odbc": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "c+GfnZt2/HyU+voKw2fctLZClcNjPZPWS+mnIhGvDknRMqL/fwWlREWPgA4csbp9ZkQIgB4qkufgdh/oh5Ubow==", + "resolved": "6.0.1", + "contentHash": "4vl7z0b8gcwc2NotcpEkqaLVQAw/wo46zV1uVSoIx2UfJdqlxWKD3ViUicCNJGo41th4kaGcY9kyVe2q9EuB4w==", "dependencies": { - "System.Text.Encoding.CodePages": "8.0.0" + "System.Text.Encoding.CodePages": "6.0.0" } }, "System.Data.OleDb": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FpUTcQ0E8mFvcYp8UZA3NX8wgmhmsCue56g1zfkr1xdOnT5FrYYmC5DWQ9xCw8o8zuxVBKLZvliqEGgmeoalaQ==", + "resolved": "6.0.0", + "contentHash": "LQ8PjTIF1LtrrlGiyiTVjAkQtTWKm9GSNnygIlWjhN9y88s7xhy6DUNDDkmQQ9f6ex7mA4k0Tl97lz/CklaiLg==", "dependencies": { - "System.Configuration.ConfigurationManager": "8.0.0", - "System.Diagnostics.PerformanceCounter": "8.0.0" + "System.Configuration.ConfigurationManager": "6.0.0", + "System.Diagnostics.PerformanceCounter": "6.0.0" } }, "System.Data.SqlClient": { @@ -821,54 +791,62 @@ }, "System.Diagnostics.DiagnosticSource": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==" + "resolved": "6.0.1", + "contentHash": "KiLYDu2k2J82Q9BJpWiuQqCkFjRBWVq4jDzKKWawVi9KWzyD0XG3cmfX0vqTQlL14Wi9EufJrbL0+KCLTbqWiQ==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==" + "resolved": "6.0.0", + "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==" }, "System.Diagnostics.PerformanceCounter": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "lX6DXxtJqVGWw7N/QmVoiCyVQ+Q/Xp+jVXPr3gLK1jJExSn1qmAjJQeb8gnOYeeBTG3E3PmG1nu92eYj/TEjpg==", + "resolved": "6.0.1", + "contentHash": "dDl7Gx3bmSrM2k2ZIm+ucEJnLloZRyvfQF1DvfvATcGF3jtaUBiPvChma+6ZcZzxWMirN3kCywkW7PILphXyMQ==", "dependencies": { - "System.Configuration.ConfigurationManager": "8.0.0" + "System.Configuration.ConfigurationManager": "6.0.0" } }, "System.DirectoryServices": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7nit//efUTy1OsAKco2f02PMrwsR2S234N0dVVp84udC77YcvpOQDz5znAWMtgMWBzY1aRJvUW61jo/7vQRfXg==" + "resolved": "6.0.1", + "contentHash": "935IbO7h5FDGYxeO3cbx/CuvBBuk/VI8sENlfmXlh1pupNOB3LAGzdYdPY8CawGJFP7KNrHK5eUlsFoz3F6cuA==", + "dependencies": { + "System.Security.AccessControl": "6.0.0", + "System.Security.Permissions": "6.0.0" + } }, "System.DirectoryServices.AccountManagement": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "dCT8BYeeisx0IzAf6x+FSVWK3gz2fKI9pgLV16c7dY/lckw4aodNrgXqsFqyqJN5Kfxc3oklG+SCMYkRfg1V7A==", + "resolved": "6.0.0", + "contentHash": "2iKkY6VC4WX6H13N8WhH2SRUfWCwg2KZR5w9JIS9cw9N8cZhT7VXxHX0L6OX6Po419aSu2LWrJE9tu6b+cUnPA==", "dependencies": { - "System.Configuration.ConfigurationManager": "8.0.0", - "System.DirectoryServices": "8.0.0", - "System.DirectoryServices.Protocols": "8.0.0" + "System.Configuration.ConfigurationManager": "6.0.0", + "System.DirectoryServices": "6.0.0", + "System.DirectoryServices.Protocols": "6.0.0", + "System.Security.AccessControl": "6.0.0" } }, "System.DirectoryServices.Protocols": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "puwJxURHDrYLGTQdsHyeMS72ClTqYa4lDYz6LHSbkZEk5hq8H8JfsO4MyYhB5BMMxg93jsQzLUwrnCumj11UIg==" + "resolved": "6.0.2", + "contentHash": "vDDPWwHn3/DNZ+kPkdXHoada+tKPEC9bVqDOr4hK6HBSP7hGCUTA0Zw6WU5qpGaqa5M1/V+axHMIv+DNEbIf6g==" }, "System.Drawing.Common": { "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "x0rAZECxIGx/YVjN28YRdpqka0+H7YMN9741FUDzipXPDzesd60gef/LI0ZCOcYSDsacTLTHvMAvxHG+TjbNNQ==", + "resolved": "6.0.0", + "contentHash": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==", "dependencies": { - "Microsoft.Win32.SystemEvents": "8.0.0" + "Microsoft.Win32.SystemEvents": "6.0.0" } }, "System.Formats.Asn1": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AJukBuLoe3QeAF+mfaRKQb2dgyrvt340iMBHYv+VdBzCUM06IxGlvl0o/uPOS7lHnXPN6u8fFRHSHudx5aTi8w==" + "resolved": "6.0.0", + "contentHash": "T6fD00dQ3NTbPDy31m4eQUwKW84s03z0N2C8HpOklyeaDgaJPa/TexP4/SkORMSOwc7WhKifnA6Ya33AkzmafA==" }, "System.Globalization": { "type": "Transitive", @@ -903,45 +881,46 @@ }, "System.IO.Packaging": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "8g1V4YRpdGAxFcK8v9OjuMdIOJSpF30Zb1JGicwVZhly3I994WFyBdV6mQEo8d3T+URQe55/M0U0eIH0Hts1bg==" + "resolved": "6.0.0", + "contentHash": "C7OkTRIjqIjAKu6ef/fuj8ynCZTPcTYZnvHaq48bniACgXXJogmEoIc56YCDNTc14xhsbLmgpS3KP+evbsUa2g==" }, "System.IO.Ports": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "MaiPbx2/QXZc62gm/DrajRrGPG1lU4m08GWMoWiymPYM+ba4kfACp2PbiYpqJ4QiFGhHD00zX3RoVDTucjWe9g==", + "resolved": "6.0.0", + "contentHash": "dRyGI7fUESar5ZLIpiBOaaNLW7YyOBGftjj5Of+xcduC/Rjl7RjhEnWDvvNBmHuF3d0tdXoqdVI/yrVA8f00XA==", "dependencies": { - "runtime.native.System.IO.Ports": "8.0.0" + "runtime.native.System.IO.Ports": "6.0.0" } }, "System.Management": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==", + "resolved": "6.0.2", + "contentHash": "s6c9x2Kghd+ncEDnT6ApYVOacDXr/Y57oSUSx6wjegMOfKxhtrXn3PdASPNU59y3kB9OJ1yb3l5k6uKr3bhqew==", "dependencies": { - "System.CodeDom": "8.0.0" + "System.CodeDom": "6.0.0" } }, "System.Management.Automation": { "type": "Transitive", - "resolved": "7.4.1", - "contentHash": "EYUMyAoYAw4Zt+cxKRMjZxzoa6gI++O4sK+cSg8HUhC1HfrJoMhD1u1Fo5CvlGv1KX3OmoJSyukgkDmRHFLQiw==", + "resolved": "7.2.19", + "contentHash": "w0juXx7+dc02j2uIta5knerubHH2YXbShA5C3kBYYeQRsagSOtDQPSaZRyQzcweZ5JLx5icYSDK7ERiWDfFfCA==", "dependencies": { "Microsoft.ApplicationInsights": "2.21.0", - "Microsoft.Management.Infrastructure": "3.0.0", - "Microsoft.PowerShell.CoreCLR.Eventing": "7.4.1", - "Microsoft.PowerShell.Native": "7.4.0", - "Microsoft.Security.Extensions": "1.2.0", - "Microsoft.Win32.Registry.AccessControl": "8.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Management.Infrastructure": "2.0.0", + "Microsoft.PowerShell.CoreCLR.Eventing": "7.2.19", + "Microsoft.PowerShell.Native": "7.2.1", + "Microsoft.Win32.Registry.AccessControl": "6.0.0", "Newtonsoft.Json": "13.0.3", - "System.Configuration.ConfigurationManager": "8.0.0", - "System.Diagnostics.DiagnosticSource": "8.0.0", - "System.DirectoryServices": "8.0.0", - "System.Management": "8.0.0", - "System.Security.AccessControl": "6.0.0", - "System.Security.Cryptography.Pkcs": "8.0.0", - "System.Security.Permissions": "8.0.0", - "System.Text.Encoding.CodePages": "8.0.0" + "System.Configuration.ConfigurationManager": "6.0.1", + "System.Diagnostics.DiagnosticSource": "5.0.1", + "System.DirectoryServices": "6.0.1", + "System.Management": "6.0.2", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Security.AccessControl": "6.0.1", + "System.Security.Cryptography.Pkcs": "6.0.4", + "System.Security.Permissions": "6.0.0", + "System.Text.Encoding.CodePages": "6.0.0" } }, "System.Memory": { @@ -960,8 +939,8 @@ }, "System.Net.Http.WinHttpHandler": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "dAtcyQzDpi34VdR1BeEV8yCOeXVEyekYYK6lJZIzG/N5aqEGgT6AB2DsbiidMp8cB6Y7DqqcmQFZaSGUdoubvQ==" + "resolved": "6.0.1", + "contentHash": "zdSpn2+EPBEXmsopvUjkpvbXNN53dqL7BifCKBJ5M+A/P3JEiCL/guuPwuiazu+RzCuEX/NJLnoXhllaf3vBxg==" }, "System.Numerics.Vectors": { "type": "Transitive", @@ -970,14 +949,14 @@ }, "System.Private.ServiceModel": { "type": "Transitive", - "resolved": "4.10.3", - "contentHash": "BcUV7OERlLqGxDXZuIyIMMmk1PbqBblLRbAoigmzIUx/M8A+8epvyPyXRpbgoucKH7QmfYdQIev04Phx2Co08A==", + "resolved": "4.9.0", + "contentHash": "d3RjkrtpjUQ63PzFmm/SZ4aOXeJNP+8YW5QeP0lCJy8iX4xlHdlNLWTF9sRn9SmrFTK757kQXT9Op/R4l858uw==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "5.0.0", "Microsoft.Extensions.ObjectPool": "5.0.10", "System.Numerics.Vectors": "4.5.0", "System.Reflection.DispatchProxy": "4.7.1", - "System.Security.Cryptography.Xml": "6.0.1", + "System.Security.Cryptography.Xml": "5.0.0", "System.Security.Principal.Windows": "5.0.0" } }, @@ -995,8 +974,8 @@ }, "System.Reflection.Context": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "k76ubeIBOeIVg7vkQ4I+LoB8sY1EzFIc3oHEtoiNLhXleb7TBLXUQu0CFZ4sPlXJzWNabRf+gn1T7lyhOBxIMA==" + "resolved": "6.0.0", + "contentHash": "Vi+Gb41oyOYie7uLSsjRmfRg3bryUg5DssJvj3gDUl0D8z6ipSm6/yi/XNx2rcS5iVMvHcwRUHjcx7ixv0K3/w==" }, "System.Reflection.DispatchProxy": { "type": "Transitive", @@ -1005,11 +984,8 @@ }, "System.Reflection.Metadata": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "MclTG61lsD9sYdpNz9xsKBzjsmsfCtcMZYXz/IUr2zlhaTaABonlr1ESeompTgM+Xk+IwtGYU7/voh3YWB/fWw==", - "dependencies": { - "System.Collections.Immutable": "7.0.0" - } + "resolved": "5.0.0", + "contentHash": "5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==" }, "System.Reflection.Primitives": { "type": "Transitive", @@ -1044,10 +1020,10 @@ }, "System.Runtime.Caching": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "4TmlmvGp4kzZomm7J2HJn6IIx0UUrQyhBDyb5O1XiunZlQImXW+B8b7W/sTPcXhSf9rp5NR5aDtQllwbB5elOQ==", + "resolved": "6.0.0", + "contentHash": "E0e03kUp5X2k+UAoVl6efmI7uU7JRBWi5EIdlQ7cr0NpBGjHG4fWII35PgsBY9T4fJQ8E4QPsL0rKksU9gcL5A==", "dependencies": { - "System.Configuration.ConfigurationManager": "8.0.0" + "System.Configuration.ConfigurationManager": "6.0.0" } }, "System.Runtime.CompilerServices.Unsafe": { @@ -1067,8 +1043,8 @@ }, "System.Security.AccessControl": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ==" + "resolved": "6.0.1", + "contentHash": "IQ4NXP/B3Ayzvw0rDQzVTYsCKyy0Jp9KI6aYcK7UnGVlR9+Awz++TIPCQtPYfLJfOpm8ajowMR09V7quD3sEHw==" }, "System.Security.Claims": { "type": "Transitive", @@ -1086,31 +1062,33 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ULmp3xoOwNYjOYp4JZ2NK/6NdTgiN1GQXzVVN1njQ7LOZ0d0B9vyMnhyqbIi9Qw4JXj1JgCsitkTShboHRx7Eg==", + "resolved": "6.0.4", + "contentHash": "LGbXi1oUJ9QgCNGXRO9ndzBL/GZgANcsURpMhNR8uO+rca47SZmciS3RSQUvlQRwK3QHZSHNOXzoMUASKA+Anw==", "dependencies": { - "System.Formats.Asn1": "8.0.0" + "System.Formats.Asn1": "6.0.0" } }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "+TUFINV2q2ifyXauQXRwy4CiBhqvDEDZeVJU7qfxya4aRYOKzVBpN+4acx25VcPB9ywUN6C0n8drWl110PhZEg==" + "resolved": "6.0.0", + "contentHash": "rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==" }, "System.Security.Cryptography.Xml": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "HQSFbakswZ1OXFz2Bt3AJlC6ENDqWeVpgqhf213xqQUMDifzydOHIKVb1RV4prayobvR3ETIScMaQdDF2hwGZA==", + "resolved": "6.0.1", + "contentHash": "5e5bI28T0x73AwTsbuFP4qSRzthmU2C0Gqgg3AZ3KTxmSyA+Uhk31puA3srdaeWaacVnHhLdJywCzqOiEpbO/w==", "dependencies": { - "System.Security.Cryptography.Pkcs": "8.0.0" + "System.Security.AccessControl": "6.0.0", + "System.Security.Cryptography.Pkcs": "6.0.1" } }, "System.Security.Permissions": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "v/BBylw7XevuAsHXoX9dDUUfmBIcUf7Lkz8K3ZXIKz3YRKpw8YftpSir4n4e/jDTKFoaK37AsC3xnk+GNFI1Ow==", + "resolved": "6.0.0", + "contentHash": "T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==", "dependencies": { - "System.Windows.Extensions": "8.0.0" + "System.Security.AccessControl": "6.0.0", + "System.Windows.Extensions": "6.0.0" } }, "System.Security.Principal": { @@ -1128,65 +1106,65 @@ }, "System.ServiceModel.Duplex": { "type": "Transitive", - "resolved": "4.10.3", - "contentHash": "IZ8ZahvTenWML7/jGUXSCm6jHlxpMbcb+Hy+h5p1WP9YVtb+Er7FHRRGizqQMINEdK6HhWpD6rzr5PdxNyusdg==", + "resolved": "4.9.0", + "contentHash": "Yb8MFiJxBBtm2JnfS/5SxYzm2HqkEmHu5xeaVIHXy83sNpty9wc30JifH2xgda821D6nr1UctbwbdZqN4LBUKQ==", "dependencies": { - "System.Private.ServiceModel": "4.10.3", - "System.ServiceModel.Primitives": "4.10.3" + "System.Private.ServiceModel": "4.9.0", + "System.ServiceModel.Primitives": "4.9.0" } }, "System.ServiceModel.Http": { "type": "Transitive", - "resolved": "4.10.3", - "contentHash": "hodkn0rPTYmoZ9EIPwcleUrOi1gZBPvU0uFvzmJbyxl1lIpVM5GxTrs/pCETStjOXCiXhBDoZQYajquOEfeW/w==", + "resolved": "4.9.0", + "contentHash": "Z+s3RkLNzJ31fDXAjqXdXp67FqsNG4V3Md3r7FOrzMkHmg61gY8faEfTFPBLxU9tax1HPWt6IHVAquXBKySJaw==", "dependencies": { - "System.Private.ServiceModel": "4.10.3", - "System.ServiceModel.Primitives": "4.10.3" + "System.Private.ServiceModel": "4.9.0", + "System.ServiceModel.Primitives": "4.9.0" } }, "System.ServiceModel.NetTcp": { "type": "Transitive", - "resolved": "4.10.3", - "contentHash": "tP7GN7ehqSIQEz7yOJEtY8ziTpfavf2IQMPKa7r9KGQ75+uEW6/wSlWez7oKQwGYuAHbcGhpJvdG6WoVMKYgkw==", + "resolved": "4.9.0", + "contentHash": "nXgnnkrZERUF/KwmoLwZPkc7fqgiq94DXkmUZBvDNh/LdZquDvjy2NbhJLElpApOa5x8zEoQoBZyJ2PqNC39qg==", "dependencies": { - "System.Private.ServiceModel": "4.10.3", - "System.ServiceModel.Primitives": "4.10.3" + "System.Private.ServiceModel": "4.9.0", + "System.ServiceModel.Primitives": "4.9.0" } }, "System.ServiceModel.Primitives": { "type": "Transitive", - "resolved": "4.10.3", - "contentHash": "aNcdry95wIP1J+/HcLQM/f/AA73LnBQDNc2uCoZ+c1//KpVRp8nMZv5ApMwK+eDNVdCK8G0NLInF+xG3mfQL+g==", + "resolved": "4.9.0", + "contentHash": "LTFPVdS8Nf76xg/wRZkDa+2Q+GnjTOmwkTlwuoetwX37mAfYnGkf7p8ydhpDwVmomNljpUOhUUGxfjQyd5YcOg==", "dependencies": { - "System.Private.ServiceModel": "4.10.3" + "System.Private.ServiceModel": "4.9.0" } }, "System.ServiceModel.Security": { "type": "Transitive", - "resolved": "4.10.3", - "contentHash": "vqelKb7DvP2inb6LDJ5Igi8wpOYdtLXn5luDW5qEaqkV2sYO1pKlVYBpr6g6m5SevzbdZlVNu67dQiD/H6EdGQ==", + "resolved": "4.9.0", + "contentHash": "iurpbSmPgotHps94VQ6acvL6hU2gjiuBmQI7PwLLN76jsbSpUcahT0PglccKIAwoMujATk/LWtAapBHpwCFn2g==", "dependencies": { - "System.Private.ServiceModel": "4.10.3", - "System.ServiceModel.Primitives": "4.10.3" + "System.Private.ServiceModel": "4.9.0", + "System.ServiceModel.Primitives": "4.9.0" } }, "System.ServiceModel.Syndication": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "CJxIUwpBkMCPmIx46tFVOt0zpRrYurUHLW6tJBcmyj+MyWpKc6MMcS69B7IdlV/bgtgys073wMIHZX9QOQ1OFA==" + "resolved": "6.0.0", + "contentHash": "cp1mMNG87iJtE0oHXFtfWT6cfski2JNo5iU0siTPi/uN2k1CIJI6FE4jr4v3got2dzt7wBq17fSy44btun9GiA==" }, "System.ServiceProcess.ServiceController": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "jtYVG3bpw2n/NvNnP2g/JLri0D4UtfusTvLeH6cZPNAEjJXJVGspS3wLgVvjNbm+wjaYkFgsXejMTocV1T5DIQ==", + "resolved": "6.0.1", + "contentHash": "LJGWSUfoEZ6NBVPGnDsCMDrT8sDI7QJ8SUzuJQUnIDOtkZiC1LFUmsGu+Dq6OdwSnaW9nENIbL7uSd4PF9YpIA==", "dependencies": { - "System.Diagnostics.EventLog": "8.0.0" + "System.Diagnostics.EventLog": "6.0.0" } }, "System.Speech": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "CNuiA6vb95Oe5PRjClZEBiaju31vwB8OIeCgeSBXyZL6+MS4RVVB2X/C11z0xCkooHE3Vy91nM2z76emIzR+sg==" + "resolved": "6.0.0", + "contentHash": "GQovERMrNP0Vbtgk8LzH4PlFS6lqHgsL9WkUmv8Kkxa0m0vNakitytpHZlfJ9WR7n9WKLXh68nn2kyL9mflnLg==" }, "System.Text.Encoding": { "type": "Transitive", @@ -1200,18 +1178,24 @@ }, "System.Text.Encoding.CodePages": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "OZIsVplFGaVY90G2SbpgU7EnCoOO5pw1t4ic21dBF3/1omrJFpAGoNAVpPyMVOC90/hvgkGG3VFqR13YgZMQfg==" + "resolved": "6.0.0", + "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } }, "System.Text.Encodings.Web": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==" + "resolved": "6.0.0", + "contentHash": "Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } }, "System.Text.Json": { "type": "Transitive", - "resolved": "6.0.9", - "contentHash": "2j16oUgtIzl7Xtk7demG0i/v5aU/ZvULcAnJvPb63U3ZhXJ494UYcxuEj5Fs49i3XDrk5kU/8I+6l9zRCw3cJw==", + "resolved": "6.0.0", + "contentHash": "zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==", "dependencies": { "System.Runtime.CompilerServices.Unsafe": "6.0.0", "System.Text.Encodings.Web": "6.0.0" @@ -1219,8 +1203,11 @@ }, "System.Threading.AccessControl": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "cIed5+HuYz+eV9yu9TH95zPkqmm1J9Qps9wxjB335sU8tsqc2kGdlTEH9FZzZeCS8a7mNSEsN8ZkyhQp1gfdEw==" + "resolved": "6.0.0", + "contentHash": "2258mqWesMch/xCpcnjJBgJP33yhpZLGLbEOm01qwq0efG4b+NG8c9sxYOWNxmDQ82swXrnQRl1Yp2wC1NrfZA==", + "dependencies": { + "System.Security.AccessControl": "6.0.0" + } }, "System.Threading.Tasks": { "type": "Transitive", @@ -1239,13 +1226,16 @@ }, "System.Web.Services.Description": { "type": "Transitive", - "resolved": "4.10.3", - "contentHash": "ORCkTkUo9f1o4ACG+H6SV+0XSxVZ461w3cHzYxEU41y6aKWp1CeNTMYbtdxMw1we6c6t4Hqq15PdcLVcdqno/g==" + "resolved": "4.9.0", + "contentHash": "d20B3upsWddwSG5xF3eQLs0cAV3tXDsBNqP4kh02ylfgZwqfpf4f/9KiZVIGIoxULt2cKqxWs+U4AdNAJ7L8cQ==" }, "System.Windows.Extensions": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "Obg3a90MkOw9mYKxrardLpY2u0axDMrSmy4JCdq2cYbelM2cUwmUir5Bomvd1yxmPL9h5LVHU1tuKBZpUjfASg==" + "resolved": "6.0.0", + "contentHash": "IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==", + "dependencies": { + "System.Drawing.Common": "6.0.0" + } }, "YamlDotNet": { "type": "Transitive", diff --git a/src/Winget.CommunityRepository.Ef/Winget.CommunityRepository.Ef.csproj b/src/Winget.CommunityRepository.Ef/Winget.CommunityRepository.Ef.csproj index 49cd9bb..a51b961 100644 --- a/src/Winget.CommunityRepository.Ef/Winget.CommunityRepository.Ef.csproj +++ b/src/Winget.CommunityRepository.Ef/Winget.CommunityRepository.Ef.csproj @@ -1,19 +1,45 @@  - net8.0 + net8.0;net6.0 enable enable en - - + + 7 + 1701;1702;CS8618 + + + 7 + 1701;1702;CS8618 + + + 1701;1702;CS8618 + + + 1701;1702;CS8618 + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + diff --git a/src/Winget.CommunityRepository/Models/WingetEntry.cs b/src/Winget.CommunityRepository/Models/WingetEntry.cs index 5e8f8d6..1924f3b 100644 --- a/src/Winget.CommunityRepository/Models/WingetEntry.cs +++ b/src/Winget.CommunityRepository/Models/WingetEntry.cs @@ -1,13 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Winget.CommunityRepository.Models; +namespace Winget.CommunityRepository.Models; public class WingetEntry { internal string? Name { get; set; } - public required string PackageId { get; set; } + public string? PackageId { get; set; } public string? Version { get; set; } } diff --git a/src/Winget.CommunityRepository/Winget.CommunityRepository.csproj b/src/Winget.CommunityRepository/Winget.CommunityRepository.csproj index 9ce6232..c6984ca 100644 --- a/src/Winget.CommunityRepository/Winget.CommunityRepository.csproj +++ b/src/Winget.CommunityRepository/Winget.CommunityRepository.csproj @@ -1,7 +1,7 @@  - net8.0 + net8.0;net6.0 enable enable en diff --git a/src/Winget.CommunityRepository/WingetRepository.cs b/src/Winget.CommunityRepository/WingetRepository.cs index 92cfc8b..0643d68 100644 --- a/src/Winget.CommunityRepository/WingetRepository.cs +++ b/src/Winget.CommunityRepository/WingetRepository.cs @@ -42,7 +42,7 @@ public WingetRepository(HttpClient? httpClient = null, ILogger { await LoadEntries(cancellationToken, false, cacheFile); - var entry = Entries!.FirstOrDefault(e => e.PackageId.Equals(packageId, StringComparison.OrdinalIgnoreCase)); + var entry = Entries!.FirstOrDefault(e => e.PackageId!.Equals(packageId, StringComparison.OrdinalIgnoreCase)); return entry; } @@ -50,7 +50,7 @@ public WingetRepository(HttpClient? httpClient = null, ILogger { await LoadEntries(cancellationToken, false, cacheFile); - var results = Entries!.Where(e => e.Name?.Contains(query, StringComparison.OrdinalIgnoreCase) == true || e.PackageId.Contains(query, StringComparison.OrdinalIgnoreCase)); + var results = Entries!.Where(e => e.Name?.Contains(query, StringComparison.OrdinalIgnoreCase) == true || e.PackageId!.Contains(query, StringComparison.OrdinalIgnoreCase)); return results; } diff --git a/src/WingetIntune/Graph/GraphAppUploader.cs b/src/WingetIntune/Graph/GraphAppUploader.cs index b4d68e1..24bdfc7 100644 --- a/src/WingetIntune/Graph/GraphAppUploader.cs +++ b/src/WingetIntune/Graph/GraphAppUploader.cs @@ -22,9 +22,11 @@ public GraphAppUploader(ILogger logger, IFileManager fileManag public async Task CreateNewAppAsync(GraphServiceClient graphServiceClient, Win32LobApp win32LobApp, string intunePackageFile, string? logoPath = null, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentNullException.ThrowIfNull(win32LobApp); ArgumentException.ThrowIfNullOrEmpty(intunePackageFile); +#endif if (!fileManager.FileExists(intunePackageFile)) { throw new FileNotFoundException("IntuneWin file not found", intunePackageFile); @@ -96,9 +98,11 @@ public GraphAppUploader(ILogger logger, IFileManager fileManag public async Task CreateNewContentVersionAsync(GraphServiceClient graphServiceClient, string appId, string intunePackageFile, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(appId); ArgumentException.ThrowIfNullOrEmpty(intunePackageFile); +#endif if (!fileManager.FileExists(intunePackageFile)) { throw new FileNotFoundException("IntuneWin file not found", intunePackageFile); diff --git a/src/WingetIntune/Graph/GraphServiceClientExtensions.cs b/src/WingetIntune/Graph/GraphServiceClientExtensions.cs index 78fdec1..b105553 100644 --- a/src/WingetIntune/Graph/GraphServiceClientExtensions.cs +++ b/src/WingetIntune/Graph/GraphServiceClientExtensions.cs @@ -15,8 +15,10 @@ public static class GraphServiceClientExtensions public static Task Intune_CreateWin32LobAppContentVersionAsync(this GraphServiceClient graphServiceClient, string win32LobAppId, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(win32LobAppId); +#endif var requestInfo = new RequestInformation { HttpMethod = Method.POST, @@ -30,10 +32,12 @@ public static class GraphServiceClientExtensions public static Task Intune_CreateWin32LobAppContentVersionFileAsync(this GraphServiceClient graphServiceClient, string win32LobAppId, string contentVersionId, MobileAppContentFile mobileAppContentFile, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(win32LobAppId); ArgumentException.ThrowIfNullOrEmpty(contentVersionId); ArgumentNullException.ThrowIfNull(mobileAppContentFile); +#endif var requestInfo = new RequestInformation { HttpMethod = Method.POST, @@ -45,10 +49,12 @@ public static class GraphServiceClientExtensions public static Task Intune_GetWin32LobAppContentVersionFileAsync(this GraphServiceClient graphServiceClient, string win32LobAppId, string contentVersionId, string mobileAppContentFileId, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(win32LobAppId); ArgumentException.ThrowIfNullOrEmpty(contentVersionId); ArgumentException.ThrowIfNullOrEmpty(mobileAppContentFileId); +#endif var requestInfo = new RequestInformation { HttpMethod = Method.GET, @@ -59,10 +65,12 @@ public static class GraphServiceClientExtensions public static async Task Intune_WaitForFinalCommitStateAsync(this GraphServiceClient graphServiceClient, string win32LobAppId, string contentVersionId, string mobileAppContentFileId, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(win32LobAppId); ArgumentException.ThrowIfNullOrEmpty(contentVersionId); ArgumentException.ThrowIfNullOrEmpty(mobileAppContentFileId); +#endif while (!cancellationToken.IsCancellationRequested) { MobileAppContentFile? result = await graphServiceClient.DeviceAppManagement.MobileApps[win32LobAppId].GraphWin32LobApp.ContentVersions[contentVersionId].Files[mobileAppContentFileId].GetAsync(cancellationToken: cancellationToken); @@ -91,11 +99,13 @@ public static class GraphServiceClientExtensions public static Task Intune_CommitWin32LobAppContentVersionFileAsync(this GraphServiceClient graphServiceClient, string win32LobAppId, string contentVersionId, string mobileAppContentFileId, FileEncryptionInfo fileEncryptionInfo, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(win32LobAppId); ArgumentException.ThrowIfNullOrEmpty(contentVersionId); ArgumentException.ThrowIfNullOrEmpty(mobileAppContentFileId); ArgumentNullException.ThrowIfNull(fileEncryptionInfo); +#endif var body = new MobileAppContentFileCommitBody { FileEncryptionInfo = fileEncryptionInfo, @@ -120,10 +130,11 @@ public static Task Intune_AddCategoryToApp(this GraphServiceClient graphServiceC public static RequestInformation Intune_AddCategoryToApp_RequestInfo(this GraphServiceClient graphServiceClient, string appId, string categoryId) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(appId); ArgumentException.ThrowIfNullOrEmpty(categoryId); - +#endif var requestInfo = new RequestInformation { HttpMethod = Method.POST, diff --git a/src/WingetIntune/Graph/GraphStoreAppUploader.cs b/src/WingetIntune/Graph/GraphStoreAppUploader.cs index 7f05919..c12973f 100644 --- a/src/WingetIntune/Graph/GraphStoreAppUploader.cs +++ b/src/WingetIntune/Graph/GraphStoreAppUploader.cs @@ -19,9 +19,11 @@ public class GraphStoreAppUploader public GraphStoreAppUploader(ILogger logger, IFileManager fileManager, Internal.MsStore.MicrosoftStoreClient microsoftStoreClient) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(logger); ArgumentNullException.ThrowIfNull(fileManager); ArgumentNullException.ThrowIfNull(microsoftStoreClient); +#endif this.logger = logger; this.fileManager = fileManager; this.microsoftStoreClient = microsoftStoreClient; @@ -29,16 +31,19 @@ public GraphStoreAppUploader(ILogger logger, IFileManager public Task GetStoreIdForNameAsync(string searchstring, CancellationToken cancellationToken) { +#if NET8_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(searchstring); +#endif return microsoftStoreClient.GetPackageIdForFirstMatchAsync(searchstring, cancellationToken); } public async Task CreateStoreAppAsync(GraphServiceClient graphServiceClient, string packageId, CancellationToken cancellationToken) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(packageId); ArgumentNullException.ThrowIfNull(cancellationToken); - +#endif var catalog = await microsoftStoreClient.GetDisplayCatalogAsync(packageId!, cancellationToken); ArgumentNullException.ThrowIfNull(catalog); if (!(catalog.Products?.Count() > 0)) diff --git a/src/WingetIntune/Graph/GraphWorkflows.cs b/src/WingetIntune/Graph/GraphWorkflows.cs index 5e5ca00..09fecde 100644 --- a/src/WingetIntune/Graph/GraphWorkflows.cs +++ b/src/WingetIntune/Graph/GraphWorkflows.cs @@ -10,11 +10,12 @@ public static class GraphWorkflows { public static async Task AddIntuneCategoriesToAppAsync(this GraphServiceClient graphServiceClient, string appId, string[] categories, CancellationToken cancellationToken) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(appId); ArgumentNullException.ThrowIfNull(categories); ArgumentNullException.ThrowIfNull(cancellationToken); - +#endif // Load categories to match against var graphCategories = await graphServiceClient.DeviceAppManagement.MobileAppCategories.GetAsync(cancellationToken: cancellationToken); @@ -30,10 +31,11 @@ public static async Task AddIntuneCategoriesToAppAsync(this GraphServiceClient g public static async Task AssignAppAsync(this GraphServiceClient graphServiceClient, string appId, string[]? requiredFor, string[]? availableFor, string[]? uninstallFor, bool addAutoUpdateSetting, CancellationToken cancellationToken) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(appId); ArgumentNullException.ThrowIfNull(cancellationToken); - +#endif List assignments = new List(); if (requiredFor is not null && requiredFor.Any()) { diff --git a/src/WingetIntune/Implementations/AzCopyAzureUploader.cs b/src/WingetIntune/Implementations/AzCopyAzureUploader.cs index 24749c4..418b0a4 100644 --- a/src/WingetIntune/Implementations/AzCopyAzureUploader.cs +++ b/src/WingetIntune/Implementations/AzCopyAzureUploader.cs @@ -41,8 +41,10 @@ private async Task DownloadAzCopyIfNeeded(CancellationToken cancellationToken) public async Task UploadFileToAzureAsync(string filename, Uri sasUri, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(filename); ArgumentNullException.ThrowIfNull(sasUri); +#endif await DownloadAzCopyIfNeeded(cancellationToken); var args = $"copy \"{filename}\" \"{sasUri}\" --output-type \"json\""; var result = await processManager.RunProcessAsync(azCopyPath, args, cancellationToken, false); diff --git a/src/WingetIntune/Implementations/ChunkedAzureFileUploader.cs b/src/WingetIntune/Implementations/ChunkedAzureFileUploader.cs index 727d887..3d4b90a 100644 --- a/src/WingetIntune/Implementations/ChunkedAzureFileUploader.cs +++ b/src/WingetIntune/Implementations/ChunkedAzureFileUploader.cs @@ -23,9 +23,10 @@ public ChunkedAzureFileUploader(HttpClient httpClient, ILogger logger, IProcessManager processManag public async Task GetPackageInfoAsync(string id, string? version, string? source, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNullOrEmpty(id); +#endif if (string.IsNullOrEmpty(version) || source != "winget") { return await GetPackageInfoFromWingetAsync(id, version, source, cancellationToken); @@ -81,8 +83,10 @@ private async Task GetPackageInfoFromWingetAsync(string id, string? private async Task GetPackageInfoFromWingetManifestAsync(string id, string version, CancellationToken cancellationToken) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNullOrEmpty(id); ArgumentNullException.ThrowIfNullOrEmpty(version); +#endif LogGetPackageInfoFromManifest(id, version); try { diff --git a/src/WingetIntune/Implementations/WingetManagerKeys.cs b/src/WingetIntune/Implementations/WingetManagerKeys.cs index fe5dbbc..3776e56 100644 --- a/src/WingetIntune/Implementations/WingetManagerKeys.cs +++ b/src/WingetIntune/Implementations/WingetManagerKeys.cs @@ -3,16 +3,16 @@ internal class WingetManagerKeys { internal const string WingetPrefixEn = "Found "; internal const string WingetPrefixFr = "Encontrado "; - public required string Prefix { get; set; } - public required string Version { get; set; } - public required string Publisher { get; set; } - public required string PublisherUrl { get; set; } - public required string InformationUrl { get; set; } - public required string SupportUrl { get; set; } - public required string Description { get; set; } - public required string InstallerType { get; set; } - public required string InstallerUrl { get; set; } - public required string InstallerSha256 { get; set; } + public string Prefix { get; set; } + public string Version { get; set; } + public string Publisher { get; set; } + public string PublisherUrl { get; set; } + public string InformationUrl { get; set; } + public string SupportUrl { get; set; } + public string Description { get; set; } + public string InstallerType { get; set; } + public string InstallerUrl { get; set; } + public string InstallerSha256 { get; set; } public static WingetManagerKeys English() => new WingetManagerKeys { diff --git a/src/WingetIntune/Internal/MsStore/Models/MicrosoftStoreSearch.cs b/src/WingetIntune/Internal/MsStore/Models/MicrosoftStoreSearch.cs index 7abd2aa..bcb7c40 100644 --- a/src/WingetIntune/Internal/MsStore/Models/MicrosoftStoreSearch.cs +++ b/src/WingetIntune/Internal/MsStore/Models/MicrosoftStoreSearch.cs @@ -1,12 +1,12 @@ namespace WingetIntune.Internal.MsStore.Models; public class MicrosoftStoreSearchRequest { - public required MicrosoftStoreSearchQuery Query { get; set; } + public MicrosoftStoreSearchQuery Query { get; set; } } public class MicrosoftStoreSearchQuery { - public required string KeyWord { get; set; } + public string KeyWord { get; set; } public string MatchType { get; set; } = "Substring"; } diff --git a/src/WingetIntune/Intune/IntuneManager.cs b/src/WingetIntune/Intune/IntuneManager.cs index aba556b..59146f5 100644 --- a/src/WingetIntune/Intune/IntuneManager.cs +++ b/src/WingetIntune/Intune/IntuneManager.cs @@ -50,10 +50,12 @@ public IntuneManager(ILoggerFactory? loggerFactory, IFileManager fileManager, IP public async Task GenerateMsiPackage(string tempFolder, string outputFolder, Models.PackageInfo packageInfo, PackageOptions packageOptions, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(tempFolder); ArgumentException.ThrowIfNullOrEmpty(outputFolder); ArgumentNullException.ThrowIfNull(packageInfo); ArgumentNullException.ThrowIfNull(packageOptions); +#endif if (!packageInfo.InstallerType.IsMsi()) { throw new ArgumentException("Package is not an MSI package", nameof(packageInfo)); @@ -87,8 +89,10 @@ public IntuneManager(ILoggerFactory? loggerFactory, IFileManager fileManager, IP /// public async Task GenerateInstallerPackage(string tempFolder, string outputFolder, Models.PackageInfo packageInfo, PackageOptions? packageOptions = null, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(tempFolder); ArgumentException.ThrowIfNullOrEmpty(outputFolder); +#endif if (packageOptions is null) { packageOptions = PackageOptions.Create(); @@ -116,9 +120,11 @@ public IntuneManager(ILoggerFactory? loggerFactory, IFileManager fileManager, IP private async Task GenerateNoneMsiInstaller(string tempFolder, string outputFolder, PackageInfo packageInfo, PackageOptions packageOptions, CancellationToken cancellationToken) { +#if NET8_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(tempFolder); ArgumentException.ThrowIfNullOrEmpty(outputFolder); ArgumentNullException.ThrowIfNull(packageInfo); +#endif var packageTempFolder = fileManager.CreateFolderForPackage(tempFolder, packageInfo.PackageIdentifier!, packageInfo.Version!); var packageFolder = fileManager.CreateFolderForPackage(outputFolder, packageInfo.PackageIdentifier!, packageInfo.Version!); @@ -219,9 +225,11 @@ public async Task LoadPackageInfoFromFile(string packageFile, Cance public async Task PublishAppAsync(string packagesFolder, PackageInfo packageInfo, IntunePublishOptions options, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(packagesFolder); ArgumentNullException.ThrowIfNull(packageInfo); ArgumentNullException.ThrowIfNull(options); +#endif if (packageInfo.Source == PackageSource.Store) { return await PublishStoreAppAsync(options, packageId: packageInfo.PackageIdentifier, cancellationToken: cancellationToken); @@ -251,10 +259,11 @@ public async Task PublishAppAsync(string packagesFolder, PackageInfo public async Task AddContentVersionToApp(IntunePublishOptions publishOptions, string appId, string intuneFilePath, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(publishOptions); ArgumentException.ThrowIfNullOrEmpty(appId); ArgumentException.ThrowIfNullOrEmpty(intuneFilePath); - +#endif var graphServiceClient = CreateGraphClientFromOptions(publishOptions); return await AddContentVersionToApp(graphServiceClient, appId, intuneFilePath, cancellationToken); @@ -262,10 +271,11 @@ public async Task AddContentVersionToApp(IntunePublishOptions publishOpt internal async Task AddContentVersionToApp(GraphServiceClient graphServiceClient, string appId, string intuneFilePath, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(appId); ArgumentException.ThrowIfNullOrEmpty(intuneFilePath); - +#endif if (!fileManager.FileExists(intuneFilePath)) { throw new FileNotFoundException("IntuneWin file not found", intuneFilePath); @@ -397,10 +407,11 @@ public Task> GetPublishedAppsAsync(IntunePublishOptions o private async Task AddCategoriesToApp(GraphServiceClient graphServiceClient, string appId, string[] categories, CancellationToken cancellationToken) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(appId); ArgumentNullException.ThrowIfNull(categories); - +#endif logger.LogInformation("Adding categories {categories} to app {appId}", string.Join(",", categories), appId); try @@ -417,10 +428,11 @@ private async Task AddCategoriesToApp(GraphServiceClient graphServiceClient, str private async Task AssignAppAsync(GraphServiceClient graphServiceClient, string appId, string[]? requiredFor, string[]? availableFor, string[]? uninstallFor, bool addAutoUpdateSetting, CancellationToken cancellationToken) { +#if NET8_0_OR_GREATER ArgumentNullException.ThrowIfNull(graphServiceClient); ArgumentException.ThrowIfNullOrEmpty(appId); ArgumentNullException.ThrowIfNull(cancellationToken); - +#endif try { var assignments = await GraphWorkflows.AssignAppAsync(graphServiceClient, appId, requiredFor, availableFor, uninstallFor, addAutoUpdateSetting, cancellationToken); @@ -452,7 +464,9 @@ internal async Task DownloadInstallerAsync(string tempPackageFolder, Pac public static (string?, string?) GetMsiInfo(string setupFile, ILogger? logger) { +#if NET8_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(setupFile); +#endif try { using var msi = new WixSharp.UI.MsiParser(setupFile); diff --git a/src/WingetIntune/Intune/MetadataManager.cs b/src/WingetIntune/Intune/MetadataManager.cs index eef2d65..701d051 100644 --- a/src/WingetIntune/Intune/MetadataManager.cs +++ b/src/WingetIntune/Intune/MetadataManager.cs @@ -24,7 +24,9 @@ public MetadataManager(ILogger logger, IFileManager fileManager public async Task LoadPackageInfoFromFolderAsync(string folder, CancellationToken cancellationToken) { +#if NET8_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(folder); +#endif var filename = Path.Combine(folder, "app.json"); if (!fileManager.FileExists(filename)) { diff --git a/src/WingetIntune/Intune/ProcessIntunePackager.cs b/src/WingetIntune/Intune/ProcessIntunePackager.cs index eb700b0..61ab79c 100644 --- a/src/WingetIntune/Intune/ProcessIntunePackager.cs +++ b/src/WingetIntune/Intune/ProcessIntunePackager.cs @@ -31,11 +31,12 @@ public ProcessIntunePackager(IProcessManager processManager, IFileManager fileMa public async Task CreatePackage(string inputFolder, string outputFolder, string installerFilename, PackageInfo? _ = null, CancellationToken cancellationToken = default) { +#if NET8_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(inputFolder); ArgumentException.ThrowIfNullOrEmpty(outputFolder); ArgumentException.ThrowIfNullOrEmpty(installerFilename); ArgumentNullException.ThrowIfNull(cancellationToken); - +#endif await DownloadToolIfNeeded(cancellationToken); LogCreatePackage(inputFolder, outputFolder); diff --git a/src/WingetIntune/Models/IntuneApp.cs b/src/WingetIntune/Models/IntuneApp.cs index 5a1f3b8..4cb0296 100644 --- a/src/WingetIntune/Models/IntuneApp.cs +++ b/src/WingetIntune/Models/IntuneApp.cs @@ -4,22 +4,22 @@ public class IntuneApp /// /// Package ID from the winget manifest /// - public required string PackageId { get; set; } + public string PackageId { get; set; } /// /// Display name of the app /// - public required string Name { get; set; } + public string Name { get; set; } /// /// Current version of the app /// - public required string CurrentVersion { get; set; } + public string CurrentVersion { get; set; } /// /// Graph ID of the app /// - public required string GraphId { get; set; } + public string GraphId { get; set; } /// /// The total number of apps this app is directly or indirectly superseded by. diff --git a/src/WingetIntune/WingetIntune.csproj b/src/WingetIntune/WingetIntune.csproj index a42a66c..ef3d12a 100644 --- a/src/WingetIntune/WingetIntune.csproj +++ b/src/WingetIntune/WingetIntune.csproj @@ -1,6 +1,6 @@  - net8.0 + net8.0;net6.0 enable enable true diff --git a/src/WingetIntune/packages.lock.json b/src/WingetIntune/packages.lock.json index 2d6229b..d554c18 100644 --- a/src/WingetIntune/packages.lock.json +++ b/src/WingetIntune/packages.lock.json @@ -1,6 +1,517 @@ { "version": 1, "dependencies": { + "net6.0": { + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" + }, + "Microsoft.CSharp": { + "type": "Direct", + "requested": "[4.7.0, )", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.Extensions.Http": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "cWz4caHwvx0emoYe7NkHPxII/KkTI8R/LC9qdqJqnKv2poTJ4e2qqPGQqvRoQ5kaSA4FU5IV3qFAuLuOhoqULQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Direct", + "requested": "[8.0.1, )", + "resolved": "8.0.1", + "contentHash": "RIFgaqoaINxkM2KTOw72dmilDmTrYA0ns2KW4lDz4gZ2+o6IQ894CzmdL3StM2oh7QQq44nCWiqKqc4qUI9Jmg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.1" + } + }, + "Microsoft.Extensions.Options": { + "type": "Direct", + "requested": "[8.0.2, )", + "resolved": "8.0.2", + "contentHash": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Graph.Beta": { + "type": "Direct", + "requested": "[5.59.0-preview, )", + "resolved": "5.59.0-preview", + "contentHash": "Qx/vwDlDWSpeWQme0E/xByA48/5EjyZ8L4S6Arb/LPuaZv/bNcciefo9s/LUHXfC9Ep9cOck+HdseZBAJd7/tg==", + "dependencies": { + "Microsoft.Graph.Core": "3.1.3" + } + }, + "Microsoft.Identity.Client.Broker": { + "type": "Direct", + "requested": "[4.60.3, )", + "resolved": "4.60.3", + "contentHash": "ki+l9Jxp5ift/c5iHS6LC0Y+MEZ7cPzC91l1Aj4tgzV6VzvF7/qO4vclFWQsB4MiA0KUMybkSOAZEuRahrHGlQ==", + "dependencies": { + "Microsoft.Identity.Client": "4.60.3", + "Microsoft.Identity.Client.NativeInterop": "0.16.0" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Direct", + "requested": "[4.60.3, )", + "resolved": "4.60.3", + "contentHash": "X1Cz14/RbmlLshusE5u2zfG+5ul6ttgou19BZe5Mdw1qm6fgOI9/imBB2TIsx2UD7nkgd2+MCSzhbukZf7udeg==", + "dependencies": { + "Microsoft.Identity.Client": "4.60.3", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Riok.Mapperly": { + "type": "Direct", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "ECFSdemqIN7HoCu8lOtGYW15fYK5XgSg9tpaspdevi4rj6Z4KomMQz6bKID1L5WMHxjyexix250wP5eAF0iKNw==" + }, + "SvRooij.ContentPrep": { + "type": "Direct", + "requested": "[0.1.3-alpha0001, )", + "resolved": "0.1.3-alpha0001", + "contentHash": "9exebiAiEz1cn5XKxivypRmpG0t0ykSFrenU8GtwYzv3JrIlkXT6WdntsVYr181ebWhdAWOU4cjR5IgMjDqQMg==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "7.0.1", + "Microsoft.NETCore.Platforms": "7.0.4", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.IdentityModel.Tokens.Jwt": { + "type": "Direct", + "requested": "[7.5.1, )", + "resolved": "7.5.1", + "contentHash": "UUw+E0R73lZLlXgneYIJQxNs1kfbcxjVzw64JQyiwjqCd4HMpAbjn+xRo86QZT84uHq8/MkqvfH82tgjgPzpuw==", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "7.5.1", + "Microsoft.IdentityModel.Tokens": "7.5.1" + } + }, + "Azure.Core": { + "type": "Transitive", + "resolved": "1.36.0", + "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "System.Diagnostics.DiagnosticSource": "6.0.1", + "System.Memory.Data": "1.0.2", + "System.Numerics.Vectors": "4.5.0", + "System.Text.Encodings.Web": "4.7.2", + "System.Text.Json": "4.7.2", + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "8.0.1", + "contentHash": "fGLiCRLMYd00JYpClraLjJTNKLmMJPnqxMaiRzEBIIvevlzxz33mXy39Lkd48hu1G+N21S7QpaO5ZzKsI6FRuA==" + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "Microsoft.Graph.Core": { + "type": "Transitive", + "resolved": "3.1.3", + "contentHash": "sysGvd+1vggJKIc5kfiDuwpMlJJaTwIK+uYA2MEo3PJp3asP8G2U+W0NFQvxANLUDipLTd2zofCbfRCVUjA4Ag==", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.0.3", + "Microsoft.Kiota.Abstractions": "1.7.2", + "Microsoft.Kiota.Authentication.Azure": "1.1.2", + "Microsoft.Kiota.Http.HttpClientLibrary": "1.3.3", + "Microsoft.Kiota.Serialization.Form": "1.1.1", + "Microsoft.Kiota.Serialization.Json": "1.1.2", + "Microsoft.Kiota.Serialization.Multipart": "1.1.1", + "Microsoft.Kiota.Serialization.Text": "1.1.1", + "NETStandard.Library": "2.0.3", + "System.Security.Claims": "4.3.0" + } + }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.60.3", + "contentHash": "jve1RzmSpBhGlqMzPva6VfRbLMLZZc1Q8WRVZf8+iEruQkBgDTJPq8OeTehcY4GGYG1j6UB1xVofVE+n4BLDdw==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "6.35.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.NativeInterop": { + "type": "Transitive", + "resolved": "0.16.0", + "contentHash": "riaIH9tT4kRG4xKFxx+wpuo+VAZVOr1ElbNubcvpFXb82gjEmZtJRzpdiS4tdRYTVh6CUKNz9AINAptActTtBQ==" + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "7.5.1", + "contentHash": "PT16ZFbPIiMsYv07oy3zOjqUOJ7xutGBkJTOX0+IbNyU6+O6X7aIxjq9EaSSRLWbekRgamgtmfg8Xjw6A6Ua9g==" + }, + "Microsoft.IdentityModel.JsonWebTokens": { + "type": "Transitive", + "resolved": "7.5.1", + "contentHash": "93CGSa8RPdZU8zfvA3nf9NGKUqEnQrE12VzYlMqKh72ddhzusosqLNEUgH/YhFWBLRFOnY1RCgHMV7pR+sAx2w==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "7.5.1" + } + }, + "Microsoft.IdentityModel.Logging": { + "type": "Transitive", + "resolved": "7.5.1", + "contentHash": "PnpAQX20BAiDIPYmWUyQSlEaWD8BLXzHpiDGTCT568Cs0ReOeyzNe401LzCeiv6ilug/KefVeV1CeqtCHTo8dw==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "7.5.1" + } + }, + "Microsoft.IdentityModel.Protocols": { + "type": "Transitive", + "resolved": "7.0.3", + "contentHash": "BtwR+tctBYhPNygyZmt1Rnw74GFrJteW+1zcdIgyvBCjkek6cNwPPqRfdhzCv61i+lwyNomRi8+iI4QKd4YCKA==", + "dependencies": { + "Microsoft.IdentityModel.Logging": "7.0.3", + "Microsoft.IdentityModel.Tokens": "7.0.3" + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect": { + "type": "Transitive", + "resolved": "7.0.3", + "contentHash": "W97TraHApDNArLwpPcXfD+FZH7njJsfEwZE9y9BoofeXMS8H0LBBobz0VOmYmMK4mLdOKxzN7SFT3Ekg0FWI3Q==", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "7.0.3", + "System.IdentityModel.Tokens.Jwt": "7.0.3" + } + }, + "Microsoft.IdentityModel.Tokens": { + "type": "Transitive", + "resolved": "7.5.1", + "contentHash": "Q3DKpyFViP84IUlTFKH/zIkswIrmSh2Vd/eFDo4wlOHy4DYxoweZEEw4kDEiKt9VCX6o7SddK3HK2xDYyFpexA==", + "dependencies": { + "Microsoft.IdentityModel.Logging": "7.5.1" + } + }, + "Microsoft.Kiota.Abstractions": { + "type": "Transitive", + "resolved": "1.7.2", + "contentHash": "7ZxIrX23NZXqmYZyUCmjtDYnY6Wc9pkKWsItIxxSQ5Obea4xqX0AGRInxP8tsV5Z5t67RkVcM1O2zATRDJh1fA==", + "dependencies": { + "Std.UriTemplate": "0.0.46", + "System.Diagnostics.DiagnosticSource": "[6.0.0, 9.0.0)" + } + }, + "Microsoft.Kiota.Authentication.Azure": { + "type": "Transitive", + "resolved": "1.1.2", + "contentHash": "Dzc6h9pSHKCJPjJ4RnEs2liL4vVO/O7Oh8XolMHB7c+4/bkdvOdWS9UYz5uMtP4Q+zgnUF3KO/0WvJSA4nbiNw==", + "dependencies": { + "Azure.Core": "1.36.0", + "Microsoft.Kiota.Abstractions": "1.7.2", + "System.Diagnostics.DiagnosticSource": "[6.0.1, 9.0.0)" + } + }, + "Microsoft.Kiota.Http.HttpClientLibrary": { + "type": "Transitive", + "resolved": "1.3.3", + "contentHash": "X+rkl///PgQawQyQGNtZHoY2rhcOc6BngOwK75098HUViJr1IuLc06k5Rq2eRPN0rdngWWyHwM5wC/96V04geQ==", + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.7.2", + "System.Diagnostics.DiagnosticSource": "[6.0.0, 9.0.0)", + "System.Text.Json": "[6.0.0, 9.0.0)" + } + }, + "Microsoft.Kiota.Serialization.Form": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "/j0B30rmLUoan6ckekHmPe6H0xJ3nCkn5RfgFfJkDnJiLO15N57+NTDgjGPbdwqRafQGyvJUmuON2APVZIdQhA==", + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.7.2" + } + }, + "Microsoft.Kiota.Serialization.Json": { + "type": "Transitive", + "resolved": "1.1.2", + "contentHash": "n421mk9agwBeHhAkeQIwRc3bjRE4oEPM1/CTxuiUZkd8ni4PN0Tabp3PPCjsuNmqcZXLleUh2nG/JBCoRizdzA==", + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.7.2", + "System.Text.Json": "[6.0.0, 9.0.0)" + } + }, + "Microsoft.Kiota.Serialization.Multipart": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "+31xiVWveV9/8qGlm+STiwVVN74tpwJvXq2Q2MZGDQCWZ1j+aDr4y5auOw0l1yr2nD+1jjyjU239101Pu6ECgw==", + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.7.2" + } + }, + "Microsoft.Kiota.Serialization.Text": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "6iA04gp7BhbgkLjKJ9wq+/87zI5DROSkakQ5cenlUKMUySTHkleLI7f0r57BNHi+sCtQu5Am3+h40G85yJwhug==", + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.7.2" + } + }, + "Microsoft.NETCore.Platforms": { + "type": "Transitive", + "resolved": "7.0.4", + "contentHash": "yLEHlNN7O5WiND89r42sepgVwy5W/ZoTiFEdJDV7MHR1lW02LL7Nipz2TD5qM/Kx9W3/k3NP+PAP2qUdOm+leg==" + }, + "Microsoft.NETCore.Targets": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" + }, + "NETStandard.Library": { + "type": "Transitive", + "resolved": "2.0.3", + "contentHash": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, + "Std.UriTemplate": { + "type": "Transitive", + "resolved": "0.0.46", + "contentHash": "/cCCMsB3i+MVt5LTbl236dnFd/BE4dKzzzC1teGTpAHzwPTiLIuD5hioGgtPuli/enAj8Dhmt/e9JlVUIITIgQ==" + }, + "System.Collections": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.DiagnosticSource": { + "type": "Transitive", + "resolved": "6.0.1", + "contentHash": "KiLYDu2k2J82Q9BJpWiuQqCkFjRBWVq4jDzKKWawVi9KWzyD0XG3cmfX0vqTQlL14Wi9EufJrbL0+KCLTbqWiQ==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Globalization": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.IO": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Memory.Data": { + "type": "Transitive", + "resolved": "1.0.2", + "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", + "dependencies": { + "System.Text.Encodings.Web": "4.7.2", + "System.Text.Json": "4.6.0" + } + }, + "System.Numerics.Vectors": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" + }, + "System.Reflection": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Resources.ResourceManager": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" + }, + "System.Runtime.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Security.Claims": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "P/+BR/2lnc4PNDHt/TPBAWHVMLMRHsyYZbU1NphW4HIWzCggz8mJbTQQ3MKljFE7LS3WagmVFuBgoLcFzYXlkA==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Security.Principal": "4.3.0" + } + }, + "System.Security.Cryptography.ProtectedData": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" + }, + "System.Security.Principal": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "I1tkfQlAoMM2URscUtpcRo/hX0jinXx6a/KUtEQoz3owaYwl3qwsO8cbzYVVnjxrzxjHo3nJC+62uolgeGIS9A==", + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "6.0.0" + } + }, + "System.Threading.Tasks": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Threading.Tasks.Extensions": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + }, + "YamlDotNet": { + "type": "Transitive", + "resolved": "13.7.1", + "contentHash": "X4m1PnFcJwvAj1sCDMntg/eZcX96CJLrWMiYnq41KqhFVZPuw63ZTSxIGqgdCwHWHvCAyTxheELC/VDf1HsU2A==" + }, + "winget.communityrepository": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[8.0.1, )", + "YamlDotNet": "[13.7.1, )" + } + } + }, "net8.0": { "Microsoft.Bcl.AsyncInterfaces": { "type": "Direct", diff --git a/tests/WinTuner.Cmdlets.Tests/Deploy-WtMsStoreApp.Tests.ps1 b/tests/WinTuner.Cmdlets.Tests/Deploy-WtMsStoreApp.Tests.ps1 new file mode 100644 index 0000000..63cf309 --- /dev/null +++ b/tests/WinTuner.Cmdlets.Tests/Deploy-WtMsStoreApp.Tests.ps1 @@ -0,0 +1,7 @@ + +Describe 'Deploy-WtMsStoreApp' { + It 'Should be available' { + $cmdlet = Get-Command -Name 'Deploy-WtMsStoreApp' + $cmdlet.CommandType | Should -Be 'Cmdlet' + } +} \ No newline at end of file diff --git a/tests/WinTuner.Cmdlets.Tests/Deploy-WtWin32App.Tests.ps1 b/tests/WinTuner.Cmdlets.Tests/Deploy-WtWin32App.Tests.ps1 new file mode 100644 index 0000000..4e08b8e --- /dev/null +++ b/tests/WinTuner.Cmdlets.Tests/Deploy-WtWin32App.Tests.ps1 @@ -0,0 +1,7 @@ + +Describe 'Deploy-WtWin32App' { + It 'Should be available' { + $cmdlet = Get-Command -Name 'Deploy-WtWin32App' + $cmdlet.CommandType | Should -Be 'Cmdlet' + } +} \ No newline at end of file diff --git a/tests/WinTuner.Cmdlets.Tests/Get-WtWin32Apps.Tests.ps1 b/tests/WinTuner.Cmdlets.Tests/Get-WtWin32Apps.Tests.ps1 new file mode 100644 index 0000000..e21abdb --- /dev/null +++ b/tests/WinTuner.Cmdlets.Tests/Get-WtWin32Apps.Tests.ps1 @@ -0,0 +1,7 @@ + +Describe 'Get-WtWin32Appsp' { + It 'Should be available' { + $cmdlet = Get-Command -Name 'Get-WtWin32Apps' + $cmdlet.CommandType | Should -Be 'Cmdlet' + } +} \ No newline at end of file diff --git a/tests/WinTuner.Cmdlets.Tests/New-IntuneWinPackage.Tests.ps1 b/tests/WinTuner.Cmdlets.Tests/New-IntuneWinPackage.Tests.ps1 new file mode 100644 index 0000000..68f2899 --- /dev/null +++ b/tests/WinTuner.Cmdlets.Tests/New-IntuneWinPackage.Tests.ps1 @@ -0,0 +1,7 @@ + +Describe 'New-IntuneWinPackage' { + It 'Should be available' { + $cmdlet = Get-Command -Name 'New-IntuneWinPackage' + $cmdlet.CommandType | Should -Be 'Cmdlet' + } +} \ No newline at end of file diff --git a/tests/WinTuner.Cmdlets.Tests/NewWtWingetPackage.Tests.ps1 b/tests/WinTuner.Cmdlets.Tests/NewWtWingetPackage.Tests.ps1 new file mode 100644 index 0000000..f7d8aa7 --- /dev/null +++ b/tests/WinTuner.Cmdlets.Tests/NewWtWingetPackage.Tests.ps1 @@ -0,0 +1,10 @@ +BeforeAll { + Import-Module ./dist/WinTuner/WinTuner.psd1 +} + +Describe 'New-WtWingetPackage' { + It 'Should be available' { + $cmdlet = Get-Command -Name 'New-WtWingetPackage' + $cmdlet.CommandType | Should -Be 'Cmdlet' + } +} \ No newline at end of file diff --git a/tests/WinTuner.Cmdlets.Tests/RemoveWtWin32App.Tests.ps1 b/tests/WinTuner.Cmdlets.Tests/RemoveWtWin32App.Tests.ps1 new file mode 100644 index 0000000..08f9705 --- /dev/null +++ b/tests/WinTuner.Cmdlets.Tests/RemoveWtWin32App.Tests.ps1 @@ -0,0 +1,8 @@ + + +Describe 'Remove-WtWin32App' { + It 'Should be available' { + $cmdlet = Get-Command -Name 'Remove-WtWin32App' + $cmdlet.CommandType | Should -Be 'Cmdlet' + } +} \ No newline at end of file diff --git a/tests/WinTuner.Cmdlets.Tests/Unprotect-IntuneWinPackage.Tests.ps1 b/tests/WinTuner.Cmdlets.Tests/Unprotect-IntuneWinPackage.Tests.ps1 new file mode 100644 index 0000000..a0e6ffc --- /dev/null +++ b/tests/WinTuner.Cmdlets.Tests/Unprotect-IntuneWinPackage.Tests.ps1 @@ -0,0 +1,6 @@ +Describe 'Unprotect-IntuneWinPackage' { + It 'Should be available' { + $cmdlet = Get-Command -Name 'Unprotect-IntuneWinPackage' + $cmdlet.CommandType | Should -Be 'Cmdlet' + } +} \ No newline at end of file diff --git a/tests/WinTuner.Cmdlets.Tests/Update-WtIntuneApp.Tests.ps1 b/tests/WinTuner.Cmdlets.Tests/Update-WtIntuneApp.Tests.ps1 new file mode 100644 index 0000000..630bb4e --- /dev/null +++ b/tests/WinTuner.Cmdlets.Tests/Update-WtIntuneApp.Tests.ps1 @@ -0,0 +1,7 @@ + +Describe 'Update-WtIntuneApp' { + It 'Should be available' { + $cmdlet = Get-Command -Name 'Update-WtIntuneApp' + $cmdlet.CommandType | Should -Be 'Cmdlet' + } +} \ No newline at end of file diff --git a/tests/WinTuner.Cmdlets.Tests/WinTuner.Tests.ps1 b/tests/WinTuner.Cmdlets.Tests/WinTuner.Tests.ps1 new file mode 100644 index 0000000..ed0d448 --- /dev/null +++ b/tests/WinTuner.Cmdlets.Tests/WinTuner.Tests.ps1 @@ -0,0 +1,23 @@ +# BeforeAll { +# Import-Module WinTuner -Force + +# } + +BeforeDiscovery { + $commands = Get-Command -Module WinTuner | Select-Object -ExpandProperty Name +} + +Describe "WinTuner Module tests" { + + It "should have at least 8 commands" { + Get-Command -Module WinTuner | Should -HaveCount 8 + } + + Context "Command <_>" -ForEach $commands { + It "should have a help URI" { + $command = Get-Command -Name $_ + $command.HelpUri | Should -Not -BeNullOrEmpty + } + } + +} \ No newline at end of file diff --git a/tests/WinTuner.Cmdlets.Tests/run.ps1 b/tests/WinTuner.Cmdlets.Tests/run.ps1 new file mode 100644 index 0000000..7883678 --- /dev/null +++ b/tests/WinTuner.Cmdlets.Tests/run.ps1 @@ -0,0 +1,22 @@ +$pesterConfig = [PesterConfiguration]@{ + Output = @{ + Verbosity = "Normal" + CIFormat = "Auto" + StackTraceVerbosity = "FirstLine" + } + OutputFormat = "NUnitXML" + TestResult = @{ + Enabled = $true + OutputPath = "TestResults.xml" + OutputFormat = "JUnitXml" + } + Run = @{ + Path = "./tests/WinTuner.Cmdlets.Tests" + Exit = $true + } + Should = @{ + ErrorAction = "Continue" + } +} + +Invoke-Pester -Configuration $pesterConfig \ No newline at end of file