Certificate expiry report
Review certificate renewal deadlines, named owners and practical next actions in one concise report.
- Static
- 100×30
- 28 lines
Show-ConsoleDemo certificate-expirydotnet new consolemonster --demo certificate-expiryShow storage pressure with threshold bars, a folder breakdown and a clear summary of remaining capacity.
Demos Reports
Use it when a storage report should explain both capacity pressure and where the space went.
── Storage review · capacity planning ────────────────────────────────────────────────────────────── ╭─ Used / 100 GiB ──────────────────────────────╮ ╭─ Largest folders ──────────────────────────────╮ │ Workspace ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 62% │ │ ./ │ │ Cache ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 88% │ │ ├── ./workspace │ │ Artifacts ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 94% │ │ │ ├── src 12 GiB │ │ Archive ▆▆▆▆▆▆▆▆▆▆ 35% │ │ │ ├── packages 31 GiB │ │ │ │ │ └── fixtures 19 GiB │ │ │ │ ├── ./cache │ │ │ │ │ ├── dependencies 63 GiB │ │ │ │ │ └── downloads 25 GiB │ │ │ │ └── ./artifacts │ │ │ │ ├── current 18 GiB │ │ │ │ └── history 76 GiB │ ╰───────────────────────────────────────────────╯ ╰────────────────────────────────────────────────╯ ╭─ Next action ────────────────────────────────────────────────────────────────────────────────────╮ │ Artifacts is at 94%. Review the retention policy before the next build. │ │ Keep the current release; archive history older than 30 days. │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
The whole program in one file, with its sample data at the top. It drew the recording above; both languages draw the same cells.
# Turn a storage inventory into threshold bars and a directory breakdown.
param([switch] $StaticSnapshot, [ValidateRange(0, 0)][int] $Step = 0)
Import-Module ConsoleMonster
# Data: synthetic sizes in GiB and platform-neutral paths; no filesystem scan is performed.
$used = [ordered] @{ Workspace = 62; Cache = 88; Artifacts = 94; Archive = 35 }
$folders = [ordered] @{
'./workspace' = [ordered] @{ src = '12 GiB'; packages = '31 GiB'; fixtures = '19 GiB' }
'./cache' = [ordered] @{ dependencies = '63 GiB'; downloads = '25 GiB' }
'./artifacts' = [ordered] @{ current = '18 GiB'; history = '76 GiB' }
}
# Layout: bars answer where pressure is; the tree explains what occupies the space.
$report = New-ConsoleRows -Gap 1 {
New-ConsoleRule '[bold]Storage review[/] [muted]· capacity planning[/]'
New-ConsoleColumns {
New-ConsolePanel -Title 'Used / 100 GiB' {
New-ConsoleBarChart -Data $used -Maximum 100 -Unit '%' -Warning 80 -Critical 90
}
New-ConsolePanel -Title 'Largest folders' {
New-ConsoleTree -Title './' -Data $folders
}
}
New-ConsolePanel -Title 'Next action' {
'[warn]Artifacts is at 94%.[/] Review the retention policy before the next build.'
'[muted]Keep the current release; archive history older than 30 days.[/]'
}
}
# Behaviour: print once. Review recommendations before connecting any cleanup action.
$report | Write-ConsoleWidget
// Turn a storage inventory into threshold bars and a directory breakdown.
using ConsoleMonster;
using ConsoleMonster.Layout;
using ConsoleMonster.Widgets;
// Data: synthetic sizes in GiB and platform-neutral paths; no filesystem scan is performed.
var used = new[] { (Name: "Workspace", Percent: 62), (Name: "Cache", Percent: 88),
(Name: "Artifacts", Percent: 94), (Name: "Archive", Percent: 35) };
var folders = new[] {
(Path: "./workspace", Children: new[] { ("src", "12 GiB"), ("packages", "31 GiB"), ("fixtures", "19 GiB") }),
(Path: "./cache", Children: new[] { ("dependencies", "63 GiB"), ("downloads", "25 GiB") }),
(Path: "./artifacts", Children: new[] { ("current", "18 GiB"), ("history", "76 GiB") })
};
// Layout: bars answer where pressure is; the tree explains what occupies the space.
BarChart chart = new BarChart { Max = 100, Unit = "%", Warning = 80, Critical = 90 };
foreach (var volume in used) chart.Add(volume.Name, volume.Percent);
Tree tree = new Tree("./");
foreach (var folder in folders) {
TreeNode node = tree.Add(folder.Path);
foreach (var child in folder.Children) node.Add(child.Item1, null, child.Item2);
}
Rows report = new Rows(
new Rule("[bold]Storage review[/] [muted]· capacity planning[/]"),
new Columns(new Panel(chart, "Used / 100 GiB"), new Panel(tree, "Largest folders")),
new Panel(new Rows(
new TextBlock("[warn]Artifacts is at 94%.[/] Review the retention policy before the next build."),
new TextBlock("[muted]Keep the current release; archive history older than 30 days.[/]")), "Next action")) { Gap = 1 };
// Behaviour: print once. Review recommendations before connecting any cleanup action.
Terminal.Write(report);
Three steps in PowerShell, four in C#. Every command copies with one click.
Once. Windows PowerShell 5.1 or PowerShell 7 on Windows, macOS or Linux.
Install-Module ConsoleMonster -Scope CurrentUserDownload it, or copy it from above into disk-usage.ps1.
From the folder you saved it in.
./disk-usage.ps1A plain console app; .NET 8 or later.
dotnet new console -n Diskusage; cd DiskusageThe only package the program needs.
dotnet add package ConsoleMonsterDownload it, or copy the program from above.
dotnet runOr skip the copying. Every demo ships with the module and the project template.
Show-ConsoleDemo disk-usageGet-ConsoleDemo disk-usage -Path ./disk-usage.ps1dotnet new install ConsoleMonster.Templatesdotnet new consolemonster --demo disk-usage -n DiskusageStart with these, then read the rest of the file.
Replace the synthetic capacities and folder sizes with one collected inventory.
Choose warning and critical thresholds for your volumes.
Adjust the retention recommendation without attaching deletion to the report.
Review certificate renewal deadlines, named owners and practical next actions in one concise report.
Show-ConsoleDemo certificate-expirydotnet new consolemonster --demo certificate-expiryCombine a query summary, wrapped DNS records, a delegation tree, mail checks and resolver latency.
Show-ConsoleDemo querydotnet new consolemonster --demo queryFollow 332 checks across twelve targets, six workers, throughput, duration buckets and actionable findings.
Show-ConsoleDemo assessmentdotnet new consolemonster --demo assessment