public static void Main()
ParseArgs(["--count=abc"]);
private const int DefaultCount = 3;
private static int Count { get; set; } = DefaultCount;
private static void PrintUsage(OptionSchema schema, TextWriter output)
"usage: command [Options...] [--] Arguments...",
var messages = usage.Concat(schema.GetHelpMessage());
foreach (var m in messages)
private static void ParseCount(RequiredArgumentOption o)
if (!int.TryParse(v, out var num) || num < 0)
throw new OptionParsingException(
o, $"option '{o}': the value '{v}' is invalid for {n}");
public static void ParseArgs(string[] args)
var schema = Options.NewSchema()
.Add("help", 'h', "Show help and exit");
var setting = schema.Parse(args);
var options = setting.Options;
var arguments = setting.Arguments;
foreach (var o in options)
PrintUsage(schema, Console.Out);
Console.WriteLine($"Count: {Count}");
catch (OptionParsingException e)
var output = Console.Error;
output.WriteLine(e.Message);
PrintUsage(schema, output);