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; }
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(); } }