public static Task <int> MainCore(string[] args, ILogger log) { #if DEBUG if (args.Contains("--debug")) { args = args.Skip(1).ToArray(); while (!Debugger.IsAttached) { } Debugger.Break(); } #endif var app = new CommandLineApplication(); app.Name = "sleet"; app.FullName = "Sleet"; app.HelpOption("-h|--help"); app.VersionOption("--version", Constants.SleetVersion.ToFullVersionString()); InitCommand.Register(app, log); PushCommand.Register(app, log); DeleteCommand.Register(app, log); ValidateCommand.Register(app, log); StatsCommand.Register(app, log); CreateConfigCommand.Register(app, log); app.OnExecute(() => { app.ShowHelp(); return(0); }); var exitCode = 0; try { exitCode = app.Execute(args); } catch (CommandParsingException ex) { ex.Command.ShowHelp(); } catch (AggregateException ex) { exitCode = 1; foreach (var inner in ex.InnerExceptions) { log.LogError(inner.Message); log.LogDebug(inner.ToString()); } } catch (Exception ex) { exitCode = 1; log.LogError(ex.Message); log.LogDebug(ex.ToString()); } return(Task.FromResult(exitCode)); }