ArgsToClass 0.1.0
dotnet add package ArgsToClass --version 0.1.0
NuGet\Install-Package ArgsToClass -Version 0.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="ArgsToClass" Version="0.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ArgsToClass" Version="0.1.0" />
<PackageReference Include="ArgsToClass" />
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 ArgsToClass --version 0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ArgsToClass, 0.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.
#:package ArgsToClass@0.1.0
#: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=ArgsToClass&version=0.1.0
#tool nuget:?package=ArgsToClass&version=0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
ArgsToClass
Description
Parse command line arguments and create class data from it.
Build status
| Status |
|---|
Usage
This library usage is berry easy.
Simply define a class and use the corresponding options.
namespace Sample
{
public class MainCommand
{
public bool Help { get; set; }
public string Name { get; set; }
public int Repeat { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
var parser = new ArgsParser<MainCommand>();
IArgsData<MainCommand> data;
try
{
// This parses command line arguments and maps them to classes.
// args == new string[]{"--help", "--name", "John", "--repeat", "1"};
data = parser.Parse(args);
}
catch (ArgsAnalysisException ex)
{
Console.WriteLine(ex);
return;
}
// data.MainCommand.Help == false
// data.MainCommand.Name == "John"
// data.MainCommand.Repeat == 1
}
}
}
If you need to add a description or short name to an option, use attributes.
namespace Sample
{
[Description(@"Sample option description.
More description.")]
public class MainCommand
{
public bool Help { get; set; }
[Option(shortName:'n',longName:"name")]
[Description(@"Name option description.
More description.")]
public string Name { get; set; }
[Option(shortName: 'r')]
[Description("Repeat option description.")]
public int Repeat { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
// args == new string[]{"--help", "-n", "John", "--repeat", "1"};
var parser = new ArgsParser<Option>();
IArgsData<Option> data;
try
{
// This parses command line arguments and maps them to classes.
data = parser.Parse(args);
}
catch (ArgsAnalysisException ex)
{
Console.WriteLine(ex);
return;
}
// data.Option.Help == false
// data.Option.Name == "John"
// data.Option.Repeat == 1
if (data.Option.Help)
{
var helpTextGen = new HelpTextGenerator<Option>();
var helpText = helpTextGen.GetHelpText(data);
Console.WriteLine(helpText);
}
else
{
for (var i = 0; i < data.Option.Repeat; ++i)
{
Console.WriteLine($"Hi! {data.Option.Name}!");
}
}
Console.ReadKey();
}
}
}
You may need subcommands. In that case, define it with attributes.
namespace Sample
{
using SubCommandExtensionRun;
namespace SubCommandExtensionRun
{
[Description(@"Sample main command description.
More description.")]
public class MainCommand
{
public bool Help { get; set; }
[SubCommand]
[Description("This command say hello.")]
public Hello Hello { get; set; }
[SubCommand]
[Description("This command say bye.")]
public Bye Bye{ get; set; }
}
[Description(@"Hello command long description.
More description.")]
public class Hello
{
public bool Help { get; set; }
[Option(shortName: 'n', longName: "name")]
[Description("Name option description.")]
public string Name { get; set; }
[Option(shortName: 'r')]
[Description("Repeat option description.")]
public int Repeat { get; set; }
}
[Description(@"Bye command long description.
More description.")]
public class Bye
{
public bool Help { get; set; }
[Option(shortName: 'n', longName: "name")]
[Description("Name option description.")]
public string Name { get; set; }
[Option(shortName: 'r')]
[Description("Repeat option description.")]
public int Repeat { get; set; }
}
public static class Extensions
{
public static void Run(this MainCommand command)
{
if (command.Help)
{
var helpTextGen = new HelpTextGenerator<MainCommand>();
var helpText = helpTextGen.GetHelpText();
Console.WriteLine(helpText);
}
else
{
Console.WriteLine("Specify a command.");
}
Console.ReadKey();
}
public static void Run(this Hello command)
{
if (command.Help)
{
var helpTextGen = new HelpTextGenerator<Hello>();
var helpText = helpTextGen.GetHelpText();
Console.WriteLine(helpText);
}
else
{
Console.WriteLine($"Hello! {command.Name}!");
}
Console.ReadKey();
}
public static void Run(this Bye command)
{
if (command.Help)
{
var helpTextGen = new HelpTextGenerator<Bye>();
var helpText = helpTextGen.GetHelpText();
Console.WriteLine(helpText);
}
else
{
Console.WriteLine($"Bye! {command.Name}!");
}
Console.ReadKey();
}
}
}
public class Program
{
public void Main(string[] args)
{
var parser = new ArgsParser<MainCommand>();
IArgsData<MainCommand> data;
try
{
// This parses command line arguments and maps them to classes.
data = parser.Parse(args);
}
catch (ArgsAnalysisException ex)
{
Console.WriteLine(ex);
return;
}
// If you define Run as an extension method or class method, the Run command of the command specified by the argument will be called.
data.RunCommand();
}
}
}
Option format
The optional format supports.
Option format with value
-o value
-o "value text"
-o=value
-o="value text"
-option value
-option "value text"
-option=value
-option="value text"
--option value
--option "value text"
--option=value
--option="value text"
/o value
/o "value text"
/o=value
/o="value text"
/option value
/option "value text"
/option=value
/option="value text"
Switch format
-s
-s+
-s-
-switch
-switch+
-switch-
--switch
--switch+
--switch-
/s
/s+
/s-
/switch
/switch+
/switch-
Please try using!!
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.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 |
|---|---|---|
| 0.1.0 | 815 | 12/31/2019 |
| 0.0.3-alpha | 526 | 10/22/2019 |
| 0.0.2-alpha | 535 | 10/5/2019 |
| 0.0.1-alpha | 537 | 9/26/2019 |