Add text generator to prebuild

This commit is contained in:
Zontreck 2023-08-10 04:33:29 -07:00
parent 00637861f7
commit 7c6e0021c2
8 changed files with 108 additions and 285 deletions

View file

@ -1,21 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 22
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Prebuild", "..\Prebuild\src\Prebuild.csproj", "{BCE0B56D-0000-0000-0000-000000000000}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Files", "Solution Files", "{198FE683-AA28-459F-9818-EF8F29428DFC}"
ProjectSection(SolutionItems) = preProject
prebuild.xml = prebuild.xml
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{BCE0B56D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BCE0B56D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BCE0B56D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BCE0B56D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

Binary file not shown.

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<Prebuild xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.10.xsd" version="1.10">
<Solution name="Prebuild" version="2.0.8" frameworkVersion="net7_0">
<Solution name="Prebuild" version="2.0.9" frameworkVersion="net7_0">
<Options>
<UseDepsFile>true</UseDepsFile>
</Options>
@ -33,7 +33,7 @@
type="Exe"
rootNamespace="Prebuild"
startupObject="Prebuild.Prebuild"
version="2.0.8"
version="2.0.9"
>
<Author>Matthew Holmes (matthew@wildfiregames.com)</Author>
<Author>Dan Moorehead (dan05a@gmail.com)</Author>

View file

@ -247,6 +247,7 @@ public class ProjectNode : DataNode, IComparable
else if (dataNode is AuthorNode)
Authors.Add((AuthorNode)dataNode);
else if (dataNode is FilesNode) Files = (FilesNode)dataNode;
else if(dataNode is TextGenNode) TextGenNodes.Add((TextGenNode)dataNode);
}
}
finally
@ -428,6 +429,12 @@ public class ProjectNode : DataNode, IComparable
}
}
/// <summary>
/// Gets the text generator nodes
/// </summary>
public List<TextGenNode> TextGenNodes { get; private set; } = new();
/// <summary>
/// Gets the configurations table.
/// </summary>

View file

@ -0,0 +1,76 @@
using Prebuild.Core.Attributes;
using Prebuild.Core.Utilities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace Prebuild.Core.Nodes
{
[DataNode("TextGen")]
public class TextGenNode : DataNode
{
#region Values
private string m_Name;
private string m_Generator;
private bool m_AutoGen = true;
private string m_OutputName;
#endregion
#region Methods
public override void Parse(XmlNode node)
{
m_Name = Helper.AttributeValue(node, "name", "");
m_Generator = Helper.AttributeValue(node, "generator", "TextTemplatingFileGenerator");
m_AutoGen = Helper.ParseBoolean(node, "autogen", true);
m_OutputName = Helper.AttributeValue(node, "output", "");
}
#endregion
#region Fields
public string Name
{
get
{
return m_Name;
}
}
public string Generator
{
get
{
return m_Generator;
}
}
public bool AutoGen
{
get
{
return m_AutoGen;
}
}
public string AutoGenerate
{
get
{
return AutoGen ? "True" : "False";
}
}
public string OutputName
{
get
{
return m_OutputName;
}
}
#endregion
}
}

View file

@ -687,6 +687,23 @@ public abstract class VSGenericTarget : ITarget
}
}
private void WriteTextGeneratorNodes(ProjectNode project, StreamWriter ps)
{
foreach(TextGenNode node in project.TextGenNodes)
{
ps.WriteLine(" <ItemGroup>");
ps.WriteLine($" <None Update=\"{node.Name}\">");
ps.WriteLine($" <Generator>{node.Generator}</Generator>");
ps.WriteLine($" </None>");
ps.WriteLine($" <None Update=\"{node.OutputName}\">");
ps.WriteLine($" <DesignTime>True</DesignTime>");
ps.WriteLine($" <AutoGen>{node.AutoGenerate}</AutoGen>");
ps.WriteLine($" <DependentUpon>{node.Name}</DependentUpon>");
ps.WriteLine($" </None>");
ps.WriteLine($" </ItemGroup>");
}
}
private void WriteProjectDotNet(SolutionNode solution, ProjectNode project, StreamWriter ps)
{
#region Project File
@ -838,6 +855,8 @@ public abstract class VSGenericTarget : ITarget
// Output the ItemGroup for project.References
WriteProjectReferencesDotNet(solution, project, ps);
WriteTextGeneratorNodes(project, ps);
if (project.Files.Count > 0)
{
var list = new List<string>();
@ -1044,8 +1063,9 @@ public abstract class VSGenericTarget : ITarget
ps.WriteLine("</Project>");
#endregion
}
#endregion
}
private void WriteProjectReferencesDotNet(SolutionNode solution, ProjectNode project, StreamWriter ps)

