Compare 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 { namespace sparkcmd {
class Program { class Program {
// static object option<T>(Func<T,int> run) {return run;} static object option<T>(Func<T, int> run) { return run; }
// static Type argType(object arg) { static Type argType(object arg) {
// return arg.GetType().GetGenericArguments().First(); return arg.GetType().GetGenericArguments().First();
// } }
// static int Run(Func<IEnumerable<Error>,int> on_error, params object[] args) { static int Run(Func<IEnumerable<Error>, int> on_error, params Type[] runners) {
// var types = args.Select(argType).ToArray(); var run_methods =
// var parse = CommandLine.Parser.Default.GetType().GetMethod("ParseArguments", BindingFlags.Public).MakeGenericMethod(types); runners
// return 3; .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) { static int Main(string[] args) {
mbts.utils.BTSNativeMethods.provide_command_line(args, args.Length); 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 //return Parser.Default
.ParseArguments<ConfigcheckOptions,ScriptClientOptions,TailServiceOptions,ServiceTestOptions,SettingsManagerOptions,TestCommandOptions >(args) //.ParseArguments<ConfigcheckOptions,ScriptClientOptions,TailServiceOptions,ServiceTestOptions,SettingsManagerOptions,TestCommandOptions>(args)
.MapResult<ConfigcheckOptions,ScriptClientOptions,TailServiceOptions,ServiceTestOptions,SettingsManagerOptions,TestCommandOptions,int>( //.MapResult<ConfigcheckOptions,ScriptClientOptions,TailServiceOptions,ServiceTestOptions,SettingsManagerOptions,TestCommandOptions,int>(
Configcheck.Run, // Configcheck.Run,
ScriptClientCommand.Run, // ScriptClientCommand.Run,
TailService.Run, // TailService.Run,
ServiceTest.Run, // ServiceTest.Run,
SettingsManagerCommand.Run, // SettingsManagerCommand.Run,
TestCommand.Run, // TestCommand.Run,
errors => 1); // errors => 1);
return Run(
errors => 1,
typeof(Configcheck),
typeof(ScriptClientCommand),
typeof(TailService),
typeof(ServiceTest),
typeof(SettingsManagerCommand),
typeof(TestCommand));
} }
} }
} }