Compare commits
1
Commits
list
...
GenericArgParser
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd5c680155 |
@@ -13,28 +13,47 @@ using System.Reflection;
|
||||
namespace sparkcmd {
|
||||
class Program {
|
||||
|
||||
// static object option<T>(Func<T,int> run) {return run;}
|
||||
// static Type argType(object arg) {
|
||||
// return arg.GetType().GetGenericArguments().First();
|
||||
// }
|
||||
// static int Run(Func<IEnumerable<Error>,int> on_error, params object[] args) {
|
||||
// var types = args.Select(argType).ToArray();
|
||||
// var parse = CommandLine.Parser.Default.GetType().GetMethod("ParseArguments", BindingFlags.Public).MakeGenericMethod(types);
|
||||
// return 3;
|
||||
// }
|
||||
static object option<T>(Func<T, int> run) { return run; }
|
||||
static Type argType(object arg) {
|
||||
return arg.GetType().GetGenericArguments().First();
|
||||
}
|
||||
static int Run(Func<IEnumerable<Error>, int> on_error, params Type[] runners) {
|
||||
var run_methods =
|
||||
runners
|
||||
.Select(r => r.GetMethod("Run", BindingFlags.Static | BindingFlags.Public))
|
||||
.ToList();
|
||||
var args =
|
||||
run_methods
|
||||
.Select(m => m.GetParameters().First().GetType());
|
||||
|
||||
var parser = Parser.Default.GetType().GetMethod("ParseArguments", new[] { typeof(IEnumerable<string>) });
|
||||
|
||||
//var types = args.Select(argType).ToArray();
|
||||
//var parse = CommandLine.Parser.Default.GetType().GetMethod("ParseArguments", BindingFlags.Public).MakeGenericMethod(types);
|
||||
return 3;
|
||||
}
|
||||
static int Main(string[] args) {
|
||||
mbts.utils.BTSNativeMethods.provide_command_line(args, args.Length);
|
||||
// note: this can be made to infer the options type list from the list of delegates
|
||||
return Parser.Default
|
||||
.ParseArguments<ConfigcheckOptions,ScriptClientOptions,TailServiceOptions,ServiceTestOptions,SettingsManagerOptions,TestCommandOptions >(args)
|
||||
.MapResult<ConfigcheckOptions,ScriptClientOptions,TailServiceOptions,ServiceTestOptions,SettingsManagerOptions,TestCommandOptions,int>(
|
||||
Configcheck.Run,
|
||||
ScriptClientCommand.Run,
|
||||
TailService.Run,
|
||||
ServiceTest.Run,
|
||||
SettingsManagerCommand.Run,
|
||||
TestCommand.Run,
|
||||
errors => 1);
|
||||
|
||||
//return Parser.Default
|
||||
//.ParseArguments<ConfigcheckOptions,ScriptClientOptions,TailServiceOptions,ServiceTestOptions,SettingsManagerOptions,TestCommandOptions>(args)
|
||||
//.MapResult<ConfigcheckOptions,ScriptClientOptions,TailServiceOptions,ServiceTestOptions,SettingsManagerOptions,TestCommandOptions,int>(
|
||||
// Configcheck.Run,
|
||||
// ScriptClientCommand.Run,
|
||||
// TailService.Run,
|
||||
// ServiceTest.Run,
|
||||
// SettingsManagerCommand.Run,
|
||||
// TestCommand.Run,
|
||||
// errors => 1);
|
||||
|
||||
return Run(
|
||||
errors => 1,
|
||||
typeof(Configcheck),
|
||||
typeof(ScriptClientCommand),
|
||||
typeof(TailService),
|
||||
typeof(ServiceTest),
|
||||
typeof(SettingsManagerCommand),
|
||||
typeof(TestCommand));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user