forked from EllieBotDevs/elliebot
23 lines
No EOL
638 B
C#
23 lines
No EOL
638 B
C#
using CommandLine;
|
|
|
|
namespace EllieBot.Common;
|
|
|
|
public static class OptionsParser
|
|
{
|
|
public static T ParseFrom<T>(string[]? args)
|
|
where T : IEllieCommandOptions, new()
|
|
=> ParseFrom(new T(), args).Item1;
|
|
|
|
public static (T, bool) ParseFrom<T>(T options, string[]? args)
|
|
where T : IEllieCommandOptions
|
|
{
|
|
using var p = new Parser(x =>
|
|
{
|
|
x.HelpWriter = null;
|
|
});
|
|
var res = p.ParseArguments<T>(args);
|
|
var output = res.MapResult(x => x, _ => options);
|
|
output.NormalizeOptions();
|
|
return (output, res.Tag == ParserResultType.Parsed);
|
|
}
|
|
} |