XenoAtom.CommandLine
1.0.1
Prefix Reserved
dotnet add package XenoAtom.CommandLine --version 1.0.1
NuGet\Install-Package XenoAtom.CommandLine -Version 1.0.1
<PackageReference Include="XenoAtom.CommandLine" Version="1.0.1" />
paket add XenoAtom.CommandLine --version 1.0.1
#r "nuget: XenoAtom.CommandLine, 1.0.1"
// Install XenoAtom.CommandLine as a Cake Addin #addin nuget:?package=XenoAtom.CommandLine&version=1.0.1 // Install XenoAtom.CommandLine as a Cake Tool #tool nuget:?package=XenoAtom.CommandLine&version=1.0.1
XenoAtom.CommandLine
<img align="right" width="256px" height="256px" src="https://raw.githubusercontent.com/XenoAtom/XenoAtom.CommandLine/main/img/icon.png">
XenoAtom.CommandLine is a lightweight, powerful and NativeAOT friendly command line parser.
It is a fork of the excellent NDesk.Options/Mono.Options with several small improvements and new features.
โจ Features
- Lightweight library with no dependencies
net8.0
+ ready and NativeAOT friendly, noSystem.Reflection
used- Provides a simple API to parse command line arguments
- Generates a help message from the command line definition
- What you declare is what you get!
- Supports
- Commands and sub-command parsing (e.g.
git commit -m "message"
) - Tar and POSIX style options (e.g.
-abc
is equivalent to-a -b -c
) -
,/
and--
option prefixes (e.g.-v
,/v
,--verbose
))- Multiple option values (e.g.
-i foo -i bar
) - Optional and required option values
:
(e.g.-o[BAR] -oBAR
) - Key/value pairs (e.g. `-DMACRO=VALUE1)
- Option aliases (e.g.
-v
,-verbose
) --
to stop option parsing--help
and--version
built-in options- Parsing of values to specific target types (e.g.
int
,bool
,enum
, etc.)) - Response files e.g
@file.txt
- Grouping of command/options that can be activated together when a specific condition is met.
- Commands and sub-command parsing (e.g.
๐งช Example
using System;
using XenoAtom.CommandLine;
const string _ = "";
string? name = null;
int age = 0;
List<string> messages = new List<string>();
var commandApp = new CommandApp("myexe")
{
_,
{"n|name=", "Your {NAME}", v => name = v},
{"a|age=", "Your {AGE}", (int v) => age = v},
new HelpOption(),
_,
"Available commands:",
new Command("commit")
{
_,
{"m|message=", "Add a {MESSAGE} to this commit", messages},
new HelpOption(),
// Action for the commit command
(arguments) =>
{
Console.Out.WriteLine($"Committing with name={name}, age={age}");
foreach (var message in messages)
{
Console.Out.WriteLine($"Commit message: {message}");
}
return ValueTask.FromResult(0);
}
},
// Default action if no command is specified
(_) =>
{
Console.Out.WriteLine($"Hello {name}! You are {age} years old.");
return ValueTask.FromResult(0);
}
};
await commandApp.RunAsync(args);
Running myexe --help
will output:
Usage: myexe [Options] COMMAND
-n, --name=NAME Your NAME
-a, --age=AGE Your AGE
-h, -?, --help Show this message and exit
Available commands:
commit
Running myexe --name John -a50
will output:
Hello John! You are 50 years old.
Running myexe commit --help
will output:
Usage: myexe commit [Options]
-m, --message=MESSAGE Add a MESSAGE to this commit
-h, -?, --help Show this message and exit
Running myexe --name John -a50 commit --message "Hello!" --message "World!"
will output:
Committing with name=John, age=50
Commit message: Hello!
Commit message: World!
๐ User Guide
For more details on how to use XenoAtom.CommandLine, please visit the user guide.
๐๏ธ Build
You need to install the .NET 8 SDK. Then from the root folder:
$ dotnet build src -c Release
๐ชช License
This software is released under the BSD-2-Clause license.
The license also integrate the original MIT license from Mono.Options.
๐ค Author
Alexandre Mutel aka xoofx.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on XenoAtom.CommandLine:
Repository | Stars |
---|---|
vcsjones/AzureSignTool
SignTool Library and Azure Key Vault Support
|