static void Main(string[] args) { var parser = new ArgumentParser(); var container = new TaskContainer(); var executor = new TaskExecutor(container, parser); container.Add(new HelpTaskRunner(container)); container.Add(new TaskListTaskRunner(container)); container.Add(new ArgumentDisplayTaskRunner()); container.Add(new AssemblyModuleBuilderTaskRunner()); container.Add(new PackTaskRunner()); container.Add(new InstallTaskRunner()); container.Add(new InstallAllTaskRunner()); Stopwatch timer = new Stopwatch(); timer.Start(); if (args.Length == 0) { executor.ExecuteTask("list", args); Environment.Exit(0); } var result = executor.ExecuteTask(args[0], args.Skip(1).ToArray()); foreach (var exception in result.RaisedExceptions) { Console.WriteLine(exception.Message); } timer.Stop(); Console.WriteLine($"Completed in {timer.Elapsed.ToString("c")}."); Environment.Exit(result.ExitCode); }