# 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(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.