using System.Management.Automation; namespace Noz.PowerShell.Cmdlets; /// List notes from the noz server. /// /// Get-NozNote /// Get-NozNote -Topic psychologie /// Get-NozNote -Status seed -Lang de /// Get-NozNote | Group-Object Topic | Sort-Object Count -Descending /// Get-NozNote | Export-Csv ~/notes.csv /// [Cmdlet(VerbsCommon.Get, "NozNote")] [OutputType(typeof(NozNote))] public sealed class GetNozNoteCmdlet : NozCmdletBase { [Parameter(Position = 0)] public string? Topic { get; set; } [Parameter] [ValidateSet("seed", "budding", "evergreen")] public string? Status { get; set; } [Parameter] [ValidateSet("de", "en")] public string? Lang { get; set; } protected override void ProcessRecord() { var notes = Run(Api.GetNotesAsync()); var filtered = notes.AsEnumerable(); if (Topic is not null) filtered = filtered.Where(n => n.Topic == Topic); if (Status is not null) filtered = filtered.Where(n => n.Status == Status); if (Lang is not null) filtered = filtered.Where(n => n.Lang == Lang); foreach (var note in filtered.OrderBy(n => n.Slug)) WriteObject(NozNote.From(note)); } }