Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
63ff5a6
WIP: Builds but doesn't run
tig Nov 13, 2025
ab76e4a
WIP: Got it basically working.
tig Nov 13, 2025
8eccca8
WIP: Fixing bugs - -Filter is not working right
tig Nov 14, 2025
5795efa
Fixed Select All bug.
tig Nov 14, 2025
9af07aa
Code cleanup
tig Nov 14, 2025
4245236
WIP: Starting to get SOT working.
tig Nov 14, 2025
5fd9efd
Got SOT working + code cleanup
tig Nov 14, 2025
1052c39
Code modernization and cleanup.
tig Nov 14, 2025
9f4bc39
Refactor ConsoleGui to OutConsoleGridView
tig Nov 14, 2025
ee84e8a
Reverted cmdlet to ConsoleGridView
tig Nov 14, 2025
c22ca70
Massive OutConsoleGridView and ShowObjectTree refactor to prepare for…
tig Nov 14, 2025
b0cdb95
Enhance null checks, caching, and code readability
tig Nov 14, 2025
b8dbaa6
Refactor runspace creation in TypeGetter.cs
tig Nov 14, 2025
c5f7673
Refactor and enhance object formatting in OCGV
tig Nov 14, 2025
f8eec62
Refactor and enhance grid view rendering logic
tig Nov 15, 2025
aac40e6
Moved header into ListView's Padding.
tig Nov 15, 2025
f14ce81
WIP: Added -AllProperties option
tig Nov 15, 2025
71cca64
Better use of v2 tech + added -AllProperties
tig Nov 15, 2025
1432452
Ensure explicit List conversion for dataTableColumns
tig Nov 15, 2025
f23c77f
Update to .NET 10 and Terminal.Gui 2.0 API
tig Jan 12, 2026
8ee4bc1
updated to latest TG
tig Jan 16, 2026
55f693f
Merge branch 'terminal_gui_v2' of tig:tig/GraphicalTools into termina…
tig Jan 28, 2026
627ae55
Tons of fixes. Code cleanup. 99% working.
tig Jan 28, 2026
fa17dff
Update ListView API usage and improve marking logic
tig Mar 4, 2026
bbbc054
Refactor grid view data/layout; remove GridViewDetails
tig Mar 4, 2026
c1b9423
Remove duplicate property assignments in OutGridViewWindow
tig Mar 4, 2026
8d9816c
Realign build config with PowerShell team model
tig Mar 11, 2026
eeebd7e
Add local nuget.config override support for builds without Azure DevO…
tig Apr 8, 2026
a2afaec
Update Terminal.Gui to beta.149 and adapt to API changes
tig Apr 9, 2026
1123190
Merge branch 'terminal_gui_v2' of tig:tig/GraphicalTools into termina…
tig Apr 9, 2026
a9b8e93
Add xUnit test project with unit and integration tests
tig Apr 10, 2026
7e463b5
Fixed SHOT
tig Apr 10, 2026
5cc2652
Merge branch 'terminal_gui_v2' of tig:tig/GraphicalTools into termina…
tig Apr 10, 2026
b93f756
Fixes doc bugs
tig Apr 10, 2026
d85e9ed
Fixes README
tig Apr 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:

- name: Build and test
shell: pwsh
run: Invoke-Build -Configuration Release Build, Package
run: Invoke-Build -Configuration Release Build, Test, Package

- name: Upload module
if: always()
Expand Down
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,13 @@ bin/
obj/
publish/
*.sln
*.slnx

