コード例 #1
0
 private static void AnalyseReferences(AnalyzedProjectInfo project)
 {
     if (project.Info.IsLibrary())
     {
         AnalyseLibraryReferences(project);
     }
 }
コード例 #2
0
 public HostGraphNode(AnalyzedProjectInfo projectInfo)
 {
     this.ProjectInfo = projectInfo;
     this.Type        = projectInfo.Info.IsAddOn() ? HostGraphNodeType.AddOn : HostGraphNodeType.Library;
     this.Children    = new List <HostGraphNode>();
     this.Parents     = new List <HostGraphNode>();
 }
コード例 #3
0
        public AddOn(AnalyzedProjectInfo projectInfo)
        {
            this.name = projectInfo.Info.Name;

            this.codeFiles = new List <CodeFile>();
            if (!projectInfo.RefersTo.Any(pi => pi.Info.ProjectType.Equals(ProjectType.CsLuaAddOn)))
            {
                this.codeFiles.Add(CsLuaMetaReader.GetMetaFile());
            }

            var projectPath = projectInfo.Info.ProjectPath;

            foreach (var hostedProject in projectInfo.HostOf)
            {
                this.codeFiles.AddRange(LuaFileWriter.GetLuaFiles(hostedProject.Namespaces, hostedProject.Info.Name, false, hostedProject.Info.ProjectPath));
            }

            var xmlFile = GetXmlCodeFile(projectPath, this.name);

            if (xmlFile != null)
            {
                this.codeFiles.Add(xmlFile);
            }

            this.codeFiles.AddRange(LuaFileWriter.GetLuaFiles(projectInfo.Namespaces, this.Name, false, projectPath));

            this.resourceFiles = GetResourceFiles(projectPath);

            var tocBuilder = new TocBuilder(this.codeFiles, projectInfo.Info.CsLuaAddOnAttribute);

            this.tocFile = new CodeFile {
                FileName = this.name + ".toc", Content = tocBuilder.Build()
            };
        }
コード例 #4
0
        private static void AnalyseLibraryReferences(AnalyzedProjectInfo project)
        {
            var nodes = new List <HostGraphNode>();

            CreateHostGraph(project, nodes);
            RemoveAddOnsThatAreNotNearestHostCandidates(nodes);
            project.SetHosts(nodes.Where(FittingAddOnHost)
                             .Select(hostNode => hostNode.ProjectInfo).ToList());
        }
コード例 #5
0
        public IDeployableAddOn StructureAddOn(AnalyzedProjectInfo project)
        {
            switch (project.Info.ProjectType)
            {
            case ProjectType.CsLuaAddOn:
                return(new AddOn(project));

            case ProjectType.LuaAddOn:
                return(new LuaAddOn(project.Info.Name, project.Info.ProjectPath));

            default:
                return(null);
            }
        }
コード例 #6
0
        private static HostGraphNode CreateHostGraph(AnalyzedProjectInfo project, List <HostGraphNode> nodes)
        {
            var node = new HostGraphNode(project);

            nodes.Add(node);

            (project.Referenders ?? project.RequiredAddOns).ForEach(reqProj =>
            {
                var reqNode = nodes.FirstOrDefault(n => n.ProjectInfo.Equals(reqProj)) ??
                              CreateHostGraph(reqProj, nodes);
                reqNode.Parents.Add(node);
                node.Children.Add(reqNode);
            });

            return(node);
        }