NibblePoker.Library.Arguments 1.1.0

dotnet add package NibblePoker.Library.Arguments --version 1.1.0
NuGet\Install-Package NibblePoker.Library.Arguments -Version 1.1.0
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="NibblePoker.Library.Arguments" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NibblePoker.Library.Arguments --version 1.1.0
#r "nuget: NibblePoker.Library.Arguments, 1.1.0"
#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.
// Install NibblePoker.Library.Arguments as a Cake Addin
#addin nuget:?package=NibblePoker.Library.Arguments&version=1.1.0

// Install NibblePoker.Library.Arguments as a Cake Tool
#tool nuget:?package=NibblePoker.Library.Arguments&version=1.1.0

.NET - Launch Arguments Parser Library

Nuget.org latest version Nuget.org downloads count

A simple and 'to-the-point' library to parse launch arguments in .NET and .NET Core applications.

This library is an improved port of my PB-Arguments library that intended to achieve the same goals but was missing support for some features.

Features

  • Easy to use, lightweight and 'to-the-point' philosophy
  • Support for 'git-like' verbs
  • Different behavior for options
    • Required options
    • Repeatable flag-like options
    • Multiple value
    • Multiple default option per verb with index-based ordering
    • Hidden in help text
    • Early parser exit
  • Configurable help text printer
  • Easy exception filtering with inheritance
    • 1 common parent
    • 3 child for distinct parts of the library
    • 14 final errors thrown in specific places.

Requirements

  • Any OS
  • Any CPU
  • .NET v6.0
  • C# 10.0

Building

See building.md

Documentation

Go to https://aziascreations.github.io/DotNet-Arguments/ for the HTML documentation.

Basic Example

The following example shows you how to declare 2 options and how to parse and use the launch arguments.

// Preparing options and root verb.
Option OptionHelp    = new('h', "help",    "", OptionFlags.StopsParsing);
Option OptionVerbose = new('v', "verbose", "", OptionFlags.Repeatable);

Verb RootVerb = new Verb("").RegisterOption(OptionHelp).RegisterOption(OptionVerbose);

// Parsing lanch arguments
try {
    ArgumentsParser.ParseArguments(RootVerb, args);  // 'args' is gotten from Main().
} catch(ArgumentException) {
    Console.Error.Write("Failed to parse the launch arguments !");
    RootVerb.Clear();  // Ignoring the error and simulating no launch parameters.
}

// Using the results
if(OptionHelp.WasUsed()) {
    Console.WriteLine(HelpText.GetFullHelpText(RootVerb, "app.exe"));
}

if(OptionVerbose.WasUsed() && OptionVerbose.Occurrences >= 2) {
    // We count the number of occurences to enable more logging.
    Console.WriteLine("Activating super-verbose mode !");
}

Other Examples

  • Loose Declaration
    • Declaration, registration and parsing done in a single nested statement

License

MIT License

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.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.1.0 429 10/9/2022
1.0.0 347 10/2/2022
0.2.0 344 9/30/2022
0.1.0 350 9/29/2022

* Improved the help text generator
* Exposed more help text functions