Exemplo n.º 1
0
        private static IEnumerable <SubPart> ReadSubParts(XElement node, string repository)
        {
            var subParts = node.Elements().Where(e => e.Name.LocalName.Equals("SubPart", StringComparison.OrdinalIgnoreCase));

            foreach (var subPart in subParts)
            {
                var sName = subPart.Attribute("PartName")?.Value;
                if (string.IsNullOrEmpty(sName))
                {
                    continue;
                }

                var sp = new SubPart()
                {
                    Name       = sName,
                    Repository = subPart.Attribute("Repository")?.Value,
                    PartFile   = subPart.Attribute("PartFile")?.Value,
                };

                if (!string.IsNullOrEmpty(sp.PartFile) && string.IsNullOrEmpty(sp.Repository))
                {
                    sp.Repository = repository;
                }

                yield return(sp);
            }
        }
Exemplo n.º 2
0
        private PartExplorerElementVM LoadExternalSubpartVM(Queue <Tuple <PartExplorerElementVM, SubPart> > externalSubparts, SubPart sp, ExternalPartFile externalPartFile, string srcDir, BuildFromSource bfs, CompiledBuildStrategy strategy)
        {
            PartExplorerElementVM subPartVM;

            if (externalPartFile.LoadedParts.TryGetValue(sp.Name, out subPartVM))
            {
                return(subPartVM);
            }

            Part newSubPart = null;

            if (sp.IsProduct)
            {
                newSubPart = externalPartFile.File.Products.FirstOrDefault(p => string.Equals(p.Name, sp.Name, StringComparison.OrdinalIgnoreCase));
            }
            else
            {
                newSubPart = externalPartFile.File.Parts.FirstOrDefault(p => string.Equals(p.Name, sp.Name, StringComparison.OrdinalIgnoreCase));
            }

            if (newSubPart == null)
            {
                log.Warn($"Failed to find part {sp.Name} in partfile {sp.PartFile}");
                newSubPart = new Part()
                {
                    Name = sp.Name
                };                                          //use a dummy instead
            }

            subPartVM = new PartExplorerElementVM(_configuration)
            {
                Name       = sp.Name,
                Repository = externalPartFile.Key.Repository,
                PartFile   = externalPartFile.Key.Name,
                MakeFile   = newSubPart.MakeFile,
                FromSource = bfs,
            };

            subPartVM.PartType = DeterminePartType(subPartVM, sp.IsProduct, externalPartFile.File.Directory, srcDir);

            externalPartFile.LoadedParts.Add(sp.Name, subPartVM);

            if (newSubPart != null)
            {
                AddChildVMs(externalSubparts, externalPartFile, subPartVM, newSubPart, srcDir, strategy);
            }

            return(subPartVM);
        }