CleanConsole.Parse 1.0.2

dotnet add package CleanConsole.Parse --version 1.0.2
                    
NuGet\Install-Package CleanConsole.Parse -Version 1.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CleanConsole.Parse" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CleanConsole.Parse" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="CleanConsole.Parse" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CleanConsole.Parse --version 1.0.2
                    
#r "nuget: CleanConsole.Parse, 1.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CleanConsole.Parse@1.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CleanConsole.Parse&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=CleanConsole.Parse&version=1.0.2
                    
Install as a Cake Tool

CleanConsole.Parse 🚀

A maneira limpa, declarativa e robusta de criar aplicações CLI em .NET 10.

License Platform Status

O CleanConsole.Parse é uma biblioteca projetada para eliminar o código repetitivo (boilerplate) na leitura de argumentos de linha de comando. Ao invés de escrever loops complexos para analisar string[] args, você simplesmente decora uma classe C# com atributos, e a biblioteca cuida de todo o resto: parsing, validação de tipos, regras de negócio e geração de ajuda.


🎯 Por que usar?

Ideal para Desenvolvedores e Engenheiros de DevOps que constroem ferramentas de automação, CLIs ou utilitários de sistema.

  • Declarativo: Defina suas opções diretamente na classe (POCO). O código documenta a si mesmo.
  • Type-Safe: Conversão automática e segura para int, double, bool e string.
  • Zero Dependências: Biblioteca extremamente leve, sem dependências de terceiros (NuGet limpo).
  • Validação Poderosa: Regras de grupo complexas como "Escolha exatamente um" ou "Pelo menos um" configuráveis via atributos.
  • UX Nativa: Gera telas de ajuda (--help) formatadas e mensagens de erro amigáveis para o usuário final.

📦 Instalação

Atualmente, o projeto pode ser utilizado via referência direta ou build local.

# Clone o repositório
git clone https://github.com/seu-usuario/CleanConsole.Parse.git

# Adicione referência ao seu projeto .NET 10
dotnet add reference ../CleanConsole.Parse/CleanConsole.Parse.csproj

⚡ Exemplo Rápido (Quick Start)

Transforme uma classe simples em uma interface de linha de comando completa em minutos.

1. Defina seus Argumentos

Crie uma classe e use os atributos [ProgramDefinition] e [Option].

using CleanConsole.Parse;

[ProgramDefinition(Name = "FileCompressor", Description = "Ferramenta CLI para compressão de arquivos.")]
public class CompressionOptions
{
    [Option("input", ShortOptionName = "i", Description = "Caminho do arquivo de entrada")]
    public string InputFile { get; set; }

    [Option("level", Description = "Nível de compressão (1-9)")]
    public int CompressionLevel { get; set; } = 5; // Valor padrão

    [Option("verbose", ShortOptionName = "v", Description = "Habilita logs detalhados")]
    public bool Verbose { get; set; }
}

2. Processe no Main

No seu Program.cs, consuma o ParseResult<CompressionOptions>.

var result = CleanParser.Parse<CompressionOptions>(args);

if (result.HelpRequested)
{
    Console.WriteLine(result.GetHelpDescription());
    return;
}

if (result.HasErrors)
{
    Console.Error.WriteLine("Ocorreram erros:");
    foreach (var error in result.Errors)
    {
        Console.Error.WriteLine($"- {error.Message}");
    }
    return;
}

var options = result.Options!;
Console.WriteLine($"Comprimindo '{options.InputFile}' (Nível {options.CompressionLevel})...");
Console.WriteLine();
Console.WriteLine(result.GetSelectedSummary());

3. Resultado

Se o usuário executar: myapp.exe --input=dados.dat --level=9 -v

O objeto options será:

  • InputFile: "dados.dat"
  • CompressionLevel: 9
  • Verbose: true

E result.GetSelectedSummary() produzirá um resumo pronto para logar.


🛡️ Validação Avançada (Grupos)

Precisa garantir regras de negócio complexas? Use [OptionGroup].

Exemplo: Um sistema de login que exige Usuário+Senha OU Token, mas nunca ambos.

[OptionGroup("AuthMethod", OptionGroupRequirement.ExactOne)]
public class LoginOptions
{
    [Option("token", Group = "AuthMethod")]
    public string? AuthToken { get; set; }

    [Option("user", Group = "AuthMethod")]
    public string? Username { get; set; }
}
// result.HasErrors será verdadeiro se o usuário fornecer ambos ou nenhum.

Também é possível exigir que todas as opções de um conjunto sejam fornecidas usando OptionGroupRequirement.All.

[OptionGroup("Sync", OptionGroupRequirement.All)]
public class SyncOptions
{
    [Option("source", Group = "Sync")]
    public string? Source { get; set; }

    [Option("target", Group = "Sync")]
    public string? Target { get; set; }

    [Option("audit", Group = "Sync")]
    public bool Audit { get; set; }
}
// Um ParseResult com HasErrors = true indicará as opções faltantes.

📚 Documentação Completa

Para aprofundar seu conhecimento, consulte nossa documentação técnica na pasta docs/:


🤖 Estrutura do Projeto e Agentes

Este projeto utiliza uma metodologia única baseada em Agentes Especialistas. A manutenção e evolução do código são guiadas por "personas" técnicas definidas na pasta agents/.

  • Architect: Cuida da estrutura e API.
  • Core Engineer: Otimiza o algoritmo de parsing.
  • UX Specialist: Garante que as mensagens e docs sejam claros.
  • QA Engineer: Mantém a bateria de testes.

Consulte o arquivo AGENTS.md para entender como o projeto é organizado.


🤝 Contribuindo

Contribuições são bem-vindas! Se você encontrou um bug ou tem uma ideia de funcionalidade:

  1. Abra uma Issue.
  2. Faça um Fork e envie um Pull Request.
  3. Certifique-se de adicionar testes (veja docs/CONTRIBUTING.md).

Licença

Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 274 12/16/2025
1.0.1 253 12/15/2025
1.0.0 214 12/14/2025