Фото Джейка Вокера на 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 інструменти на новий рівень.
Корисні посилання:
- Репозиторій на GitHub: Spectre.Console
- Офіційна документація: Spectre.Console Docs
Готові розпочати свою подорож з Spectre.Console? 🚀
Перекладено з: 📟 Introduction to Spectre.Console: Creating Modern and Elegant Command-Line Interfaces 📦