Abstracted out command arguments a bit

This commit is contained in:
Master Kwoth
2017-11-29 18:14:19 +07:00
parent c723f82d95
commit 471ab6cb27
4 changed files with 38 additions and 5 deletions

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NadekoBot.Core.Common
{
public interface INadekoCommandOptions
{
void NormalizeOptions();
}
}

View File

@ -0,0 +1,20 @@
using CommandLine;
namespace NadekoBot.Core.Common
{
public class OptionsParser
{
private static OptionsParser _instance = new OptionsParser();
public static OptionsParser Default => _instance;
static OptionsParser() { }
public T ParseFrom<T>(T options, string[] args) where T : INadekoCommandOptions
{
var res = Parser.Default.ParseArguments<T>(args);
options = (T)res.MapResult(x => x, x => options);
options.NormalizeOptions();
return options;
}
}
}