View file

@ -1,259 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<PreserveCompilationContext>false</PreserveCompilationContext>
<OutputType>Exe</OutputType>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<ImplicitUsings>disable</ImplicitUsings>
<AssemblyName>prebuild</AssemblyName>
<Deterministic>true</Deterministic>
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
<GenerateDependencyFile>false</GenerateDependencyFile>
<EnableDefaultItems>false</EnableDefaultItems>
<CopyLocalLockFileAssemblies>True</CopyLocalLockFileAssemblies>
<SelfContained>False</SelfContained>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile></DocumentationFile>
<DebugSymbols>True</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<Optimize>False</Optimize>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
<UseCommonOutputDirectory>False</UseCommonOutputDirectory>
<AppendTargetFrameworkToOutputPath>True</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>True</AppendRuntimeIdentifierToOutputPath>
<OutputPath>bin\Debug\</OutputPath>
<RegisterForComInterop>False</RegisterForComInterop>
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<NoStdLib>False</NoStdLib>
<NoWarn>1595</NoWarn>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE</DefineConstants>
<DocumentationFile></DocumentationFile>
<DebugSymbols>False</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<Optimize>True</Optimize>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
<UseCommonOutputDirectory>False</UseCommonOutputDirectory>
<AppendTargetFrameworkToOutputPath>True</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>True</AppendRuntimeIdentifierToOutputPath>
<OutputPath>bin\Release\</OutputPath>
<RegisterForComInterop>False</RegisterForComInterop>
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<NoStdLib>False</NoStdLib>
<NoWarn>1595</NoWarn>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="System.EnterpriseServices" >
<Name>System.EnterpriseServices</Name>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="App.ico">
</EmbeddedResource>
<EmbeddedResource Include="data\prebuild-1.10.xsd">
</EmbeddedResource>
<EmbeddedResource Include="data\autotools.xml">
</EmbeddedResource>
<Compile Include="Prebuild.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\FatalException.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Kernel.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\UnknownLanguageException.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\WarningException.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Attributes\DataNodeAttribute.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Attributes\OptionNodeAttribute.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Attributes\TargetAttribute.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Interfaces\IDataNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Interfaces\ITarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\AuthorNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\CleanFilesNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\CleanupNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ConfigurationNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ConfigurationNodeCollection.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DatabaseProjectNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DatabaseReferenceNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DataNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DescriptionNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ExcludeNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\FileNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\FilesNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\MatchNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\OptionsNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\PackageReferenceNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ProcessNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ProjectNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ProjectReferenceNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ReferenceNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ReferencePathNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\SolutionNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Parse\IfContext.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Parse\Preprocessor.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\AutotoolsTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\DebugTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\MakefileTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\MonoDevelopTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\NAntTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\SharpDevelop2Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\SharpDevelopTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\ToolInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2002Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2003Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2005Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2008Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2010Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2012Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2013Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2015Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2017Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2019Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2022Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VSGenericTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VSVersion.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\XcodeTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\CommandLineCollection.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\CurrentDirectory.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\Helper.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\Log.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
</ItemGroup>
</Project>

View file

@ -60,7 +60,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration(".NET CLR")]
[assembly: AssemblyCompany("The Prebuild Project")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("Copyright 2004-2015 " +
[assembly: AssemblyCopyright("Copyright 2004-2023 " +
"Tara Piccari (Aria's Creations)" +
"Matthew Holmes, " +
"Dan Moorehead, " +
@ -73,7 +73,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: NeutralResourcesLanguageAttribute("en-US")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyVersion("2.0.9.0")]
//
// Version information for an assembly consists of the following four values: