From 353006b90b9193c99036667d115b0e2b952c4b3e Mon Sep 17 00:00:00 2001 From: Zontreck Date: Wed, 20 Sep 2023 01:54:40 -0700 Subject: [PATCH] Add a initialization command to prebuild --- bootstrap/prebuild.dll | Bin 221184 -> 229376 bytes source/Prebuild/Core/Kernel.cs | 76 +++++++- source/Prebuild/Core/Nodes/AuthorNode.cs | 11 +- source/Prebuild/Core/Nodes/CleanFilesNode.cs | 13 +- source/Prebuild/Core/Nodes/CleanupNode.cs | 10 + .../Prebuild/Core/Nodes/ConfigurationNode.cs | 14 +- source/Prebuild/Core/Nodes/DataNode.cs | 11 ++ .../Core/Nodes/DatabaseProjectNode.cs | 26 ++- .../Core/Nodes/DatabaseReferenceNode.cs | 82 ++++++++- source/Prebuild/Core/Nodes/DescriptionNode.cs | 10 +- source/Prebuild/Core/Nodes/ExcludeNode.cs | 18 +- source/Prebuild/Core/Nodes/FileNode.cs | 29 ++- source/Prebuild/Core/Nodes/FilesNode.cs | 172 +++++++++++------- source/Prebuild/Core/Nodes/InternalsNode.cs | 10 +- source/Prebuild/Core/Nodes/MatchNode.cs | 60 ++++-- source/Prebuild/Core/Nodes/MauiNode.cs | 10 +- source/Prebuild/Core/Nodes/MauiTitle.cs | 9 +- source/Prebuild/Core/Nodes/NullableNode.cs | 6 + source/Prebuild/Core/Nodes/OptionsNode.cs | 61 ++++--- .../Core/Nodes/PackageReferenceNode.cs | 16 +- source/Prebuild/Core/Nodes/ProcessNode.cs | 12 +- source/Prebuild/Core/Nodes/ProjectNode.cs | 129 ++++++++++--- .../Core/Nodes/ProjectReferenceNode.cs | 13 +- source/Prebuild/Core/Nodes/ReferenceNode.cs | 18 +- .../Prebuild/Core/Nodes/ReferencePathNode.cs | 10 +- source/Prebuild/Core/Nodes/SolutionNode.cs | 53 +++++- source/Prebuild/Core/Nodes/TextGenNode.cs | 32 +++- source/Prebuild/Core/Parse/IfContext.cs | 2 +- .../Prebuild/Core/Targets/AutotoolsTarget.cs | 12 +- source/Prebuild/Prebuild.cs | 1 + 30 files changed, 731 insertions(+), 195 deletions(-) diff --git a/bootstrap/prebuild.dll b/bootstrap/prebuild.dll index 45d3fbccc4058bbbb0a0c3c8e23493fa0f934ddb..3ef9a4422d2f374c44cc426d215b3e07697897fd 100644 GIT binary patch literal 229376 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

Tn0sTY$uEOCB`rV^GhqaD$8PPkX}A@@D$jH%_A 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뮄`lyO-!L@zlvE#YH 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 LG)mzAtpxrT#`5U2 diff --git a/source/Prebuild/Core/Kernel.cs b/source/Prebuild/Core/Kernel.cs index af9de07..b1b6ad1 100644 --- a/source/Prebuild/Core/Kernel.cs +++ b/source/Prebuild/Core/Kernel.cs @@ -42,10 +42,12 @@ POSSIBILITY OF SUCH DAMAGE. using System; using System.Collections.Generic; +using System.ComponentModel; using System.IO; using System.Reflection; using System.Xml; using System.Xml.Schema; +using System.Xml.Serialization; using Prebuild.Core.Attributes; using Prebuild.Core.Interfaces; using Prebuild.Core.Nodes; @@ -94,10 +96,10 @@ public class Kernel : IDisposable private readonly Dictionary m_Nodes = new(); - private string m_Target; + private string m_Target = "vs2022"; private bool cmdlineTargetFramework; private FrameworkVersion m_TargetFramework; //Overrides all project settings - public string ForcedConditionals { get; private set; } + public string ForcedConditionals { get; internal set; } private string m_Clean; private string[] m_RemoveDirectories; @@ -113,7 +115,7 @@ public class Kernel : IDisposable /// Gets a value indicating whether [pause after finish]. /// /// true if [pause after finish]; otherwise, false. - public bool PauseAfterFinish { get; private set; } + public bool PauseAfterFinish { get; internal set; } ///

