Ejemplo n.º 1
0
        void LoadElement(XmlElement node, IReadOnlyFileSystem fileSystem)
        {
            switch (node.Name)
            {
            case "Options":
                ProjectTemplateImpl.WarnObsoleteNode(node, "Options are no longer supported, use properties instead.");
                break;

            case "CreateActions":
                LoadCreateActions(node);
                break;

            case "PreCreateActions":
                LoadPreCreateActions(node);
                break;

            case "ProjectItems":
                LoadProjectItems(node);
                break;

            case "Files":
                LoadFiles(node, fileSystem);
                break;

            case "Imports":
                LoadImports(node);
                break;

            case "PropertyGroup":
                LoadPropertyGroup(node);
                break;

            case "Include":
                TemplateLoadException.AssertAttributeExists(node, "src");
                FileName includeFileName = FileName.Create(node.GetAttribute("src"));
                try {
                    XmlDocument doc = new XmlDocument();
                    using (var stream = fileSystem.OpenRead(includeFileName)) {
                        doc.Load(stream);
                    }
                    doc.DocumentElement.SetAttribute("fileName", includeFileName);
                    var fileSystemForInclude = new ReadOnlyChrootFileSystem(fileSystem, includeFileName.GetParentDirectory());
                    if (doc.DocumentElement.Name == "Include")
                    {
                        LoadElementChildren(doc.DocumentElement, fileSystemForInclude);
                    }
                    else
                    {
                        LoadElement(doc.DocumentElement, fileSystemForInclude);
                    }
                } catch (XmlException ex) {
                    throw new TemplateLoadException("Error loading include file " + includeFileName, ex);
                }
                break;

            default:
                throw new TemplateLoadException("Unknown node in <Project>: " + node.Name);
            }
        }
Ejemplo n.º 2
0
 public object BuildItem(BuildItemArgs args)
 {
     var fileSystem = GetFileSystem(args);
     var templates = new List<TemplateBase>();
     var xpt = fileSystem.GetFiles(DirectoryName.Create("."), "*.xpt", DirectorySearchOptions.IncludeSubdirectories);
     var xft = fileSystem.GetFiles(DirectoryName.Create("."), "*.xft", DirectorySearchOptions.IncludeSubdirectories);
     foreach (var fileName in xpt.Concat(xft)) {
         using (var stream = fileSystem.OpenRead(fileName)) {
             var relFileSystem = new ReadOnlyChrootFileSystem(fileSystem, fileName.GetParentDirectory());
             templates.Add(SD.Templates.LoadTemplate(stream, relFileSystem));
         }
     }
     if (templates.Count == 1)
         return templates[0];
     else
         return new MultipleItems(templates);
 }
        public object BuildItem(BuildItemArgs args)
        {
            var fileSystem = GetFileSystem(args);
            var templates  = new List <TemplateBase>();
            var xpt        = fileSystem.GetFiles(DirectoryName.Create("."), "*.xpt", DirectorySearchOptions.IncludeSubdirectories);
            var xft        = fileSystem.GetFiles(DirectoryName.Create("."), "*.xft", DirectorySearchOptions.IncludeSubdirectories);

            foreach (var fileName in xpt.Concat(xft))
            {
                using (var stream = fileSystem.OpenRead(fileName)) {
                    var relFileSystem = new ReadOnlyChrootFileSystem(fileSystem, fileName.GetParentDirectory());
                    templates.Add(SD.Templates.LoadTemplate(stream, relFileSystem));
                }
            }
            if (templates.Count == 1)
            {
                return(templates[0]);
            }
            else
            {
                return(new MultipleItems(templates));
            }
        }
Ejemplo n.º 4
0
		void LoadElement(XmlElement node, IReadOnlyFileSystem fileSystem)
		{
			switch (node.Name) {
				case "Options":
					ProjectTemplateImpl.WarnObsoleteNode(node, "Options are no longer supported, use properties instead.");
					break;
				case "CreateActions":
					LoadCreateActions(node);
					break;
				case "PreCreateActions":
					LoadPreCreateActions(node);
					break;
				case "ProjectItems":
					LoadProjectItems(node);
					break;
				case "Files":
					LoadFiles(node, fileSystem);
					break;
				case "Imports":
					LoadImports(node);
					break;
				case "PropertyGroup":
					LoadPropertyGroup(node);
					break;
				case "Include":
					TemplateLoadException.AssertAttributeExists(node, "src");
					FileName includeFileName = FileName.Create(node.GetAttribute("src"));
					try {
						XmlDocument doc = new XmlDocument();
						using (var stream = fileSystem.OpenRead(includeFileName)) {
							doc.Load(stream);
						}
						doc.DocumentElement.SetAttribute("fileName", includeFileName);
						var fileSystemForInclude = new ReadOnlyChrootFileSystem(fileSystem, includeFileName.GetParentDirectory());
						if (doc.DocumentElement.Name == "Include") {
							LoadElementChildren(doc.DocumentElement, fileSystemForInclude);
						} else {
							LoadElement(doc.DocumentElement, fileSystemForInclude);
						}
					} catch (XmlException ex) {
						throw new TemplateLoadException("Error loading include file " + includeFileName, ex);
					}
					break;
				default:
					throw new TemplateLoadException("Unknown node in <Project>: " + node.Name);
			}
		}