static void Main(string[] args) { IClipRepository repo = new LocalClipDirectory(@"C:\Users\Kyle\Desktop\Airplane"); ClipPlayer player = new ClipPlayer(repo); AbstractCommand random = new PlayRandomCommand(player); AbstractCommand list = new ListCommand(player); AbstractCommand play = new PlayCommand(player); ConsoleRunner app = new ConsoleRunner(player); app.AddCommand(list); app.AddCommand(play); app.AddCommand(random); app.Run(); }
static void Main(string[] args) { ConsoleRunner.Run(); }
/// <summary> /// Starts the actual application. /// </summary> /// <param name="args">The arguments for the application.</param> /// <param name="usesShadowCopying">A flag indicating whether shadow copying should be used.</param> /// <returns> /// The return code for the application. /// </returns> public int Run(string[] args, bool usesShadowCopying) { // Parse the command line arguments var webOptions = new WebApiOptions(); var consoleArgs = new ConsoleRunnerArguments(); var opts = new OptionSet(); opts.Add("h|?|help", "display this help screen", v => consoleArgs.ShowHelp = v != null) .Add("c|config=", "the configuration file to use (defaults to ccnet.conf)", v => consoleArgs.ConfigFile = v) .Add("r|remoting=", "turn remoting on/off (defaults to on)", v => consoleArgs.UseRemoting = v == "on") .Add("p|project=", "the project to integrate (???)", v => consoleArgs.Project = v) .Add("v|validate", "validate the configuration file and exit", v => consoleArgs.ValidateConfigOnly = v != null) .Add("l|logging=", "turn logging on/off (defaults to on)", v => consoleArgs.Logging = v == "on") .Add("sc|shadowCopy=", "turn shadow copying on/off (defaults to on)", v => usesShadowCopying = v == "on") .Add("e|errorpause=", "turn pause on error on/off (defaults to on)", v => consoleArgs.PauseOnError = v == "on") .Add("we|webEndPoint=", "the base endpoint for the web API (default none)", v => webOptions.BaseEndpoint = v); try { opts.Parse(args); } catch (OptionException e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); return(1); } // Display the help if (consoleArgs.ShowHelp) { DisplayHelp(opts); return(0); } ICruiseServerFactory factory = null; try { // Start the actual console runner if (webOptions.IsConfigured) { var apiFactory = new WebApiServerFactory(); apiFactory.StartWebApi(apiFactory, webOptions); factory = apiFactory; } else { factory = new CruiseServerFactory(); } runner = new ConsoleRunner(consoleArgs, factory); if (!usesShadowCopying) { Log.Warning("Shadow-copying has been turned off - hot-swapping will not work!"); } runner.Run(); return(0); } catch (Exception ex) { Log.Error(ex); if (consoleArgs.PauseOnError) { Console.WriteLine("An unexpected error has caused the console to crash"); Console.ReadKey(); } return(2); } finally { // Clean up runner = null; var disposable = factory as IDisposable; if (disposable != null) { disposable.Dispose(); } } }