📟 Вступ до Spectre.Console: Створення сучасних та елегантних інтерфейсів командного рядка 📦

pic

Фото Джейка Вокера на Unsplash

При розробці інструментів командного рядка (CLI) за допомогою .NET ми часто стикаємося з проблемами, пов'язаними з чітким і зручним поданням інформації. На щастя, Spectre.Console став потужним рішенням для спрощення створення інтерактивних, сучасних та візуально привабливих CLI.

У цій статті ми розглянемо основні можливості Spectre.Console, як він може покращити ваші інструменти командного рядка і як почати використовувати його у ваших .NET проектах.

Що таке Spectre.Console?

Spectre.Console — це бібліотека з відкритим кодом для .NET, яка дозволяє створювати надійні, інтерактивні та естетично привабливі інтерфейси командного рядка (CLI).
Це підтримує розширене рендеринг тексту, таблиці, індикатори прогресу, інтерактивні запити та багато іншого.

Розроблений з урахуванням гнучкості та зручності використання, Spectre.Console виділяється наступними можливостями:

  • Багатий інтерфейс: Підтримка таблиць, графіків та виділення.
  • Інтерактивність: Запити для введення даних та вибору опцій.
  • Індикатори прогресу: Для моніторингу тривалих завдань.
  • Структуровані команди: Модульна організація команд.

Ключові можливості Spectre.Console

1. Форматування тексту

Spectre.Console дозволяє здійснювати розширене форматування тексту, використовуючи стилі, такі як кольори, жирний шрифт, курсив та підкреслення.

AnsiConsole.Markup("[green]Hello, world![/]");

2. Створення таблиць

Ви можете елегантно відображати табличні дані:

var table = new Table();  
table.AddColumn("[yellow]Name[/]");  
table.AddColumn("[blue]Age[/]");  
table.AddRow("Alice", "30");  
table.AddRow("Bob", "25");  
AnsiConsole.Write(table);

3.

User prefers translations to keep the original code intact and ensure natural-sounding Ukrainian while adding English terms in parentheses for technical jargon.

4. Прогрес-бари

Відображення прогресу для довготривалих завдань:

AnsiConsole.Progress()  
 .Start(ctx => {  
 var task = ctx.AddTask("[green]Обробка...[/]");  
 while (!ctx.IsFinished)  
 {  
 task.Increment(10);  
 Thread.Sleep(500);  
 }  
 });

5. Інтерактивні запити

Отримання вводу інтуїтивно:

var name = AnsiConsole.Ask("Як твоє [green]ім'я[/]?");  
AnsiConsole.MarkupLine($"Привіт, [blue]{name}[/]!");

6. Структурована система команд

Spectre.Console також включає потужну систему для створення ієрархічних команд, ідеальну для складних CLI інструментів.

using Spectre.Console.Cli;  

public class GreetCommand : Command  
{  
 public class Settings : CommandSettings  
 {  
 [CommandOption("--name")]  
 public string Name { get; set; }  
 }  
 public override int Execute(CommandContext context, Settings settings)  
 {  
 AnsiConsole.MarkupLine($"Привіт, [green]{settings.Name}[/]!");  
 return 0;  
 }  
}

## 7. Візуалізація ієрархічних дерев

Відображення ієрархічних даних чітко:

var root = new Tree("Root");
var node1 = root.AddNode("Node 1");
node1.AddNode("Subnode 1.1");
node1.AddNode("Subnode 1.2");
var node2 = root.AddNode("Node 2");
node2.AddNode("Subnode 2.1");
AnsiConsole.Write(root);
```

8. Горизонтальні гістограми

Створення візуальних представлень даних:

var chart = new BarChart()  
 .Width(60)  
 .Label("[green bold]Продажі за місяцями[/]")  
 .AddItem("Січень", 40, Color.Green)  
 .AddItem("Лютий", 30, Color.Yellow)  
 .AddItem("Березень", 25, Color.Red);  

AnsiConsole.Write(chart);

9. Рендеринг ASCII-зображень

Створення простих графічних представлень:

var canvas = new Canvas(20, 10);  
canvas.SetPixel(5, 5, Color.Red);  
canvas.SetPixel(10, 5, Color.Green);  
canvas.SetPixel(15, 5, Color.Blue);  
AnsiConsole.Write(canvas);

## 10. Розмітки сітки

Організація виводів у колонки:

var grid = new Grid();
grid.AddColumn();
grid.AddColumn();
grid.AddRow("Ім'я", "Рафаель");
grid.AddRow("Вік", "35");
grid.AddRow("Професія", "Розробник");
AnsiConsole.Write(grid);
```

11. Горизонтальні правила

Візуальне відокремлення секцій:

AnsiConsole.Write(new Rule("[yellow]Секція 1[/]"));  
AnsiConsole.WriteLine("Зміст секції 1");  
AnsiConsole.Write(new Rule("[green]Секція 2[/]"));  
AnsiConsole.WriteLine("Зміст секції 2");

Висновок

Spectre.Console — потужний інструмент для будь-якого розробника .NET, який хоче створювати сучасні та функціональні CLI.

Висновок

Чи то відображення організованих таблиць, обробка вводу користувача, чи відстеження прогресу за допомогою елегантних панелей — Spectre.Console робить усі ці завдання набагато простішими.

Якщо ви ще не спробували цю бібліотеку, саме час! Досліджуйте, експериментуйте і підніміть свої CLI інструменти на новий рівень.

Корисні посилання:

Готові розпочати свою подорож з Spectre.Console? 🚀

Перекладено з: 📟 Introduction to Spectre.Console: Creating Modern and Elegant Command-Line Interfaces 📦

Leave a Reply

Your email address will not be published. Required fields are marked *