Some checks failed
CI / build-test (push) Successful in 31s
Release / package (ArgumentsToolkit) (release) Successful in 29s
Release / package (ArgumentsToolkit.Core) (release) Successful in 27s
Release / package (ArgumentsToolkit.Help) (release) Successful in 29s
Release / package (ArgumentsToolkit.Validation) (release) Successful in 26s
Release / publish (release) Failing after 17s
111 lines
3.5 KiB
Markdown
111 lines
3.5 KiB
Markdown
# ArgumentsToolkit
|
||
|
||
**ArgumentsToolkit** — модульная экосистема для парсинга аргументов командной строки в .NET.
|
||
|
||
---
|
||
|
||
## ✨ Особенности
|
||
|
||
- 📦 **Модульность** — отдельные пакеты для Core, Validation, Help, Unparser, Verbs.
|
||
- 🧩 **Расширяемость** — поддержка кастомных конвертеров через `IOptionConverter` и атрибуты.
|
||
- 🛡️ **Валидация** — встроенные атрибуты (`Range`, `Regex`, `AllowedValues`) + возможность писать свои.
|
||
- 📖 **Справка** — генерация help‑текста в Markdown/HTML, легко расширяется форматтерами.
|
||
- 🔄 **Unparser** — обратная операция: объект → строка аргументов.
|
||
- 🌍 **Локализация** — кастомные сообщения об ошибках через свойство `Message`.
|
||
|
||
---
|
||
|
||
## 📦 Установка
|
||
|
||
|
||
```bash
|
||
dotnet add package ArgumentsToolkit
|
||
```
|
||
|
||
или по модулям
|
||
```bash
|
||
dotnet add package ArgumentsToolkit.Core
|
||
dotnet add package ArgumentsToolkit.Validation
|
||
dotnet add package ArgumentsToolkit.Help
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
```csharp
|
||
using ArgumentsToolkit;
|
||
|
||
public class DeployOptions
|
||
{
|
||
[Option("server", "s", "Адрес сервера", required: true)]
|
||
public string Server { get; set; } = default!;
|
||
|
||
[Option("port", "p", "Порт подключения", defaultValue: 22)]
|
||
[Range(1, 65535, Message = "Порт {value} недопустим для {name}")]
|
||
public int Port { get; set; }
|
||
|
||
[Option("env", "e", "Среда деплоя")]
|
||
[AllowedValues("dev", "staging", "prod", Message = "Недопустимое значение {value} для {name}")]
|
||
public string Environment { get; set; } = "dev";
|
||
|
||
[Option("mode", "m", "Режим деплоя")]
|
||
public DeployMode Mode { get; set; } = DeployMode.Full;
|
||
}
|
||
|
||
public enum DeployMode { Full, Incremental, DryRun }
|
||
|
||
class Program
|
||
{
|
||
static int Main(string[] args)
|
||
{
|
||
var result = ArgumentsParser.Parse<DeployOptions>(args);
|
||
|
||
if (!result.Success)
|
||
{
|
||
foreach (var e in result.Errors)
|
||
Console.WriteLine($"{e.Code}: {e.Message}");
|
||
return 1;
|
||
}
|
||
|
||
if (!Validator.Validate(result.Value!, out var vErrors))
|
||
{
|
||
foreach (var e in vErrors)
|
||
Console.WriteLine($"Validation: {e}");
|
||
return 2;
|
||
}
|
||
|
||
Console.WriteLine("✅ Успешный парсинг и валидация!");
|
||
return 0;
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 📖 Пример запуска
|
||
|
||
```bash
|
||
dotnet run -- --server myhost --port 8080 --env staging --mode Incremental
|
||
```
|
||
|
||
Вывод:
|
||
```
|
||
✅ Успешный парсинг и валидация!
|
||
```
|
||
|
||
---
|
||
|
||
## 🧩 Архитектура пакетов
|
||
|
||
- **ArgumentsToolkit.Core** — парсинг, атрибуты `[Option]`, конвертеры.
|
||
- **ArgumentsToolkit.Validation** — атрибуты валидации и движок `Validator`.
|
||
- **ArgumentsToolkit.Help** — модель справки и форматтеры.
|
||
- **ArgumentsToolkit.Verbs** — поддержка команд (в разработке).
|
||
|
||
---
|
||
|
||
## 🛠️ Roadmap
|
||
|
||
- [ ] Поддержка списков и словарей в аргументах.
|
||
- [ ] Плагинная система для Help/Validation. |