using NozCli.Rendering; using NozCli.Repl; using Spectre.Console; namespace NozCli.Commands; public class CatCommand : ICommand { public string Name => "cat"; public string Description => "Print a note — rendered by default, --raw for plain markdown"; public string Usage => "cat [--raw] "; public async Task ExecuteAsync(string[] args, ReplContext ctx, CancellationToken ct = default) { var raw = args.Contains("--raw") || args.Contains("-r"); var slug = args.FirstOrDefault(a => !a.StartsWith('-')); if (slug is null) { AnsiConsole.MarkupLine("[red]Usage: cat [--raw] [/]"); return; } slug = ctx.ResolveSlug(slug); Core.Models.NoteContent note = default!; await AnsiConsole.Status().StartAsync("Fetching…", async _ => note = await ctx.Api.GetNoteAsync(slug, ct)); if (raw) AnsiConsole.WriteLine(note.Markdown); else MarkdownRenderer.Render(note.Markdown); } }