Beispiel #1
0
        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();
            }
        }