NibblePoker.Library.Arguments
1.2.1
See the version list below for details.
dotnet add package NibblePoker.Library.Arguments --version 1.2.1
NuGet\Install-Package NibblePoker.Library.Arguments -Version 1.2.1
<PackageReference Include="NibblePoker.Library.Arguments" Version="1.2.1" />
paket add NibblePoker.Library.Arguments --version 1.2.1
#r "nuget: NibblePoker.Library.Arguments, 1.2.1"
// Install NibblePoker.Library.Arguments as a Cake Addin #addin nuget:?package=NibblePoker.Library.Arguments&version=1.2.1 // Install NibblePoker.Library.Arguments as a Cake Tool #tool nuget:?package=NibblePoker.Library.Arguments&version=1.2.1
.NET - Launch Arguments Parser Library
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
- Loose declaration, registration and parsing can be done in a single human-readable 'nested' statement.
- 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 v6.0
- C# 10.0
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 doxygen-awesome-css repository is used as a submodule for Doxygen and is licensed under the MIT license.
Product | Versions 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. |
-
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.
Improved documentation and fixed small copy-paste mistakes