private static async Task SetupApplication(SetupInfo info = null) { var watch = new Stopwatch(); // Depends will be either, ALL setup operations if info is null, or all the operations info depends on var depends = _operations; if (info != null) { depends = depends.Where(x => info.Depends.Any() && info.Depends.Contains(x.Name)); } foreach (var depend in depends) { await SetupApplication(depend).ConfigureAwait(false); } if (info == null || info.Operation.Done) { return; } Logger.Info("**************************************************************"); Logger.Info(" Running setup operation {0}.{1}", info.Category, info.Name); Logger.Info("**************************************************************"); watch.Start(); if (!await info.Operation.Initialize().ConfigureAwait(false)) { Logger.Info("ERROR - Failed to complete setup operation!"); Environment.Exit(1); } watch.Stop(); Logger.Info("**************************************************************"); Logger.Info(" Finished operation {0}.{1} in {2}!", info.Category, info.Name, watch.Elapsed); Logger.Info("**************************************************************"); }
private static async Task SetupApplication(SetupInfo info = null) { var watch = new Stopwatch(); // Depends will be either, ALL setup operations if info is null, or all the operations info depends on var depends = _operations; if (info != null) depends = depends.Where(x => info.Depends.Any() && info.Depends.Contains(x.Name)); foreach (var depend in depends) await SetupApplication(depend).ConfigureAwait(false); if (info == null || info.Operation.Done) return; Logger.Info("**************************************************************"); Logger.Info(" Running setup operation {0}.{1}", info.Category, info.Name); Logger.Info("**************************************************************"); watch.Start(); if (!await info.Operation.Initialize().ConfigureAwait(false)) { Logger.Info("ERROR - Failed to complete setup operation!"); Environment.Exit(1); } watch.Stop(); Logger.Info("**************************************************************"); Logger.Info(" Finished operation {0}.{1} in {2}!", info.Category, info.Name, watch.Elapsed); Logger.Info("**************************************************************"); }