Пример #1
0
        public static void Main(string[] args)
        {
            var definition = Configuration.Configure<CmdLine>();
            CmdLine cmdLine = null;

            try
            {
                cmdLine = definition.CreateAndBind(args);
            }
            catch (InvalidOperationException)
            {
                ShowHelp(definition);
                Environment.Exit(0);
            }

            if (cmdLine.ShowHelp || !cmdLine.IsValid())
            {
                ShowHelp(definition);
                Environment.Exit(0);
            }

            var mongoUrlBuilder = new MongoUrlBuilder
            {
                DatabaseName = cmdLine.Database,
                ConnectTimeout = TimeSpan.FromSeconds(30),
                Server = new MongoServerAddress(cmdLine.DatabaseHost, cmdLine.DatabasePort),
            };

            var scriptRunner = new MongoScriptRunner(cmdLine.MongoClient, mongoUrlBuilder.ToMongoUrl());

            if (cmdLine.DryRun)
            {
                System.Console.Out.WriteLine("*** Dry run - nothing is executed.");
            }

            var consoleInteraction = (cmdLine.DryRun)
                ? (IUserInteraction)new DryRunConsoleInteraction()
                : new InteractiveConsoleInteraction();

            Synchronize(scriptRunner, consoleInteraction, cmdLine, mongoUrlBuilder);
        }
 public MongoScriptRunnerTests(MongoScriptRunner systemUnderTest)
 {
     _systemUnderTest = systemUnderTest;
 }
Пример #3
0
        private static void Synchronize(MongoScriptRunner scriptRunner, IUserInteraction userInteraction, CmdLine cmdLine,
            MongoUrlBuilder mongoUrlBuilder)
        {
            var client = CreateMongoClient(mongoUrlBuilder);
            var filter = new CategoryMatcher();

            try
            {
                System.Console.Out.WriteLine("Running scripts from {0} on database {1}", cmdLine.SourceDir, mongoUrlBuilder.DatabaseName);

                var synchronizer = new ScriptSynchronizer(client.GetServer().GetDatabase(mongoUrlBuilder.DatabaseName), cmdLine.LogCollection, scriptRunner, userInteraction);
                var sourceScripts = new FileScriptEnumerator(cmdLine.SourceDir)
                    .AllScripts()
                    .Where(script => filter.IsMatch(script.Name, cmdLine.Environment))
                    .ToArray();
                var scriptLog = GetScriptLog(mongoUrlBuilder, cmdLine).ToArray();
                bool wasAborted = synchronizer.Synchronize(scriptLog, sourceScripts);
                if (wasAborted)
                {
                    System.Console.Out.WriteLine("Aborting...");
                    Environment.Exit(0);
                }
            }
            finally
            {
                client.GetServer().Disconnect();
            }
        }