Пример #1
0
        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);
        }
Пример #3
0
        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;
 }
Пример #5
0
 public bool CanLoadOrBuild(IExternalResource resource)
 {
     return(!buildStack.Contains(resource) &&
            resource.Sources.All(CanLoadOrBuild));
 }
 private string GetFrame(IExternalResource frame)
 {
     return($"ExtResource( {Factory.ExternalResources.GetId(frame)} )");
 }