24149a6d198d1adb79d761164b1681a3ce9ce8ab
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
ArgumentsToolkit
ArgumentsToolkit — модульная экосистема для парсинга аргументов командной строки в .NET.
✨ Особенности
- 📦 Модульность — отдельные пакеты для Core, Validation, Help, Unparser, Verbs.
- 🧩 Расширяемость — поддержка кастомных конвертеров через
IOptionConverterи атрибуты. - 🛡️ Валидация — встроенные атрибуты (
Range,Regex,AllowedValues) + возможность писать свои. - 📖 Справка — генерация help‑текста в Markdown/HTML, легко расширяется форматтерами.
- 🔄 Unparser — обратная операция: объект → строка аргументов.
- 🌍 Локализация — кастомные сообщения об ошибках через свойство
Message.
📦 Установка
dotnet add package ArgumentsToolkit
или по модулям
dotnet add package ArgumentsToolkit.Core
dotnet add package ArgumentsToolkit.Validation
dotnet add package ArgumentsToolkit.Help
🚀 Быстрый старт
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;
}
}
📖 Пример запуска
dotnet run -- --server myhost --port 8080 --env staging --mode Incremental
Вывод:
✅ Успешный парсинг и валидация!
🧩 Архитектура пакетов
- ArgumentsToolkit.Core — парсинг, атрибуты
[Option], конвертеры. - ArgumentsToolkit.Validation — атрибуты валидации и движок
Validator. - ArgumentsToolkit.Help — модель справки и форматтеры.
- ArgumentsToolkit.Verbs — поддержка команд (в разработке).
🛠️ Roadmap
- Поддержка списков и словарей в аргументах.
- Плагинная система для Help/Validation.
Description
Releases
3
ArgumentsToolkit_v0.0.3
Latest
Languages
C#
100%