using System.Management.Automation; using NozCli.Core.Client; namespace Noz.PowerShell.Cmdlets; [Cmdlet(VerbsCommon.Rename, "NozNote", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)] [OutputType(typeof(NozNote))] public sealed class RenameNozNoteCmdlet : NozCmdletBase { [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] public string Slug { get; set; } = ""; [Parameter(Mandatory = true, Position = 1)] public string NewSlug { get; set; } = ""; [Parameter] public SwitchParameter PassThru { get; set; } protected override void ProcessRecord() { if (Slug == NewSlug) { WriteWarning("Quelle und Ziel sind identisch — nichts zu tun."); return; } if (!ShouldProcess(Slug, $"Rename-NozNote → {NewSlug}")) return; var steps = new List(); var result = Run(NoteRenamer.ExecuteAsync( Api, Slug, NewSlug, onProgress: msg => WriteVerbose(msg))); WriteVerbose($"Fertig: {result.LinksUpdated} Link(s) aktualisiert."); if (result.LinksUpdated > 0) { foreach (var updated in result.UpdatedNotes) WriteVerbose($" • {updated}"); } if (PassThru) { var notes = Run(Api.GetNotesAsync()); var renamed = notes.Find(n => n.Slug == NewSlug); if (renamed is not null) WriteObject(NozNote.From(renamed)); } } }