Skip to content

Commit 58d9155

Browse files
committed
Adjusted wording for variables and display messages. Added a loading screen for initial fetch of modules
1 parent 682a35b commit 58d9155

2 files changed

Lines changed: 41 additions & 27 deletions

File tree

ModuleExplorer/ModuleExplorer.psd1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
RootModule = 'ModuleExplorer.psm1'
1313

1414
# Version number of this module.
15-
ModuleVersion = '0.1.4'
15+
ModuleVersion = '0.1.5'
1616

1717
# Supported PSEditions
1818
CompatiblePSEditions = 'Core'

ModuleExplorer/functions/Show-ModuleExplorer.ps1

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,6 @@ Launches the Module Explorer and filters the initial list to show only modules
3838
named "BurnToast".
3939
4040
.NOTES
41-
This function depends on several cmdlets from a PowerShell module providing Spectre.Console integration
42-
(e.g., Write-SpectreFigletText, Read-SpectreSelection, Write-SpectreHost, Write-SpectreRule, Read-SpectrePause, Get-SpectreEscapedText)
43-
for its user interface. Ensure this module and its dependencies are installed and available.
44-
4541
Upon selecting a module, this function calls `Show-ModuleCommandViewer` to display
4642
the commands within that module.
4743
@@ -57,7 +53,8 @@ This function does not accept input from the pipeline.
5753
5854
.OUTPUTS
5955
None
60-
This function does not return any objects to the pipeline. It provides an interactive display in the console.
56+
This function does not return any objects to the pipeline.
57+
It provides an interactive display in the console.
6158
6259
.LINK
6360
None
@@ -71,42 +68,52 @@ function Show-ModuleExplorer {
7168
try {
7269
$moduleLookup = @{} # Initialize hashtable to map display names to module objects
7370
$minModulesForCategory = 10
71+
$hideGroupedModules = $false
7472

7573
while ($true) {
7674
Clear-Host
7775
Write-SpectreFigletText -Text "Module Explorer" -Alignment "Center"
76+
7877
$moduleQuery = @{ ListAvailable = $true }
7978
if ($Filter) {
8079
$moduleQuery.Name = $Filter
8180
}
82-
$availableModules = Get-Module @moduleQuery | Select-Object Name, Version, Path, ModuleBase, RootModule, @{Name = 'Prefix'; Expression = { ($_.Name -split '\.')[0] } } | Sort-Object Name
83-
$categories = $availableModules | Group-object Prefix | Where-object Count -ge $minModulesForCategory
8481

85-
if ($hideBigModules) {
82+
Invoke-SpectreCommandWithStatus -ScriptBlock { $availableModules = Get-Module @moduleQuery |
83+
Select-Object Name, Version, Path, ModuleBase, RootModule,
84+
@{Name = 'Prefix'; Expression = { ($_.Name -split '\.')[0] } } |
85+
Sort-Object Name
86+
$availableModules | Out-Null
87+
} -Title "Loading PowerShell Modules..." -Spinner "Shark"
88+
89+
$categories = $availableModules |
90+
Group-object Prefix |
91+
Where-object Count -ge $minModulesForCategory
92+
93+
$exitChoiceString = "[mediumpurple3_1]<-- Exit[/]"
94+
$refreshChoiceString = "[steelblue1_1]Refresh List[/]"
95+
96+
if ($hideGroupedModules) {
8697
$availableModules = $availableModules |
8798
Where-Object { $_.Prefix -notin $categories.Name } |
8899
Sort-Object Name
100+
$groupedModulesChoiceString = "[grey]Show Grouped Modules[/]"
101+
} else {
102+
$groupedModulesChoiceString = "[grey]Hide Grouped Modules[/]"
89103
}
90104

91-
92105
if (-not $availableModules) {
93106
Write-SpectreHost "[bold red]No PowerShell modules found.[/]"
94107
Read-SpectrePause -Message "[grey]Press Enter to continue...[/]" -NoNewline
95108
return
96109
}
97110

98-
$exitChoiceString = "[cyan]<-- Exit[/]"
99-
$refreshChoiceString = "[cyan]Refresh List[/]"
100-
$hideGroupedModulesString = "[grey]Toggle Grouped Modules[/]"
101111
# Reset the main loop if modules changes (install/remove)
102112
$moduleLookup.Clear()
103-
$moduleChoices = @($exitChoiceString, $refreshChoiceString, $hideGroupedModulesString)
104-
113+
$moduleChoices = @($exitChoiceString, $refreshChoiceString, $groupedModulesChoiceString)
105114
$processedDisplayNames = @{}
106115

107116
foreach ($module in $availableModules) {
108-
109-
110117
$versionString = if ($module.Version) { "v$($module.Version)" } else { "Version N/A" }
111118
$displayName = "$($module.Name) ($versionString)"
112119

@@ -118,9 +125,15 @@ function Show-ModuleExplorer {
118125
}
119126

120127
$promptTitle = "[yellow bold]Select a PowerShell Module to Explore (or Exit):[/]"
121-
Write-SpectreRule -Title "[grey] Installed Modules: $($availableModules.Count) [/]" -Alignment Center
122-
$selectedModuleDisplay = Read-SpectreSelection -Message $promptTitle -PageSize 15 -Choices $moduleChoices -EnableSearch
128+
Write-SpectreRule -Title "[grey]Available Modules: $($availableModules.Count) [/]" -Alignment Center
129+
$spectreSelectionQuery = @{
130+
Message = $promptTitle;
131+
PageSize = 15;
132+
Choices = $moduleChoices;
133+
EnableSearch = $true
134+
}
123135

136+
$selectedModuleDisplay = Read-SpectreSelection @spectreSelectionQuery
124137

125138
if (-not $selectedModuleDisplay -or $selectedModuleDisplay -eq $exitChoiceString) {
126139
Write-SpectreHost "[yellow]Exiting Module Explorer.[/]"
@@ -132,36 +145,37 @@ function Show-ModuleExplorer {
132145
continue
133146
}
134147

135-
if ($selectedModuleDisplay -eq $hideGroupedModulesString) {
148+
if ($selectedModuleDisplay -eq $groupedModulesChoiceString) {
136149
Write-SpectreHost "[italic green]Toggling the large modules...[/]"
137-
if ($hideBigModules -eq $true) {
150+
if ($hideGroupedModules -eq $true) {
138151
Write-SpectreHost "[italic green]Showing the large modules...[/]"
139-
$hideBigModules = $false
152+
$hideGroupedModules = $false
140153
}
141154
else {
142-
$hideBigModules = $true
155+
$hideGroupedModules = $true
143156
Write-SpectreHost "[italic green]Hiding the large modules...[/]"
144157
}
145158
continue
146159
}
147-
160+
148161
# Use the lookup table
149162
$selectedModuleObject = $moduleLookup[$selectedModuleDisplay]
150163

151164
if (-not $selectedModuleObject) {
152165
# This condition should not be met if $selectedModuleDisplay is from $moduleChoices
153-
Write-SpectreHost "[bold red]Error: Could not retrieve details for selected module: '$($selectedModuleDisplay | Get-SpectreEscapedText)'. This is unexpected.[/]"
166+
Write-SpectreHost "[bold red]Error: Could not retrieve details for selected module: '
167+
$($selectedModuleDisplay | Get-SpectreEscapedText)'. This is unexpected.[/]"
154168
Read-SpectrePause -Message "[grey]Press Enter to continue...[/]" -NoNewline
155169
continue
156170
}
157171

158172
Clear-Host
159173
Show-ModuleCommandViewer -SelectedModule $selectedModuleObject
160-
161174
} # End of main loop
162175
}
163176
catch {
164-
Write-SpectreHost "[bold red]An unexpected error occurred in Module Explorer: $($_.Exception.ToString() | Get-SpectreEscapedText)[/]"
177+
Write-SpectreHost "[bold red]An unexpected error occurred in Module Explorer:
178+
$($_.Exception.ToString() | Get-SpectreEscapedText)[/]"
165179
Read-SpectrePause -Message "[grey]Press Enter to acknowledge error and exit...[/]" -NoNewline
166180
}
167181
finally {

0 commit comments

Comments
 (0)