noz-cli/NozCli/Commands/RmCommand.cs
2026-05-16 19:25:39 +02:00

28 lines
869 B
C#

using NozCli.Repl;
using Spectre.Console;
namespace NozCli.Commands;
public class RmCommand : ICommand
{
public string Name => "rm";
public string Description => "Delete a note from the server";
public string Usage => "rm <slug>";
public async Task ExecuteAsync(string[] args, ReplContext ctx)
{
var slug = args.FirstOrDefault();
if (slug is null) { AnsiConsole.MarkupLine("[red]Usage: rm <slug>[/]"); return; }
slug = ctx.ResolveSlug(slug);
if (!AnsiConsole.Confirm($"[red]Delete[/] {slug} from server?", defaultValue: false))
return;
await AnsiConsole.Status().StartAsync("Deleting…", async _ =>
await ctx.Api.DeleteNoteAsync(slug));
ctx.NoteCache.RemoveAll(n => n.Slug == slug);
AnsiConsole.MarkupLine($"[green]✓[/] {slug} deleted");
}
}