// Loads a setup from a dll file thats implements the ISetup interface private void InitializeConfiguration() { try { ISetup setup = InterfaceLoader.Get <ISetup>(); if (setup is null) { throw new Exception("Could not find external configuration"); } setup.Initialize(Configuration); } catch { Configuration = new Configuration(); } }
private static async Task <bool> RunSetup(ISetup operation, bool Depends = true) { var depends = operation.GetType().GetCustomAttributes(typeof(DependsAttribute), true).FirstOrDefault() as DependsAttribute; if (Depends && depends != null) { foreach (var depend in depends.Depends) { if (!await RunSetup(depend).ConfigureAwait(false)) { Logger.Error($"Failed to run operation {depend}"); } } } var name = operation.GetType().GetCustomAttributes(typeof(OperationAttribute), true).FirstOrDefault() as OperationAttribute; var start = DateTime.UtcNow; Logger.Info("**************************************************************"); Logger.Info($" Running operation {name.Name}"); Logger.Info("**************************************************************"); if (!await operation.Initialize().ConfigureAwait(false)) { Logger.Info("ERROR - Failed to seed entities!"); return(false); } Logger.Info("**************************************************************"); Logger.Info($" Finished operation {name.Name} in {DateTime.UtcNow - start}"); Logger.Info("**************************************************************"); return(true); }