public bool LoadOrBuild(IExternalResource resource) { if (failedResources.Contains(resource)) { return(false); } if (resource.Exists && IsUpToDate(resource)) { Verbose("Resource '{0}' is up-to-date.", resource); if (!resource.Load(Logging)) { failedResources.Add(resource); Verbose("Failed to load '{0}'.", resource); return(false); } } else { if (!resource.Exists) { Verbose("Resource '{0}' does not exist.", resource); } Verbose("Started building resource '{0}' ...", resource); foreach (var source in resource.Sources) { if (!LoadOrBuild(source)) { return(false); } } buildStack.Push(resource); try { if (!resource.Rebuild(Logging)) { failedResources.Add(resource); Verbose("Failed to build {0}.", resource); return(false); } } finally { buildStack.Pop(); } Verbose("Done building resource '{0}'", resource); } return(true); }
public PecaStarterModel(string title, IExternalResource externalResource) { Title = title; m_externalResource = externalResource; var tuple = GetYellowPagesLists(); m_externalYellowPagesList = tuple.Item2; YellowPagesList = tuple.Item1; var dao = new ConfigurationDao(externalResource); pluginsModel = new PluginsModel(dao, externalResource.GetPlugins()); Configuration = dao.Get(); Configuration.DefaultLogPath = externalResource.DefaultLogPath; BroadcastModel = new BroadcastModel(Configuration, m_externalYellowPagesList, pluginsModel.Plugins); }
private bool IsUpToDate(IExternalResource resource) { bool result = resource.Sources.All(src => src.Timestamp <= resource.Timestamp); if (!result) { Verbose("'{0}' is older than source.", resource); } else { result = resource.Sources.All(IsUpToDate); if (!result) { Verbose("Some of '{0}' dependencies are not up-to-date.", resource); } } return(result); }
public ConfigurationDao(IExternalResource externalResource) { m_externalResource = externalResource; }
public bool CanLoadOrBuild(IExternalResource resource) { return(!buildStack.Contains(resource) && resource.Sources.All(CanLoadOrBuild)); }
private string GetFrame(IExternalResource frame) { return($"ExtResource( {Factory.ExternalResources.GetId(frame)} )"); }