private static int Main(string[] args) { if (args.Length < 2) { DisplayHelp(); return(1); } var server = args[0]; if (server.Equals(".") || server.Equals("local") || server.Equals("localhost")) { server = Environment.MachineName; } var app = new EndecaApplication(AppName, server, Port); Logger.Info(String.Format("Loading {0} application on {1}:{2} ...", AppName, server, Port)); Console.CancelKeyPress += delegate { Logger.Warn("Script has been cancelled. Current operation is in progress and will complete!"); app.ReleaseAllLocks(); }; if (args[1] == "/l") { app.ReleaseAllLocks(); Console.WriteLine("Locks released!"); return(0); } if (!app.AcquireUpdateLock()) { Logger.Error("Cannot acquire lock. Update probably in progress!"); return(1); } try { app.LoadApplication(); Logger.Notify("Index update started.\r\n\r\nData feed contents:\r\n\r\n" + GetDirectoryListing(args, app)); Logger.Info(app.GetConfiguration()); // start log server if defined and down StartLogServer(app); switch (args[1]) { case "/baseline_update": case "/b": BaselineUpdate(app, true); break; case "/partial_update": case "/p": PartialUpdate(app); break; case "/u": case "/update_without_applying": BaselineUpdate(app, false); break; case "/a": case "/apply_index": ApplyIndex(app); break; case "/r": case "/rollback_index": RollbackIndex(app); break; default: DisplayHelp(); return(1); } Logger.Info("Script finished"); Logger.Notify("Index successfuly updated.\r\n\r\nSession Log:\r\n" + Logger.GetLog()); return(0); } catch (Exception e) { var msg = string.Format("Script failed:\r\n{0}", e); Logger.Fatal(msg); Logger.NotifyOnError(msg); return(1); } finally { app.ReleaseAllLocks(); } }