Compare commits

...
1 Commits
Author SHA1 Message Date
Eric Harding dd5c680155 work in progress 2019-04-29 11:18:11 -04:00
+39 -20
View File
@@ -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));
}
}
}