NibblePoker.Library.Arguments 2.0.0

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

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

.NET - Launch Arguments Parser Library

Nuget.org latest version Nuget.org downloads count Repository's License

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.<br> It is also has the exact same features as the port in C99-Utility-Libraries.

Features

  • Easy to use, lightweight and 'to-the-point' philosophy
    • No unnecessary types, classes, procedures and whatnot
  • 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
    • In-between verbs
  • 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

  • .NET Framework 4.0 or newer
  • .NET v6.0 or newer

Documentation

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

Building

Please refer to the building.md file for more information.

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

  • Regular Declaration
    • Standard recommended method of declaring and using the options and verbs
  • Loose Declaration
    • Declaration, registration and parsing done in a single nested statement

License

The code in this repository is licensed under CC0 1.0 Universal (CC0 1.0) (Public Domain).

The doxygen-awesome-css repository is used as a submodule for Doxygen and is licensed under the 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 is compatible.  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 is compatible.  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. 
.NET Framework net40 is compatible.  net403 was computed.  net45 was computed.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.0

    • No dependencies.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.
  • net8.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
2.0.0 124 5/8/2024
1.2.2 85 5/8/2024
1.2.1 86 5/3/2024
1.2.0 72 5/3/2024
1.1.0 464 10/9/2022
1.0.0 375 10/2/2022
0.2.0 375 9/30/2022
0.1.0 376 9/29/2022

Added support for .NET Framework 4, Added 'Verb.RegisterOptionRecursively', Disabled implicit usings and nullables