# IDE support (keep locally, don't track)
/.vs/
/.vscode/
*.user
*.suo
*.sln.DotSettings
Properties/launchSettings.json
nuget.local.config
25 changes: 16 additions & 9 deletions ConsoleGuiTools.build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,18 @@ task Build {

Push-Location src/Microsoft.PowerShell.ConsoleGuiTools
Invoke-BuildExec { & dotnet publish --configuration $Configuration --output publish }
$Assets = $(
"./publish/Microsoft.PowerShell.ConsoleGuiTools.dll",
"./publish/Microsoft.PowerShell.ConsoleGuiTools.psd1",
"./publish/Microsoft.PowerShell.OutGridView.Models.dll",
"./publish/Terminal.Gui.dll",
"./publish/NStack.dll")
$Assets | ForEach-Object {
Copy-Item -Force -Path $_ -Destination ../../module

# Copy all DLLs except PowerShell SDK dependencies (those are provided by PowerShell itself)
Get-ChildItem "./publish/*.dll" | Where-Object {
$_.Name -notlike "System.Management.Automation.dll" -and
$_.Name -notlike "Microsoft.PowerShell.Commands.Diagnostics.dll" -and
$_.Name -notlike "Microsoft.Management.Infrastructure.CimCmdlets.dll"
} | ForEach-Object {
Copy-Item -Force -Path $_.FullName -Destination ../../module
}

# Copy the module manifest
Copy-Item -Force -Path "./publish/Microsoft.PowerShell.ConsoleGuiTools.psd1" -Destination ../../module
Pop-Location

$Assets = $(
Expand All @@ -45,6 +48,10 @@ task Build {
New-ExternalHelp -Path docs/Microsoft.PowerShell.ConsoleGuiTools -OutputPath module/en-US -Force
}

task Test {
Invoke-BuildExec { & dotnet test --configuration $Configuration }
}

task Package {
New-Item -ItemType Directory -Force ./out | Out-Null
if (-Not (Get-PSResourceRepository -Name ConsoleGuiTools -ErrorAction SilentlyContinue)) {
Expand All @@ -53,4 +60,4 @@ task Package {
Publish-PSResource -Path ./module -Repository ConsoleGuiTools -Verbose
}

task . Clean, Build
task . Clean, Build, Test
3 changes: 3 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<!-- Use nuget.local.config if present (gitignored). Create it to override the
default nuget.config, e.g. to use nuget.org instead of the Azure DevOps feed. -->
<RestoreConfigFile Condition="Exists('$(MSBuildThisFileDirectory)nuget.local.config')">$(MSBuildThisFileDirectory)nuget.local.config</RestoreConfigFile>
</PropertyGroup>
</Project>
15 changes: 10 additions & 5 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
<Project>
<ItemGroup>
<PackageVersion Include="Microsoft.PowerShell.SDK" Version="7.4.7" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="Nstack.Core" Version="1.1.1" />
<PackageVersion Include="Terminal.Gui" Version="1.17.1" />
<PackageVersion Include="Microsoft.PowerShell.SDK" Version="7.5.4" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
<PackageVersion Include="System.Management.Automation" Version="7.5.4" />
<PackageVersion Include="Terminal.Gui" Version="2.0.0-beta.149" />
<!-- Test dependencies -->
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.1" />
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
</ItemGroup>
</Project>
</Project>
71 changes: 71 additions & 0 deletions GraphicalTools.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.PowerShell.ConsoleGuiTools", "src\Microsoft.PowerShell.ConsoleGuiTools\Microsoft.PowerShell.ConsoleGuiTools.csproj", "{DBAF2B0C-2E02-4698-A788-EB7EB6364404}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.PowerShell.OutGridView.Models", "src\Microsoft.PowerShell.OutGridView.Models\Microsoft.PowerShell.OutGridView.Models.csproj", "{233472F8-D472-4265-813B-B394013A2B60}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.PowerShell.ConsoleGuiTools.Tests", "test\Microsoft.PowerShell.ConsoleGuiTools.Tests\Microsoft.PowerShell.ConsoleGuiTools.Tests.csproj", "{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Debug|x64.ActiveCfg = Debug|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Debug|x64.Build.0 = Debug|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Debug|x86.ActiveCfg = Debug|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Debug|x86.Build.0 = Debug|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Release|Any CPU.Build.0 = Release|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Release|x64.ActiveCfg = Release|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Release|x64.Build.0 = Release|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Release|x86.ActiveCfg = Release|Any CPU
{DBAF2B0C-2E02-4698-A788-EB7EB6364404}.Release|x86.Build.0 = Release|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Debug|Any CPU.Build.0 = Debug|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Debug|x64.ActiveCfg = Debug|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Debug|x64.Build.0 = Debug|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Debug|x86.ActiveCfg = Debug|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Debug|x86.Build.0 = Debug|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Release|Any CPU.ActiveCfg = Release|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Release|Any CPU.Build.0 = Release|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Release|x64.ActiveCfg = Release|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Release|x64.Build.0 = Release|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Release|x86.ActiveCfg = Release|Any CPU
{233472F8-D472-4265-813B-B394013A2B60}.Release|x86.Build.0 = Release|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Debug|x64.ActiveCfg = Debug|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Debug|x64.Build.0 = Debug|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Debug|x86.ActiveCfg = Debug|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Debug|x86.Build.0 = Debug|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Release|Any CPU.Build.0 = Release|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Release|x64.ActiveCfg = Release|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Release|x64.Build.0 = Release|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Release|x86.ActiveCfg = Release|Any CPU
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{DBAF2B0C-2E02-4698-A788-EB7EB6364404} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
{233472F8-D472-4265-813B-B394013A2B60} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
{F1E2D3C4-B5A6-7890-ABCD-EF0987654321} = {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
EndGlobalSection
EndGlobal
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ Whatever was typed on the command line prior to hitting `F7` or `Shift-F7` will
### Example 8: Output processes to a tree view

```PowerShell
PS C:\> Get-Process | Show-ObjectTree
Get-Process | Show-ObjectTree
```

This command gets the processes running on the local computer and sends them to a tree view window.
Expand All @@ -131,9 +131,9 @@ Use right arrow when a row has a `+` symbol to expand the tree. Left arrow will

## Development

### 1. Install PowerShell 7.2+
### 1. Install PowerShell 7.6+

Install PowerShell 7.2+ with [these instructions](https://github.com/PowerShell/PowerShell#get-powershell).
Install PowerShell 7.6+ with [these instructions](https://github.com/PowerShell/PowerShell#get-powershell).

### 2. Clone the GitHub repository

Expand Down
24 changes: 11 additions & 13 deletions docs/Microsoft.PowerShell.ConsoleGuiTools/Out-ConsoleGridView.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@ Sends output to an interactive table in the same console window.

The **Out-ConsoleGridView** cmdlet sends the output from a command to a grid view window where the output is displayed in an interactive table.

You can use the following features of the table to examine your data:

- Quick Filter. Use the Filter box at the top of the window to search the text in the table. You can search for text in a particular column, search for literals, and search for multiple words. You can use the `-Filter` command to pre-populate the Filter box. The filter uses regular expressions.
Use the Filter box at the top of the window to search the text in the table. Search for text in a particular column, search for literals, and search for multiple words. Use the `-Filter` parameter to pre-populate the Filter box. The filter uses regular expressions.

For instructions for using these features, type `Get-Help Out-ConsoleGridView -Full` and see How to Use the Grid View Window Features in the Notes section.

Expand All @@ -38,16 +36,16 @@ To send items from the interactive window down the pipeline, click to select the
### Example 1: Output processes to a grid view

```PowerShell
PS C:\> Get-Process | Out-ConsoleGridView
Get-Process | Out-ConsoleGridView
```

This command gets the processes running on the local computer and sends them to a grid view window.

### Example 2: Use a variable to output processes to a grid view

```PowerShell
PS C:\> $P = Get-Process
PS C:\> $P | Out-ConsoleGridView -OutputMode Single
$P = Get-Process
$P | Out-ConsoleGridView -OutputMode Single
```

This command also gets the processes running on the local computer and sends them to a grid view window.
Expand All @@ -61,7 +59,7 @@ By specifying `-OutputMode Single` the grid view window will be restricted to a
### Example 3: Display a formatted table in a grid view

```PowerShell
PS C:\> Get-Process | Select-Object -Property Name, WorkingSet, PeakWorkingSet | Sort-Object -Property WorkingSet -Descending | Out-ConsoleGridView
Get-Process | Select-Object -Property Name, WorkingSet, PeakWorkingSet | Sort-Object -Property WorkingSet -Descending | Out-ConsoleGridView
```

This command displays a formatted table in a grid view window.
Expand All @@ -80,7 +78,7 @@ You can now use the features of the grid view to search, sort, and filter the da
### Example 4: Save output to a variable, and then output a grid view

```PowerShell
PS C:\> ($A = Get-ChildItem -Path $pshome -Recurse) | Out-ConsoleGridView
($A = Get-ChildItem -Path $pshome -Recurse) | Out-ConsoleGridView
```

This command saves its output in a variable and sends it to **Out-ConsoleGridView**.
Expand All @@ -96,7 +94,7 @@ As a result, the output from the Get-ChildItem command is saved in the $A variab
### Example 5: Output processes for a specified computer to a grid view

```PowerShell
PS C:\> Get-Process -ComputerName "Server01" | ocgv -Title "Processes - Server01"
Get-Process -ComputerName "Server01" | ocgv -Title "Processes - Server01"
```

This command displays the processes that are running on the Server01 computer in a grid view window.
Expand All @@ -106,17 +104,17 @@ The command uses `ocgv`, which is the built-in alias for the **Out-ConsoleGridVi
### Example 6: Define a function to kill processes using a graphical chooser

```PowerShell
PS C:\> function killp { Get-Process | Out-ConsoleGridView -OutputMode Single -Filter $args[0] | Stop-Process -Id {$_.Id} }
PS C:\> killp note
function killp { Get-Process | Out-ConsoleGridView -OutputMode Single -Filter $args[0] | Stop-Process -Id {$_.Id} }
killp note
```
This example shows defining a function named `killp` that shows a grid view of all running processes and allows the user to select one to kill it.

The example uses the `-Filter` paramter to filter for all proceses with a name that includes `note` (thus highlighting `Notepad` if it were running. Selecting an item in the grid view and pressing `ENTER` will kill that process.
The example uses the `-Filter` parameter to filter for all proceses with a name that includes `note` (thus highlighting `Notepad` if it were running. Selecting an item in the grid view and pressing `ENTER` will kill that process.

### Example 7: Pass multiple items through Out-ConsoleGridView

```PowerShell
PS C:\> Get-Process | Out-ConsoleGridView -PassThru | Export-Csv -Path .\ProcessLog.csv
Get-Process | Out-ConsoleGridView -PassThru | Export-Csv -Path .\ProcessLog.csv
```

This command lets you select multiple processes from the **Out-ConsoleGridView** window.
Expand Down
13 changes: 6 additions & 7 deletions docs/Microsoft.PowerShell.ConsoleGuiTools/Show-ObjectTree.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@ Show-ObjectTree [-InputObject <PSObject>] [-Title <string>] [-Filter <string>] [

The **Show-ObjectTree** cmdlet sends the output from a command to a tree view window where the output is displayed in an interactive tree.

You can use the following features of the tree to examine your data:

- Quick Filter. Use the Filter box at the top of the window to search the text in the tree. You can search for literals or multiple words. You can use the `-Filter` command to pre-populate the Filter box. The filter uses regular expressions.
Use the Filter box at the top of the window to search the text in the tree including literals or multiple words. Use the `-Filter` parameter to pre-populate the Filter box. The filter uses regular expressions.

For instructions for using these features, type `Get-Help Show-ObjectTree -Full` and see How to Use the Tree View Window Features in the Notes section.

Expand All @@ -35,20 +33,21 @@ For instructions for using these features, type `Get-Help Show-ObjectTree -Full`
### Example 1: Output processes to a tree view

```PowerShell
PS C:\> Get-Process | Show-ObjectTree
Get-Process | Show-ObjectTree
```

This command gets the processes running on the local computer and sends them to a tree view window.

### Example 2: Save output to a variable, and then output a tree view

```PowerShell
PS C:\> ($A = Get-ChildItem -Path $pshome -Recurse) | shot
($A = Get-ChildItem -Path $pshome -Recurse) | shot
```

This command saves its output in a variable and sends it to **Show-ObjectTree**.

The command uses the Get-ChildItem cmdlet to get the files in the Windows PowerShell installation directory and its subdirectories.

The path to the installation directory is saved in the $pshome automatic variable.

The command uses the assignment operator (=) to save the output in the $A variable and the pipeline operator (|) to send the output to **Show-ObjectTree**.
Expand Down Expand Up @@ -76,7 +75,7 @@ Accept wildcard characters: False
### -InputObject
Specifies that the cmdlet accepts input for **Show-ObjectTree**.

When you use the **InputObject** parameter to send a collection of objects to **Show-ObjectTree**, **Show-ObjectTree** treats the collection as one collection object, and it displays one row that represents the collection.
The **InputObject** parameter enables sending a collection of objects to **Show-ObjectTree**, **Show-ObjectTree** treats the collection as one collection object, and it displays one row that represents the collection.

To display the each object in the collection, use a pipeline operator (|) to send objects to **Show-ObjectTree**.

Expand Down Expand Up @@ -141,7 +140,7 @@ You can send any object to this cmdlet.

## NOTES

* The command output that you send to **Show-ObjectTree** should not be formatted, such as by using the Format-Table or Format-Wide cmdlets. To select properties, use the Select-Object cmdlet.
* The command output sent to **Show-ObjectTree** should not be formatted, such as by using the Format-Table or Format-Wide cmdlets. To select properties, use the Select-Object cmdlet.

* Deserialized output from remote commands might not be formatted correctly in the tree view window.

Expand Down
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"sdk": {
"version": "8.0.405",
"version": "10.0.101",
"rollForward": "latestFeature",
"allowPrerelease": false
}
Expand Down
10 changes: 10 additions & 0 deletions nuget.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,15 @@
<packageSources>
<clear />
<add key="PowerShellCore_PublicPackages" value="https://pkgs.dev.azure.com/powershell/PowerShell/_packaging/powershell/nuget/v3/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
<packageSourceMapping>
<packageSource key="nuget.org">
<package pattern="*" />
</packageSource>
<packageSource key="PowerShellCore_PublicPackages">
<package pattern="Microsoft.PowerShell.*" />
<package pattern="System.Management.Automation" />
</packageSource>
</packageSourceMapping>
</configuration>
Loading
Loading