/// Gets the instance. @@ -132,7 +134,7 @@ public class Kernel : IDisposable /// Gets the command line. /// /// The command line. - public CommandLineCollection CommandLine { get; private set; } + public CommandLineCollection CommandLine { get; internal set; } /// /// Gets the targets. @@ -144,13 +146,13 @@ public class Kernel : IDisposable /// Gets the log. /// /// The log. - public Log Log { get; private set; } + public Log Log { get; internal set; } /// /// Gets the current working directory. /// /// The current working directory. - public CurrentDirectory CurrentWorkingDirectory { get; private set; } + public CurrentDirectory CurrentWorkingDirectory { get; internal set; } /// /// Gets the solutions. @@ -163,7 +165,7 @@ public class Kernel : IDisposable /// being processed /// /// The XmlDocument object - public XmlDocument CurrentDoc { get; private set; } + public XmlDocument CurrentDoc { get; internal set; } #endregion @@ -270,7 +272,8 @@ public class Kernel : IDisposable Log.Write("John Hurliman (john.hurliman@intel.com),"); Log.Write("WhiteCore build 2015 (greythane@gmail.com),"); Log.Write("OpenSimulator build 2017 Ubit Umarov,"); - Log.Write(""); + Log.Write("Aria's Creations 2023 - Tara Piccari"); + Log.Write(); Log.Write("See 'prebuild /usage' for help"); Log.Write(); } @@ -646,6 +649,63 @@ public class Kernel : IDisposable var file = "./prebuild.xml"; if (CommandLine.WasPassed("file")) file = CommandLine["file"]; + if(CommandLine.WasPassed("init")) + { + Log.Write("Initializing a skeleton Prebuild.xml file"); + // Initialize a new Prebuild file + // Write out a dummy file with a Solution that consists of a dummy project. + + XmlDocument doc = new XmlDocument(); + XmlElement elem = doc.CreateElement("Prebuild"); + + var ver = doc.CreateAttribute("version"); + ver.InnerText = "1.10"; + elem.Attributes.Append(ver); + + var ns = doc.CreateAttribute("xmlns"); + ns.InnerText = "http://dnpb.sourceforge.net/schemas/prebuild-1.10.xsd"; + elem.Attributes.Append(ns); + + doc.AppendChild(elem); + + SolutionNode sol = new SolutionNode(); + sol.Name = "Example"; + sol.Version = "1.0"; + sol.DefaultFramework = FrameworkVersion.net7_0; + + ProjectNode proj = new ProjectNode(); + proj.Name = "Hello World"; + proj.Path = "source/example"; + var Opts = new OptionsNode(); + Opts.OutputPath = "../../bin/"; + + ConfigurationNode debug = new ConfigurationNode(); + debug.Name = "Debug"; + debug.Options = Opts; + + ConfigurationNode release = new ConfigurationNode(); + release.Name = "Release"; + release.Options = Opts; + + proj.ConfigurationsTable.Add("Debug", debug); + proj.ConfigurationsTable.Add("Release", release); + + + + sol.ProjectsTable.Add(proj.Name, proj); + + sol.Write(doc, elem); + + + using (FileStream fs = new FileStream(file, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) + { + doc.Save(fs); + } + + Log.Write("Initialization completed"); + return; + } + ProcessFile(file); var target = m_Target != null ? m_Target.ToLower() : m_Clean.ToLower(); diff --git a/source/Prebuild/Core/Nodes/AuthorNode.cs b/source/Prebuild/Core/Nodes/AuthorNode.cs index 5fc8ca3..7739c10 100644 --- a/source/Prebuild/Core/Nodes/AuthorNode.cs +++ b/source/Prebuild/Core/Nodes/AuthorNode.cs @@ -27,6 +27,7 @@ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O using System; using System.Xml; +using System.Xml.Linq; using Prebuild.Core.Attributes; using Prebuild.Core.Utilities; @@ -47,7 +48,7 @@ public class AuthorNode : DataNode /// Gets the signature. /// /// The signature. - public string Signature { get; private set; } + public string Signature { get; internal set; } #endregion @@ -67,5 +68,13 @@ public class AuthorNode : DataNode Signature = Signature.Trim(); } + public override void Write(XmlDocument doc, XmlElement current) + { + + XmlElement elem = doc.CreateElement("Author"); + elem.InnerText = Signature; + current.AppendChild(elem); + } + #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/CleanFilesNode.cs b/source/Prebuild/Core/Nodes/CleanFilesNode.cs index 6e3100b..e84bf9b 100644 --- a/source/Prebuild/Core/Nodes/CleanFilesNode.cs +++ b/source/Prebuild/Core/Nodes/CleanFilesNode.cs @@ -45,7 +45,7 @@ public class CleanFilesNode : DataNode /// Gets the signature. /// /// The signature. - public string Pattern { get; private set; } + public string Pattern { get; internal set; } #endregion @@ -60,9 +60,18 @@ public class CleanFilesNode : DataNode if (node == null) throw new ArgumentNullException("node"); Pattern = Helper.AttributeValue(node, "pattern", string.Empty); - ; + Pattern = Pattern.Trim(); } + + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement Clean = doc.CreateElement("CleanFiles"); + Clean.InnerText = Pattern; + + current.AppendChild (Clean); + } + #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/CleanupNode.cs b/source/Prebuild/Core/Nodes/CleanupNode.cs index 294dfe1..676cae2 100644 --- a/source/Prebuild/Core/Nodes/CleanupNode.cs +++ b/source/Prebuild/Core/Nodes/CleanupNode.cs @@ -66,5 +66,15 @@ public class CleanupNode : DataNode } } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement main = doc.CreateElement("Cleanup"); + foreach(CleanFilesNode n in CleanFiles) + { + n.Write(doc, main); + } + current.AppendChild(main); + } + #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/ConfigurationNode.cs b/source/Prebuild/Core/Nodes/ConfigurationNode.cs index b6753c7..5c2390d 100644 --- a/source/Prebuild/Core/Nodes/ConfigurationNode.cs +++ b/source/Prebuild/Core/Nodes/ConfigurationNode.cs @@ -133,7 +133,7 @@ public class ConfigurationNode : DataNode, ICloneable, IComparable /// Gets the name. /// /// The name. - public string Name { get; private set; } = "unknown"; + public string Name { get; internal set; } = "unknown"; /// /// Gets the name and platform for the configuration. @@ -187,5 +187,17 @@ public class ConfigurationNode : DataNode, ICloneable, IComparable Options.CopyTo(conf.Options); } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement main = doc.CreateElement("Configuration"); + main.SetAttribute("name", Name); + main.SetAttribute("platform", Platform); + + + Options.Write(doc, main); + + current.AppendChild(main); + } + #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/DataNode.cs b/source/Prebuild/Core/Nodes/DataNode.cs index e4d16fc..b97d2f6 100644 --- a/source/Prebuild/Core/Nodes/DataNode.cs +++ b/source/Prebuild/Core/Nodes/DataNode.cs @@ -27,6 +27,7 @@ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O using System.IO; using System.Xml; +using System.Xml.Serialization; using Prebuild.Core.Interfaces; namespace Prebuild.Core.Nodes; @@ -57,6 +58,16 @@ public abstract class DataNode : IDataNode { } + /// + /// Serializes to the specified node + /// + /// The document + /// The current node + public virtual void Write(XmlDocument doc, XmlElement current) { + + } + + public BuildAction GetBuildActionByFileName(string fileName) { var extension = Path.GetExtension(fileName).ToLower(); diff --git a/source/Prebuild/Core/Nodes/DatabaseProjectNode.cs b/source/Prebuild/Core/Nodes/DatabaseProjectNode.cs index 7ae6a01..f7d889a 100644 --- a/source/Prebuild/Core/Nodes/DatabaseProjectNode.cs +++ b/source/Prebuild/Core/Nodes/DatabaseProjectNode.cs @@ -14,11 +14,11 @@ public class DatabaseProjectNode : DataNode public Guid Guid { get; } = Guid.NewGuid(); - public string Name { get; private set; } + public string Name { get; internal set; } - public string Path { get; private set; } + public string Path { get; internal set; } - public string FullPath { get; private set; } + public string FullPath { get; internal set; } public IEnumerable References => references; @@ -64,4 +64,24 @@ public class DatabaseProjectNode : DataNode base.Parse(node); } + + public override void Write(XmlDocument doc, XmlElement current) + { + + XmlElement main = doc.CreateElement("DatabaseProject"); + main.SetAttribute("name", Name); + main.SetAttribute("path", Path); + + + foreach(AuthorNode author in authors) + { + author.Write(doc, main); + } + foreach(DatabaseReferenceNode databaseReference in references) + { + databaseReference.Write(doc, main); + } + + current.AppendChild(main); + } } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/DatabaseReferenceNode.cs b/source/Prebuild/Core/Nodes/DatabaseReferenceNode.cs index a61c0db..9a823a2 100644 --- a/source/Prebuild/Core/Nodes/DatabaseReferenceNode.cs +++ b/source/Prebuild/Core/Nodes/DatabaseReferenceNode.cs @@ -8,11 +8,11 @@ namespace Prebuild.Core.Nodes; [DataNode("DatabaseReference")] public class DatabaseReferenceNode : DataNode { - public string Name { get; private set; } + public string Name { get; internal set; } - public Guid ProviderId { get; private set; } + public Guid ProviderId { get; internal set; } - public string ConnectionString { get; private set; } + public string ConnectionString { get; internal set; } public override void Parse(XmlNode node) { @@ -25,19 +25,19 @@ public class DatabaseReferenceNode : DataNode // digitaljeebus: pulled from HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\DataProviders\* // Not sure if these will help other operating systems, or if there's a better way. case "Microsoft.SqlServerCe.Client.3.5": - ProviderId = new Guid("7C602B5B-ACCB-4acd-9DC0-CA66388C1533"); + ProviderId = new Guid(DatabaseProviders.SqlServerCe35); break; case "System.Data.OleDb": - ProviderId = new Guid("7F041D59-D76A-44ed-9AA2-FBF6B0548B80"); + ProviderId = new Guid(DatabaseProviders.OleDb); break; case "System.Data.OracleClient": - ProviderId = new Guid("8F5C5018-AE09-42cf-B2CC-2CCCC7CFC2BB"); + ProviderId = new Guid(DatabaseProviders.OracleClient); break; case "System.Data.SqlClient": - ProviderId = new Guid("91510608-8809-4020-8897-FBA057E22D54"); + ProviderId = new Guid(DatabaseProviders.SqlClient); break; case "System.Data.Odbc": - ProviderId = new Guid("C3D4F4CE-2C48-4381-B4D6-34FA50C51C86"); + ProviderId = new Guid(DatabaseProviders.Odbc); break; default: @@ -51,4 +51,70 @@ public class DatabaseReferenceNode : DataNode base.Parse(node); } + + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement main = doc.CreateElement("DatabaseReference"); + main.SetAttribute("name", Name); + + string provider = ""; + string providerId = ""; + + + switch (ProviderId.ToString()) + { + case DatabaseProviders.Odbc: + { + provider = "System.Data.Odbc"; + break; + } + case DatabaseProviders.OracleClient: + { + provider = "System.Data.OracleClient"; + break; + } + case DatabaseProviders.SqlClient: + { + provider = "System.Data.SqlClient"; + break; + } + case DatabaseProviders.OleDb: + { + provider = "System.Data.OleDb"; + break; + } + case DatabaseProviders.SqlServerCe35: + { + provider = "Microsoft.SqlServerCe.Client.3.5"; + break; + } + default: + { + providerId = ProviderId.ToString(); + provider = null; + break; + } + } + if(provider!= null) + main.SetAttribute("providerName", provider); + else + { + main.SetAttribute("providerId", providerId); + } + + var conn = doc.CreateAttribute("connectionString"); + conn.InnerText = ConnectionString; + main.Attributes.Append(conn); + + current.AppendChild(main); + } +} + +public class DatabaseProviders +{ + public const string SqlServerCe35 = ("7C602B5B-ACCB-4acd-9DC0-CA66388C1533"); + public const string OleDb = ("7F041D59-D76A-44ed-9AA2-FBF6B0548B80"); + public const string OracleClient = ("8F5C5018-AE09-42cf-B2CC-2CCCC7CFC2BB"); + public const string SqlClient = ("91510608-8809-4020-8897-FBA057E22D54"); + public const string Odbc = ("C3D4F4CE-2C48-4381-B4D6-34FA50C51C86"); } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/DescriptionNode.cs b/source/Prebuild/Core/Nodes/DescriptionNode.cs index 616beb1..66d6a8e 100644 --- a/source/Prebuild/Core/Nodes/DescriptionNode.cs +++ b/source/Prebuild/Core/Nodes/DescriptionNode.cs @@ -48,7 +48,7 @@ public class DescriptionNode : DataNode /// Gets the description Value. /// /// The description Value. - public string Value { get; private set; } + public string Value { get; internal set; } #endregion @@ -68,5 +68,13 @@ public class DescriptionNode : DataNode Value = Value.Trim(); } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement main = doc.CreateElement("Description"); + main.InnerText = Value; + + current.AppendChild(main); + } + #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/ExcludeNode.cs b/source/Prebuild/Core/Nodes/ExcludeNode.cs index 0a27214..90d5f54 100644 --- a/source/Prebuild/Core/Nodes/ExcludeNode.cs +++ b/source/Prebuild/Core/Nodes/ExcludeNode.cs @@ -49,7 +49,18 @@ public class ExcludeNode : DataNode public override void Parse(XmlNode node) { Name = Helper.AttributeValue(node, "name", Name); - Name = Helper.AttributeValue(node, "pattern", Name); + Pattern = Helper.AttributeValue(node, "pattern", Pattern); + } + + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement main = doc.CreateElement("Exclude"); + if(Name != null && Name!= "") + main.SetAttribute("name", Name); + else + main.SetAttribute("pattern", Pattern); + + current.AppendChild(main); } #endregion @@ -60,13 +71,14 @@ public class ExcludeNode : DataNode /// Gets the name. /// /// The name. - public string Name { get; private set; } = ""; + public string Name { get; internal set; } = ""; /// /// Gets the pattern. /// /// The pattern. - public string Pattern => Name; + public string Pattern { get; internal set; } = ""; + #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/FileNode.cs b/source/Prebuild/Core/Nodes/FileNode.cs index b761b78..0f98a8d 100644 --- a/source/Prebuild/Core/Nodes/FileNode.cs +++ b/source/Prebuild/Core/Nodes/FileNode.cs @@ -155,6 +155,21 @@ public class FileNode : DataNode } } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement main = doc.CreateElement("File"); + main.SetAttribute("buildAction", BuildAction.ToString()); + main.SetAttribute("subType", SubType.ToString()); + main.SetAttribute("resourceName", ResourceName); + main.SetAttribute("link", IsLink ? bool.TrueString : bool.FalseString); + main.SetAttribute("linkPath", LinkPath); + main.SetAttribute("copyToOutput", CopyToOutput.ToString()); + main.SetAttribute("preservePath", PreservePath ? bool.TrueString : bool.FalseString); + main.InnerText = Path; + + current.AppendChild(main); + } + #endregion #region Fields @@ -168,11 +183,11 @@ public class FileNode : DataNode /// /// - public string Path { get; private set; } + public string Path { get; internal set; } /// /// - public string ResourceName { get; private set; } = ""; + public string ResourceName { get; internal set; } = ""; /// /// @@ -186,11 +201,11 @@ public class FileNode : DataNode } } - public CopyToOutput CopyToOutput { get; private set; } = CopyToOutput.Never; + public CopyToOutput CopyToOutput { get; internal set; } = CopyToOutput.Never; - public bool IsLink { get; private set; } + public bool IsLink { get; internal set; } - public string LinkPath { get; private set; } = string.Empty; + public string LinkPath { get; internal set; } = string.Empty; /// /// @@ -206,13 +221,13 @@ public class FileNode : DataNode /// /// - public bool IsValid { get; private set; } + public bool IsValid { get; internal set; } /// /// /// /// - public bool PreservePath { get; private set; } + public bool PreservePath { get; internal set; } #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/FilesNode.cs b/source/Prebuild/Core/Nodes/FilesNode.cs index 5176bf2..456a33c 100644 --- a/source/Prebuild/Core/Nodes/FilesNode.cs +++ b/source/Prebuild/Core/Nodes/FilesNode.cs @@ -40,16 +40,9 @@ public class FilesNode : DataNode { #region Fields - private readonly List m_Files = new(); - private readonly Dictionary m_BuildActions = new(); - private readonly Dictionary m_SubTypes = new(); - private readonly Dictionary m_ResourceNames = new(); - private readonly Dictionary m_CopyToOutputs = new(); - private readonly Dictionary m_Links = new(); - private readonly Dictionary m_LinkPaths = new(); - private readonly Dictionary m_PreservePaths = new(); - private readonly Dictionary m_DestinationPath = new(); - private readonly NameValueCollection m_CopyFiles = new(); + + private readonly Dictionary m_Files = new(); + private readonly Dictionary m_Matches = new(); #endregion @@ -57,9 +50,37 @@ public class FilesNode : DataNode public int Count => m_Files.Count; - public string[] Destinations => m_CopyFiles.AllKeys; + public int CopyFiles + { + get + { + int cur = 0; + foreach (var item in m_Files) + { + if(item.Value.BuildAction == BuildAction.Copy) cur++; + } + foreach(var item in m_Matches) + { + if(item.Value.BuildAction == BuildAction.Copy) cur++; + } - public int CopyFiles => m_CopyFiles.Count; + return cur; + } + } + + public string[] Destinations + { + get + { + List dests = new(); + foreach(var item in m_Matches) + { + dests.Add(item.Value.DestinationPath); + } + + return dests.ToArray(); + } + } #endregion @@ -67,64 +88,84 @@ public class FilesNode : DataNode public BuildAction GetBuildAction(string file) { - if (!m_BuildActions.ContainsKey(file)) return BuildAction.Compile; - - return m_BuildActions[file]; + if(m_Files.ContainsKey(file)) + { + return m_Files[file].BuildAction; + } + if(m_Matches.ContainsKey(file)) + { + return (BuildAction)m_Matches[file].BuildAction; + } + return BuildAction.Compile; } public string GetDestinationPath(string file) { - if (!m_DestinationPath.ContainsKey(file)) return null; - return m_DestinationPath[file]; + if (!m_Matches.ContainsKey(file)) return null; + return m_Matches[file].DestinationPath; } public string[] SourceFiles(string dest) { - return m_CopyFiles.GetValues(dest); + List files = new(); + foreach(MatchNode node in m_Matches.Values) + { + if (node.DestinationPath.Equals(dest)) + { + files.AddRange(node.Files); + } + } + return files.ToArray(); } public CopyToOutput GetCopyToOutput(string file) { - if (!m_CopyToOutputs.ContainsKey(file)) return CopyToOutput.Never; - return m_CopyToOutputs[file]; + if (m_Files.ContainsKey(file)) return m_Files[file].CopyToOutput; + if(m_Matches.ContainsKey(file))return m_Matches[file].CopyToOutput; + return CopyToOutput.Never; } public bool GetIsLink(string file) { - if (!m_Links.ContainsKey(file)) return false; - return m_Links[file]; + if (m_Files.ContainsKey(file)) return m_Files[file].IsLink; + if (m_Matches.ContainsKey(file)) return m_Matches[file].IsLink; + return false; } public bool Contains(string file) { - return m_Files.Contains(file); + return m_Files.ContainsKey(file) || m_Matches.ContainsKey(file); } public string GetLinkPath(string file) { - if (!m_LinkPaths.ContainsKey(file)) return string.Empty; - return m_LinkPaths[file]; + if (m_Files.ContainsKey(file)) return m_Files[file].LinkPath; + if (m_Matches.ContainsKey(file)) return m_Matches[file].LinkPath; + return string.Empty; } public SubType GetSubType(string file) { - if (!m_SubTypes.ContainsKey(file)) return SubType.Code; + if (m_Files.ContainsKey(file)) return m_Files[file].SubType; + if (m_Matches.ContainsKey(file)) return (SubType)m_Matches[file].SubType; - return m_SubTypes[file]; + return SubType.Code; } public string GetResourceName(string file) { - if (!m_ResourceNames.ContainsKey(file)) return string.Empty; + if (m_Files.ContainsKey(file)) return m_Files[file].ResourceName; + if (m_Matches.ContainsKey(file)) return m_Matches[file].ResourceName; - return m_ResourceNames[file]; + return string.Empty; } public bool GetPreservePath(string file) { - if (!m_PreservePaths.ContainsKey(file)) return false; + if (m_Files.ContainsKey(file)) return m_Files[file].PreservePath; + if (m_Matches.ContainsKey(file)) return m_Matches[file].PreservePath; - return m_PreservePaths[file]; + return false; } public override void Parse(XmlNode node) @@ -133,60 +174,51 @@ public class FilesNode : DataNode foreach (XmlNode child in node.ChildNodes) { var dataNode = Kernel.Instance.ParseNode(child, this); - if (dataNode is FileNode) + if (dataNode is FileNode fn) { - var fileNode = (FileNode)dataNode; - if (fileNode.IsValid) - if (!m_Files.Contains(fileNode.Path)) + if (fn.IsValid) + if (!m_Files.ContainsKey(fn.Path)) { - m_Files.Add(fileNode.Path); - m_BuildActions[fileNode.Path] = fileNode.BuildAction; - m_SubTypes[fileNode.Path] = fileNode.SubType; - m_ResourceNames[fileNode.Path] = fileNode.ResourceName; - m_PreservePaths[fileNode.Path] = fileNode.PreservePath; - m_Links[fileNode.Path] = fileNode.IsLink; - m_LinkPaths[fileNode.Path] = fileNode.LinkPath; - m_CopyToOutputs[fileNode.Path] = fileNode.CopyToOutput; + m_Files.Add(fn.Path, fn); } } - else if (dataNode is MatchNode) + else if (dataNode is MatchNode mn) { - foreach (var file in ((MatchNode)dataNode).Files) + foreach (var file in mn.Files) { - var matchNode = (MatchNode)dataNode; - if (!m_Files.Contains(file)) - { - m_Files.Add(file); - if (matchNode.BuildAction == null) - m_BuildActions[file] = GetBuildActionByFileName(file); - else - m_BuildActions[file] = matchNode.BuildAction.Value; - - if (matchNode.BuildAction == BuildAction.Copy) - { - m_CopyFiles.Add(matchNode.DestinationPath, file); - m_DestinationPath[file] = matchNode.DestinationPath; - } - - m_SubTypes[file] = matchNode.SubType == null - ? GetSubTypeByFileName(file) - : matchNode.SubType.Value; - m_ResourceNames[file] = matchNode.ResourceName; - m_PreservePaths[file] = matchNode.PreservePath; - m_Links[file] = matchNode.IsLink; - m_LinkPaths[file] = matchNode.LinkPath; - m_CopyToOutputs[file] = matchNode.CopyToOutput; - } + m_Matches.Add(file, mn); + } } } } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement main = doc.CreateElement("Files"); + foreach(FileNode fi in m_Files.Values) + { + fi.Write(doc, main); + } + + foreach(MatchNode mn in m_Matches.Values) + { + mn.Write(doc, main); + } + + + current.AppendChild(main); + } + // TODO: Check in to why StringCollection's enumerator doesn't implement // IEnumerator? public IEnumerator GetEnumerator() { - return m_Files.GetEnumerator(); + List concat = new(); + concat.AddRange(m_Files.Keys); + concat.AddRange(m_Matches.Keys); + + return concat.GetEnumerator(); } #endregion diff --git a/source/Prebuild/Core/Nodes/InternalsNode.cs b/source/Prebuild/Core/Nodes/InternalsNode.cs index 530d978..0d21cf7 100644 --- a/source/Prebuild/Core/Nodes/InternalsNode.cs +++ b/source/Prebuild/Core/Nodes/InternalsNode.cs @@ -12,7 +12,7 @@ namespace Prebuild.Core.Nodes [DataNode("InternalsVisibleTo")] public class InternalsNode : DataNode { - public string Name { get; private set; } + public string Name { get; internal set; } #region Methods public override void Parse(XmlNode node) @@ -20,6 +20,14 @@ namespace Prebuild.Core.Nodes base.Parse(node); Name = Helper.AttributeValue(node, "name", ""); } + + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement main = doc.CreateElement("InternalsVisibleTo"); + main.SetAttribute("name", Name); + + current.AppendChild(main); + } #endregion } } diff --git a/source/Prebuild/Core/Nodes/MatchNode.cs b/source/Prebuild/Core/Nodes/MatchNode.cs index 6020c36..46a82f5 100644 --- a/source/Prebuild/Core/Nodes/MatchNode.cs +++ b/source/Prebuild/Core/Nodes/MatchNode.cs @@ -171,12 +171,12 @@ public class MatchNode : DataNode public override void Parse(XmlNode node) { if (node == null) throw new ArgumentNullException("node"); - var path = Helper.AttributeValue(node, "path", "."); - var pattern = Helper.AttributeValue(node, "pattern", "*"); - var destination = Helper.AttributeValue(node, "destination", string.Empty); - var recurse = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "recurse", "false")); - var useRegex = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "useRegex", "false")); - var buildAction = Helper.AttributeValue(node, "buildAction", string.Empty); + path = Helper.AttributeValue(node, "path", "."); + pattern = Helper.AttributeValue(node, "pattern", "*"); + destination = Helper.AttributeValue(node, "destination", string.Empty); + recurse = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "recurse", "false")); + useRegex = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "useRegex", "false")); + buildAction = Helper.AttributeValue(node, "buildAction", string.Empty); if (buildAction != string.Empty) BuildAction = (BuildAction)Enum.Parse(typeof(BuildAction), buildAction); @@ -242,6 +242,33 @@ public class MatchNode : DataNode m_Regex = null; } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement main = doc.CreateElement("Match"); + + main.SetAttribute("path", path); + main.SetAttribute("pattern", pattern); + main.SetAttribute("destination", destination); + main.SetAttribute("recurse", recurse ? bool.TrueString : bool.FalseString); + main.SetAttribute("useRegex", useRegex ? bool.TrueString : bool.FalseString); + main.SetAttribute("buildAction", buildAction); + main.SetAttribute("resourceName", ResourceName); + main.SetAttribute("copyToOutput", CopyToOutput.ToString()); + main.SetAttribute("link", IsLink ? bool.TrueString : bool.FalseString); + main.SetAttribute("linkPath", LinkPath); + main.SetAttribute("preservePath", PreservePath ? bool.TrueString : bool.FalseString); + + + foreach(ExcludeNode exclude in m_Exclusions) + { + exclude.Write(doc, main); + } + + + + current.AppendChild(main); + } + #endregion #region Fields @@ -250,6 +277,13 @@ public class MatchNode : DataNode private Regex m_Regex; private readonly List m_Exclusions = new(); + private string path; + private string pattern; + private string destination; + private bool recurse; + private bool useRegex; + private string buildAction; + #endregion #region Properties @@ -260,25 +294,25 @@ public class MatchNode : DataNode /// /// - public BuildAction? BuildAction { get; private set; } + public BuildAction? BuildAction { get; internal set; } - public string DestinationPath { get; private set; } = ""; + public string DestinationPath { get; internal set; } = ""; /// /// public SubType? SubType { get; } - public CopyToOutput CopyToOutput { get; private set; } + public CopyToOutput CopyToOutput { get; internal set; } - public bool IsLink { get; private set; } + public bool IsLink { get; internal set; } - public string LinkPath { get; private set; } + public string LinkPath { get; internal set; } /// /// - public string ResourceName { get; private set; } = ""; + public string ResourceName { get; internal set; } = ""; - public bool PreservePath { get; private set; } + public bool PreservePath { get; internal set; } #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/MauiNode.cs b/source/Prebuild/Core/Nodes/MauiNode.cs index bf82e8d..39a2968 100644 --- a/source/Prebuild/Core/Nodes/MauiNode.cs +++ b/source/Prebuild/Core/Nodes/MauiNode.cs @@ -11,7 +11,7 @@ namespace Prebuild.Core.Nodes [DataNode("Maui")] public class MauiNode : DataNode { - public MauiTitle applicationTitle { get; private set; } = null; + public MauiTitle applicationTitle { get; internal set; } = null; public override void Parse(XmlNode node) { @@ -25,6 +25,14 @@ namespace Prebuild.Core.Nodes } } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement maui = doc.CreateElement("Maui"); + applicationTitle.Write(doc, maui); + + current.AppendChild(maui); + } + public override string ToString() { string ret = "true\n"; diff --git a/source/Prebuild/Core/Nodes/MauiTitle.cs b/source/Prebuild/Core/Nodes/MauiTitle.cs index f285b2b..198d7b3 100644 --- a/source/Prebuild/Core/Nodes/MauiTitle.cs +++ b/source/Prebuild/Core/Nodes/MauiTitle.cs @@ -11,12 +11,19 @@ namespace Prebuild.Core.Nodes [DataNode("Title")] public class MauiTitle : DataNode { - public string value { get; private set; } = string.Empty; + public string value { get; internal set; } = string.Empty; public override void Parse(XmlNode node) { value = node.InnerText; } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement main = doc.CreateElement("Title"); + main.InnerText = value; + current.AppendChild(main); + } + public override string ToString() { return $"{value}"; diff --git a/source/Prebuild/Core/Nodes/NullableNode.cs b/source/Prebuild/Core/Nodes/NullableNode.cs index cb80ced..80ee877 100644 --- a/source/Prebuild/Core/Nodes/NullableNode.cs +++ b/source/Prebuild/Core/Nodes/NullableNode.cs @@ -16,5 +16,11 @@ namespace Prebuild.Core.Nodes { base.Parse(node); } + + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement nullable = doc.CreateElement("Nullable"); + current.AppendChild(nullable); + } } } diff --git a/source/Prebuild/Core/Nodes/OptionsNode.cs b/source/Prebuild/Core/Nodes/OptionsNode.cs index 9867d4c..4ec9bc4 100644 --- a/source/Prebuild/Core/Nodes/OptionsNode.cs +++ b/source/Prebuild/Core/Nodes/OptionsNode.cs @@ -30,6 +30,7 @@ using System.Collections.Generic; using System.Reflection; using System.Text; using System.Xml; +using System.Xml.Serialization; using Prebuild.Core.Attributes; using Prebuild.Core.Utilities; @@ -73,47 +74,48 @@ public class OptionsNode : DataNode /// /// [field: OptionNode("OptimizeCode")] - public bool OptimizeCode { get; set; } + public bool OptimizeCode { get; set; } = true; /// /// [field: OptionNode("CheckUnderflowOverflow")] - public bool CheckUnderflowOverflow { get; set; } + public bool CheckUnderflowOverflow { get; set; } = true; /// /// [field: OptionNode("AllowUnsafe")] - public bool AllowUnsafe { get; set; } + public bool AllowUnsafe { get; set; } = true; /// /// [field: OptionNode("PreBuildEvent")] - public string PreBuildEvent { get; set; } + public string PreBuildEvent { get; set; } = ""; + /// /// [field: OptionNode("PostBuildEvent")] - public string PostBuildEvent { get; set; } + public string PostBuildEvent { get; set; } = ""; /// /// [field: OptionNode("PreBuildEventArgs")] - public string PreBuildEventArgs { get; set; } + public string PreBuildEventArgs { get; set; } = ""; /// /// [field: OptionNode("PostBuildEventArgs")] - public string PostBuildEventArgs { get; set; } + public string PostBuildEventArgs { get; set; } = ""; /// /// [field: OptionNode("RunPostBuildEvent")] - public string RunPostBuildEvent { get; set; } + public string RunPostBuildEvent { get; set; } = ""; /// /// [field: OptionNode("RunScript")] - public string RunScript { get; set; } + public string RunScript { get; set; } = ""; /// /// @@ -123,7 +125,7 @@ public class OptionsNode : DataNode /// /// [field: OptionNode("WarningsAsErrors")] - public bool WarningsAsErrors { get; set; } + public bool WarningsAsErrors { get; set; } = false; /// /// @@ -133,7 +135,7 @@ public class OptionsNode : DataNode /// /// [field: OptionNode("Prefer32Bit")] - public bool Prefer32Bit { get; set; } + public bool Prefer32Bit { get; set; } = false; /// /// @@ -171,12 +173,12 @@ public class OptionsNode : DataNode /// /// [field: OptionNode("GenerateDocumentation")] - public bool GenerateDocumentation { get; set; } + public bool GenerateDocumentation { get; set; } = true; /// /// [field: OptionNode("GenerateXmlDocFile")] - public bool GenerateXmlDocFile { get; set; } + public bool GenerateXmlDocFile { get; set; } = false; /// /// @@ -191,22 +193,22 @@ public class OptionsNode : DataNode /// /// [field: OptionNode("DebugInformation")] - public bool DebugInformation { get; set; } + public bool DebugInformation { get; set; } = true; /// /// [field: OptionNode("RegisterComInterop")] - public bool RegisterComInterop { get; set; } + public bool RegisterComInterop { get; set; } = true; /// /// [field: OptionNode("RemoveIntegerChecks")] - public bool RemoveIntegerChecks { get; set; } + public bool RemoveIntegerChecks { get; set; } = false; /// /// [field: OptionNode("IncrementalBuild")] - public bool IncrementalBuild { get; set; } + public bool IncrementalBuild { get; set; } = true; /// /// @@ -221,15 +223,17 @@ public class OptionsNode : DataNode /// /// [field: OptionNode("NoStdLib")] - public bool NoStdLib { get; set; } + public bool NoStdLib { get; set; } = false; [field: OptionNode("UseDependencyFile")] - public bool UseDepsFile { get; } + public bool UseDepsFile { get; } = true; - [field: OptionNode("SelfContained")] public bool SelfContained { get; } + + [field: OptionNode("SelfContained")] + public bool SelfContained { get; } = true; [field: OptionNode("UseRuntimeIdentifier")] - public bool UseRuntimeIdentifier { get; } + public bool UseRuntimeIdentifier { get; } = false; private readonly List m_FieldsDefined = new(); @@ -303,6 +307,21 @@ public class OptionsNode : DataNode SetOption(child.Name, Helper.InterpolateForEnvironmentVariables(child.InnerText)); } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement options = doc.CreateElement("Options"); + foreach(var def in m_OptionFields.Keys) + { + var E = doc.CreateElement(def); + E.InnerText = m_OptionFields[def].GetValue(this).ToString(); + + options.AppendChild(E); + } + + current.AppendChild(options); + + } + /// /// Return 'true' if the option symbol has had a value set /// diff --git a/source/Prebuild/Core/Nodes/PackageReferenceNode.cs b/source/Prebuild/Core/Nodes/PackageReferenceNode.cs index 0de442c..ce96c7d 100644 --- a/source/Prebuild/Core/Nodes/PackageReferenceNode.cs +++ b/source/Prebuild/Core/Nodes/PackageReferenceNode.cs @@ -60,6 +60,16 @@ public class PackageReferenceNode : DataNode, IComparable PrivateAssets = Helper.AttributeValue(node, "private", PrivateAssets); } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement reference = doc.CreateElement("PackageReference"); + reference.SetAttribute("name", Name); + reference.SetAttribute("version", Version); + reference.SetAttribute("private", PrivateAssets); + + current.AppendChild(reference); + } + #endregion #region Fields @@ -72,15 +82,15 @@ public class PackageReferenceNode : DataNode, IComparable /// Gets the name. /// /// The name. - public string Name { get; private set; } = "unknown"; + public string Name { get; internal set; } = "unknown"; /// /// Gets the version. /// /// The version. - public string Version { get; private set; } + public string Version { get; internal set; } - public string PrivateAssets { get; private set; } + public string PrivateAssets { get; internal set; } #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/ProcessNode.cs b/source/Prebuild/Core/Nodes/ProcessNode.cs index 4a36c2f..1e72064 100644 --- a/source/Prebuild/Core/Nodes/ProcessNode.cs +++ b/source/Prebuild/Core/Nodes/ProcessNode.cs @@ -61,6 +61,14 @@ public class ProcessNode : DataNode } } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement proc = doc.CreateElement("Process"); + proc.InnerText = Path; + + current.AppendChild(proc); + } + #endregion #region Fields @@ -73,13 +81,13 @@ public class ProcessNode : DataNode /// Gets the path. /// /// The path. - public string Path { get; private set; } + public string Path { get; internal set; } /// /// Gets a value indicating whether this instance is valid. /// /// true if this instance is valid; otherwise, false. - public bool IsValid { get; private set; } = true; + public bool IsValid { get; internal set; } = true; #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/ProjectNode.cs b/source/Prebuild/Core/Nodes/ProjectNode.cs index 52e6cc2..23090d2 100644 --- a/source/Prebuild/Core/Nodes/ProjectNode.cs +++ b/source/Prebuild/Core/Nodes/ProjectNode.cs @@ -261,6 +261,85 @@ public class ProjectNode : DataNode, IComparable } } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement proj = doc.CreateElement("Project"); + + proj.SetAttribute("name", Name); + proj.SetAttribute("path", Path); + proj.SetAttribute("filterGroups", FilterGroups); + proj.SetAttribute("version", Version); + proj.SetAttribute("icon", AppIcon); + proj.SetAttribute("appmanifest", ApplicationManifest); + proj.SetAttribute("configFile", ConfigFile); + proj.SetAttribute("designerFolder", DesignerFolder); + proj.SetAttribute("assemblyName", AssemblyName); + proj.SetAttribute("scanFiles", ScanFiles ? bool.TrueString : bool.FalseString); + proj.SetAttribute("language", Language); + proj.SetAttribute("type", Type.ToString()); + proj.SetAttribute("runtime", Runtime.ToString()); + proj.SetAttribute("frameworkVersion", m_Framework.ToString()); + proj.SetAttribute("startupObject", StartupObject); + proj.SetAttribute("rootNamespace", RootNamespace); + proj.SetAttribute("copyDependencies", CopyLocalLockFileAssemblies ? bool.TrueString : bool.FalseString); + proj.SetAttribute("guid", Guid.ToString()); + proj.SetAttribute("generateAssemblyInfoFile", GenerateAssemblyInfoFile ? bool.TrueString : bool.FalseString); + proj.SetAttribute("winforms", UseWindowsForms ? bool.TrueString : bool.FalseString); + proj.SetAttribute("debugStartParameters", DebugStartParameters); + + foreach(ConfigurationNode conf in Configurations) + { + conf.Write(doc, proj); + } + + foreach(ReferencePathNode rpn in ReferencePaths) + { + rpn.Write(doc, proj); + } + + foreach(ReferenceNode refer in References) + { + refer.Write(doc, proj); + } + + foreach(PackageReferenceNode pkg in PackageReferences) + { + pkg.Write(doc, proj); + } + + foreach(ProjectReferenceNode prj in ProjectReferences) + { + prj.Write(doc, proj); + } + + foreach(AuthorNode auth in Authors) + { + auth.Write(doc, proj); + } + + Files.Write(doc, proj); + foreach(TextGenNode gen in TextGenNodes) + { + gen.Write(doc, proj); + } + + if(MauiSettings!=null) + MauiSettings.Write(doc, proj); + if (Nullable) + { + XmlElement nu = doc.CreateElement("Nullable"); + proj.AppendChild(nu); + } + + if(InternalsVisible!=null) + InternalsVisible.Write(doc, proj); + + + + + current.AppendChild(proj); + } + #endregion #region Fields @@ -303,28 +382,28 @@ public class ProjectNode : DataNode, IComparable /// Gets the name. /// /// The name. - public string Name { get; private set; } = "unknown"; + public string Name { get; internal set; } = "unknown"; /// /// Contains settings for DotNet Maui (7.0+) /// Default is null, which indicates not to include any Maui content in the project file. /// - public MauiNode MauiSettings { get; private set; } = null; + public MauiNode MauiSettings { get; internal set; } = null; /// /// Marks the visibility for internals /// - public InternalsNode InternalsVisible { get; private set; } + public InternalsNode InternalsVisible { get; internal set; } /// /// Enables Windows forms on a dotnet project. /// - public bool UseWindowsForms { get; private set; } = false; + public bool UseWindowsForms { get; internal set; } = false; /// /// Scans the directory for files /// - public bool ScanFiles {get;private set;} = true; + public bool ScanFiles {get;internal set;} = true; /// /// The version of the .NET Framework to compile under @@ -353,18 +432,18 @@ public class ProjectNode : DataNode, IComparable /// Gets the path. /// /// The path. - public string Path { get; private set; } = ""; + public string Path { get; internal set; } = ""; /// /// Gets the filter groups. /// /// The filter groups. - public string FilterGroups { get; private set; } = ""; + public string FilterGroups { get; internal set; } = ""; /// /// Indicates project nullable attribute /// - public bool Nullable { get; private set; } = false; + public bool Nullable { get; internal set; } = false; public string NullableStr { get @@ -377,65 +456,65 @@ public class ProjectNode : DataNode, IComparable /// Gets the project's version /// /// The project's version. - public string Version { get; private set; } = ""; + public string Version { get; internal set; } = ""; /// /// Gets the full path. /// /// The full path. - public string FullPath { get; private set; } = ""; + public string FullPath { get; internal set; } = ""; /// /// Gets the name of the assembly. /// /// The name of the assembly. - public string AssemblyName { get; private set; } + public string AssemblyName { get; internal set; } /// /// Copies the local dependencies to the output on build. /// This is the same behavior as publish. /// - public bool CopyLocalLockFileAssemblies { get; private set; } + public bool CopyLocalLockFileAssemblies { get; internal set; } /// /// Gets the app icon. /// /// The app icon. - public string AppIcon { get; private set; } = ""; + public string AppIcon { get; internal set; } = ""; /// /// Gets the Application Manifest. /// /// The Application Manifest. - public string ApplicationManifest { get; private set; } = ""; + public string ApplicationManifest { get; internal set; } = ""; /// /// Gets the app icon. /// /// The app icon. - public string ConfigFile { get; private set; } = ""; + public string ConfigFile { get; internal set; } = ""; /// /// - public string DesignerFolder { get; private set; } = ""; + public string DesignerFolder { get; internal set; } = ""; /// /// Gets the language. /// /// The language. - public string Language { get; private set; } = "C#"; + public string Language { get; internal set; } = "C#"; /// /// Gets the type. /// /// The type. - public ProjectType Type { get; private set; } = ProjectType.Exe; + public ProjectType Type { get; internal set; } = ProjectType.Exe; /// /// Gets the runtime. /// /// The runtime. - public ClrRuntime Runtime { get; private set; } = ClrRuntime.Microsoft; + public ClrRuntime Runtime { get; internal set; } = ClrRuntime.Microsoft; /// /// @@ -445,13 +524,13 @@ public class ProjectNode : DataNode, IComparable /// Gets the startup object. /// /// The startup object. - public string StartupObject { get; private set; } = ""; + public string StartupObject { get; internal set; } = ""; /// /// Gets the root namespace. /// /// The root namespace. - public string RootNamespace { get; private set; } + public string RootNamespace { get; internal set; } /// /// Gets the configurations. @@ -470,7 +549,7 @@ public class ProjectNode : DataNode, IComparable /// /// Gets the text generator nodes /// - public List TextGenNodes { get; private set; } = new(); + public List TextGenNodes { get; internal set; } = new(); /// @@ -545,7 +624,7 @@ public class ProjectNode : DataNode, IComparable /// Gets the files. /// /// The files. - public FilesNode Files { get; private set; } = new(); + public FilesNode Files { get; internal set; } = new(); /// /// Gets or sets the parent. @@ -584,9 +663,9 @@ public class ProjectNode : DataNode, IComparable /// Gets the GUID. /// /// The GUID. - public Guid Guid { get; private set; } + public Guid Guid { get; internal set; } - public string DebugStartParameters { get; private set; } + public string DebugStartParameters { get; internal set; } #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/ProjectReferenceNode.cs b/source/Prebuild/Core/Nodes/ProjectReferenceNode.cs index 8722213..769fcaf 100644 --- a/source/Prebuild/Core/Nodes/ProjectReferenceNode.cs +++ b/source/Prebuild/Core/Nodes/ProjectReferenceNode.cs @@ -59,6 +59,15 @@ public class ProjectReferenceNode : DataNode, IComparable Include = Helper.AttributeValue(node, "include", Include); } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement cur = doc.CreateElement("ProjectReference"); + cur.SetAttribute("name", Name); + cur.SetAttribute("include", Include); + + current.AppendChild(cur); + } + #endregion #region Fields @@ -71,13 +80,13 @@ public class ProjectReferenceNode : DataNode, IComparable /// Gets the name. /// /// The name. - public string Name { get; private set; } = "unknown"; + public string Name { get; internal set; } = "unknown"; /// /// Gets the path. /// /// The path. - public string Include { get; private set; } + public string Include { get; internal set; } #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/ReferenceNode.cs b/source/Prebuild/Core/Nodes/ReferenceNode.cs index dd1917d..0199294 100644 --- a/source/Prebuild/Core/Nodes/ReferenceNode.cs +++ b/source/Prebuild/Core/Nodes/ReferenceNode.cs @@ -61,6 +61,18 @@ public class ReferenceNode : DataNode, IComparable Version = Helper.AttributeValue(node, "version", Version); } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement cur = doc.CreateElement("Reference"); + cur.SetAttribute("name", Name); + cur.SetAttribute("path", Path); + cur.SetAttribute("version", Version); + cur.SetAttribute("localCopy", m_LocalCopy); + + + current.AppendChild(cur); + } + #endregion #region Fields @@ -75,13 +87,13 @@ public class ReferenceNode : DataNode, IComparable /// Gets the name. /// /// The name. - public string Name { get; private set; } = "unknown"; + public string Name { get; internal set; } = "unknown"; /// /// Gets the path. /// /// The path. - public string Path { get; private set; } + public string Path { get; internal set; } /// /// Gets a value indicating whether [local copy specified]. @@ -106,7 +118,7 @@ public class ReferenceNode : DataNode, IComparable /// Gets the version. /// /// The version. - public string Version { get; private set; } + public string Version { get; internal set; } #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/ReferencePathNode.cs b/source/Prebuild/Core/Nodes/ReferencePathNode.cs index dd3c0a9..d96f997 100644 --- a/source/Prebuild/Core/Nodes/ReferencePathNode.cs +++ b/source/Prebuild/Core/Nodes/ReferencePathNode.cs @@ -47,7 +47,7 @@ public class ReferencePathNode : DataNode, IComparable /// Gets the path. /// /// The path. - public string Path { get; private set; } + public string Path { get; internal set; } #endregion @@ -77,5 +77,13 @@ public class ReferencePathNode : DataNode, IComparable Path = Path.Trim(); } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement cur = doc.CreateElement("ReferencePath"); + cur.InnerText = Path; + + current.AppendChild(cur); + } + #endregion } \ No newline at end of file diff --git a/source/Prebuild/Core/Nodes/SolutionNode.cs b/source/Prebuild/Core/Nodes/SolutionNode.cs index 590ff3b..0498a9c 100644 --- a/source/Prebuild/Core/Nodes/SolutionNode.cs +++ b/source/Prebuild/Core/Nodes/SolutionNode.cs @@ -29,6 +29,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.Xml; +using System.Xml.Serialization; using Prebuild.Core.Attributes; using Prebuild.Core.Interfaces; using Prebuild.Core.Utilities; @@ -136,6 +137,46 @@ public class SolutionNode : DataNode } } + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement sol = doc.CreateElement("Solution"); + sol.SetAttribute("name", Name); + sol.SetAttribute("activeConfig", ActiveConfig); + sol.SetAttribute("path", Path); + sol.SetAttribute("version", Version); + sol.SetAttribute("frameworkVersion", DefaultFramework.ToString()); + if(Options != null) + Options.Write(doc, sol); + + if (Files != null) Files.Write(doc, sol); + + if(Configurations != null) + foreach(ConfigurationNode conf in Configurations) + { + conf.Write(doc, sol); + } + + foreach(ProjectNode proj in Projects) + { + proj.Write(doc, sol); + } + + foreach(SolutionNode solX in Solutions) + { + solX.Write(doc, sol); + } + + foreach(DatabaseProjectNode db in DatabaseProjects) + { + db.Write(doc, sol); + } + + if(Cleanup != null) + Cleanup.Write(doc, sol); + + current.AppendChild(sol); + } + #endregion #region Fields @@ -179,37 +220,37 @@ public class SolutionNode : DataNode /// Gets the name. /// /// The name. - public string Name { get; private set; } = "unknown"; + public string Name { get; internal set; } = "unknown"; /// /// Gets the path. /// /// The path. - public string Path { get; private set; } = ""; + public string Path { get; internal set; } = ""; /// /// Gets the full path. /// /// The full path. - public string FullPath { get; private set; } = ""; + public string FullPath { get; internal set; } = ""; /// /// Gets the version. /// /// The version. - public string Version { get; private set; } = "1.0.0"; + public string Version { get; internal set; } = "1.0.0"; /// /// Gets the options. /// /// The options. - public OptionsNode Options { get; private set; } + public OptionsNode Options { get; internal set; } /// /// Gets the files. /// /// The files. - public FilesNode Files { get; private set; } + public FilesNode Files { get; internal set; } /// /// Gets the configurations. diff --git a/source/Prebuild/Core/Nodes/TextGenNode.cs b/source/Prebuild/Core/Nodes/TextGenNode.cs index be98331..4756f7b 100644 --- a/source/Prebuild/Core/Nodes/TextGenNode.cs +++ b/source/Prebuild/Core/Nodes/TextGenNode.cs @@ -16,7 +16,7 @@ namespace Prebuild.Core.Nodes #region Values private string m_Name; private string m_OutputName; - private List m_Libs = new(); + private List m_Libs = new(); private string m_Tool; @@ -32,9 +32,9 @@ namespace Prebuild.Core.Nodes foreach (XmlNode childNode in node.ChildNodes) { var data = Kernel.Instance.ParseNode(childNode, this); - if(data is ReferenceNode) + if(data is ReferenceNode rn) { - m_Libs.Add(((ReferenceNode)data).Name); + m_Libs.Add(rn); } } @@ -53,6 +53,22 @@ namespace Prebuild.Core.Nodes else m_OutputName = Path.ChangeExtension(m_OutputName, ".SnapWrap.cs"); } + + public override void Write(XmlDocument doc, XmlElement current) + { + XmlElement cur = doc.CreateElement("TextGen"); + cur.SetAttribute("name", m_Name); + cur.SetAttribute("output", m_OutputName); + cur.SetAttribute("tool", m_Tool); + + foreach(var reference in m_Libs) + { + reference.Write(doc, cur); + } + cur.SetAttribute("sourceInSolution", SourceInSolution ? bool.TrueString : bool.FalseString); + + current.AppendChild(cur); + } #endregion #region Fields @@ -76,11 +92,17 @@ namespace Prebuild.Core.Nodes { get { - return String.Join("..", m_Libs); + List tmp = new(); + foreach(var rn in m_Libs) + { + tmp.Add(rn.Name); + } + + return String.Join("..", tmp); } } - public bool SourceInSolution { get; private set; } = false; + public bool SourceInSolution { get; internal set; } = false; public string SourceDirectory { diff --git a/source/Prebuild/Core/Parse/IfContext.cs b/source/Prebuild/Core/Parse/IfContext.cs index c1a2745..4918a29 100644 --- a/source/Prebuild/Core/Parse/IfContext.cs +++ b/source/Prebuild/Core/Parse/IfContext.cs @@ -104,7 +104,7 @@ public class IfContext /// Gets a value indicating whether [ever kept]. /// /// true if [ever kept]; otherwise, false. - public bool EverKept { get; private set; } + public bool EverKept { get; internal set; } /// /// Gets or sets the state. diff --git a/source/Prebuild/Core/Targets/AutotoolsTarget.cs b/source/Prebuild/Core/Targets/AutotoolsTarget.cs index abc8181..af33552 100644 --- a/source/Prebuild/Core/Targets/AutotoolsTarget.cs +++ b/source/Prebuild/Core/Targets/AutotoolsTarget.cs @@ -95,22 +95,22 @@ public enum ClrVersion public class SystemPackage { - public string Name { get; private set; } + public string Name { get; internal set; } - public string Version { get; private set; } + public string Version { get; internal set; } - public string Description { get; private set; } + public string Description { get; internal set; } - public ClrVersion TargetVersion { get; private set; } + public ClrVersion TargetVersion { get; internal set; } // The package is part of the mono SDK public bool IsCorePackage => Name == "mono"; // The package has been registered by an add-in, and is not installed // in the system. - public bool IsInternalPackage { get; private set; } + public bool IsInternalPackage { get; internal set; } - public string[] Assemblies { get; private set; } + public string[] Assemblies { get; internal set; } public void Initialize(string name, string version, diff --git a/source/Prebuild/Prebuild.cs b/source/Prebuild/Prebuild.cs index 409c0d7..1153ebb 100644 --- a/source/Prebuild/Prebuild.cs +++ b/source/Prebuild/Prebuild.cs @@ -105,6 +105,7 @@ internal class Prebuild Console.WriteLine("/ppo Pre-process the file, but perform no other processing"); Console.WriteLine("/pause Pauses the application after execution to view the output"); Console.WriteLine("/yes Default to yes to any questions asked"); + Console.WriteLine("/init Initializes a skeleton Prebuild file"); Console.WriteLine(); Console.WriteLine("See 'prebuild /showtargets for a list of available targets"); Console.WriteLine("See readme.txt or check out http://dnpb.sourceforge.net for more information");