ci
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
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
This commit is contained in:
111
README.md
Normal file
111
README.md
Normal file
@@ -0,0 +1,111 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user