Skip to content

Commit f41268e

Browse files
committed
Auto generate the templates
1 parent 512d422 commit f41268e

File tree

102 files changed

+4504
-125
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+4504
-125
lines changed

BuildTT/BuildTT.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
<Compile Include="Infrastructure\FileReaderStrategy.cs" />
6666
<Compile Include="Program.cs" />
6767
<Compile Include="Properties\AssemblyInfo.cs" />
68+
<Compile Include="TemplateFiles.cs" />
6869
<Compile Include="VersionSetter.cs" />
6970
</ItemGroup>
7071
<ItemGroup>
@@ -76,5 +77,11 @@
7677
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
7778
</Content>
7879
</ItemGroup>
80+
<ItemGroup>
81+
<ProjectReference Include="..\Generator\Generator.csproj">
82+
<Project>{7638dea9-a4ef-46dd-ade2-81d967246751}</Project>
83+
<Name>Generator</Name>
84+
</ProjectReference>
85+
</ItemGroup>
7986
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
8087
</Project>

BuildTT/Program.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ static void Main()
1010
//const string root = "..\\..\\..\\";
1111
const string generatorRoot = "..\\..\\..\\Generator";
1212
const string ttRoot = "..\\..\\..\\EntityFramework.Reverse.POCO.Generator";
13+
const string templatesRoot = "..\\..\\..\\_File based templates";
1314

1415
var version = File.ReadAllText("version.txt").Trim();
1516

17+
TemplateFiles.Create(templatesRoot);
1618
BuildTT.Create(generatorRoot, ttRoot, version);
1719
//var vs = new VersionSetter(root, version);
1820
//vs.SetVersions();

BuildTT/TemplateFiles.cs

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
using System.Collections.Generic;
2+
using System.IO;
3+
using System.Linq;
4+
using Efrpg;
5+
using Efrpg.Generators;
6+
using Efrpg.TemplateModels;
7+
using Efrpg.Templates;
8+
9+
namespace BuildTT
10+
{
11+
public static class TemplateFiles
12+
{
13+
public static void Create(string templatesRoot)
14+
{
15+
CreateFiles(new TemplateEf6(), Path.Combine(templatesRoot, "Templates.EF6"));
16+
CreateFiles(new TemplateEfCore2(), Path.Combine(templatesRoot, "Templates.EFCore2"));
17+
CreateFiles(new TemplateEfCore3(), Path.Combine(templatesRoot, "Templates.EFCore3"));
18+
CreateFiles(new TemplateEfCore5(), Path.Combine(templatesRoot, "Templates.EFCore5"));
19+
CreateFiles(new TemplateEfCore6(), Path.Combine(templatesRoot, "Templates.EFCore6"));
20+
}
21+
22+
private static void CreateFiles(Template template, string folder)
23+
{
24+
Directory.CreateDirectory(folder);
25+
26+
// Mustache
27+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Mustache.Usings), template.Usings());
28+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Mustache.DatabaseContextInterface), template.DatabaseContextInterface());
29+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Mustache.DatabaseContext), template.DatabaseContext());
30+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Mustache.DatabaseContextFactory), template.DatabaseContextFactory());
31+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Mustache.FakeDatabaseContext), template.FakeDatabaseContext());
32+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Mustache.FakeDbSet), template.FakeDbSet());
33+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Mustache.Poco), template.Poco());
34+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Mustache.PocoConfiguration), template.PocoConfiguration());
35+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Mustache.StoredProcReturnModels), template.StoredProcReturnModels());
36+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Mustache.Enums), template.Enums());
37+
38+
// Text
39+
Settings.IncludeCodeGeneratedAttribute = true;
40+
Settings.UseInheritedBaseInterfaceFunctions = false;
41+
Settings.OnConfiguration = OnConfiguration.Configuration;
42+
43+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Text.DatabaseContextInterfaceUsings),
44+
template.DatabaseContextInterfaceUsings(new InterfaceModel
45+
{
46+
addSaveChanges = true,
47+
hasScalarValuedFunctions = true,
48+
hasStoredProcs = true,
49+
hasTableValuedFunctions = true,
50+
tables = new List<TableTemplateData>()
51+
}));
52+
53+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Text.DatabaseContextUsings),
54+
template.DatabaseContextUsings(new ContextModel
55+
{
56+
addSaveChanges = true,
57+
hasScalarValuedFunctions = true,
58+
hasStoredProcs = true,
59+
hasTableValuedFunctions = true,
60+
tables = new List<TableTemplateData>()
61+
}));
62+
63+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Text.DatabaseContextFactoryUsings),
64+
template.DatabaseContextFactoryUsings(new FactoryModel()));
65+
66+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Text.FakeDatabaseContextUsings),
67+
template.FakeDatabaseContextUsings(new FakeContextModel
68+
{
69+
hasScalarValuedFunctions = true,
70+
hasStoredProcs = true,
71+
hasTableValuedFunctions = true,
72+
tables = new List<TableTemplateData>()
73+
}, null));
74+
75+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Text.FakeDbSetUsings),
76+
template.FakeDbSetUsings(new FakeDbSetModel()));
77+
78+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Text.PocoUsings),
79+
template.PocoUsings(new PocoModel()));
80+
81+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Text.PocoConfigurationUsings),
82+
template.PocoConfigurationUsings(new PocoConfigurationModel
83+
{
84+
UsesDictionary = true
85+
}));
86+
87+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Text.StoredProcReturnModelUsings),
88+
template.StoredProcReturnModelUsings());
89+
90+
CreateFile(Path.Combine(folder, TemplateFileBasedConstants.Text.EnumUsings),
91+
template.EnumUsings());
92+
}
93+
94+
private static void CreateFile(string path, string data)
95+
{
96+
using (var sw = File.CreateText(path))
97+
{
98+
sw.Write(data.Trim());
99+
sw.Flush();
100+
}
101+
}
102+
103+
private static void CreateFile(string path, List<string> data)
104+
{
105+
using (var sw = File.CreateText(path))
106+
{
107+
foreach (var item in data.Distinct().OrderBy(x => x))
108+
sw.WriteLine(item);
109+
110+
sw.Flush();
111+
}
112+
}
113+
}
114+
}

EntityFramework.Reverse.POCO.Generator/EF.Reverse.POCO.v3.ttinclude

Lines changed: 48 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24271,97 +24271,97 @@ public enum {{EnumName}}{{#newline}}
2427124271

2427224272
public override string Usings()
2427324273
{
24274-
return CacheText("Usings.mustache");
24274+
return CacheText(TemplateFileBasedConstants.Mustache.Usings);
2427524275
}
2427624276

2427724277
public override List<string> DatabaseContextInterfaceUsings(InterfaceModel data)
2427824278
{
24279-
return CacheList("DatabaseContextInterfaceUsings.txt");
24279+
return CacheList(TemplateFileBasedConstants.Text.DatabaseContextInterfaceUsings);
2428024280
}
2428124281

2428224282
public override string DatabaseContextInterface()
2428324283
{
24284-
return CacheText("DatabaseContextInterface.mustache");
24284+
return CacheText(TemplateFileBasedConstants.Mustache.DatabaseContextInterface);
2428524285
}
2428624286

2428724287
public override List<string> DatabaseContextUsings(ContextModel data)
2428824288
{
24289-
return CacheList("DatabaseContextUsings.txt");
24289+
return CacheList(TemplateFileBasedConstants.Text.DatabaseContextUsings);
2429024290
}
2429124291

2429224292
public override string DatabaseContext()
2429324293
{
24294-
return CacheText("DatabaseContext.mustache");
24294+
return CacheText(TemplateFileBasedConstants.Mustache.DatabaseContext);
2429524295
}
2429624296

2429724297
public override List<string> DatabaseContextFactoryUsings(FactoryModel data)
2429824298
{
24299-
return CacheList("DatabaseContextFactoryUsings.txt");
24299+
return CacheList(TemplateFileBasedConstants.Text.DatabaseContextFactoryUsings);
2430024300
}
2430124301

2430224302
public override string DatabaseContextFactory()
2430324303
{
24304-
return CacheText("DatabaseContextFactory.mustache");
24304+
return CacheText(TemplateFileBasedConstants.Mustache.DatabaseContextFactory);
2430524305
}
2430624306

2430724307
public override List<string> FakeDatabaseContextUsings(FakeContextModel data, IDbContextFilter filter)
2430824308
{
24309-
return CacheList("FakeDatabaseContextUsings.txt");
24309+
return CacheList(TemplateFileBasedConstants.Text.FakeDatabaseContextUsings);
2431024310
}
2431124311

2431224312
public override string FakeDatabaseContext()
2431324313
{
24314-
return CacheText("FakeDatabaseContext.mustache");
24314+
return CacheText(TemplateFileBasedConstants.Mustache.FakeDatabaseContext);
2431524315
}
2431624316

2431724317
public override List<string> FakeDbSetUsings(FakeDbSetModel data)
2431824318
{
24319-
return CacheList("FakeDbSetUsings.txt");
24319+
return CacheList(TemplateFileBasedConstants.Text.FakeDbSetUsings);
2432024320
}
2432124321

2432224322
public override string FakeDbSet()
2432324323
{
24324-
return CacheText("FakeDbSet.mustache");
24324+
return CacheText(TemplateFileBasedConstants.Mustache.FakeDbSet);
2432524325
}
2432624326

2432724327
public override List<string> PocoUsings(PocoModel data)
2432824328
{
24329-
return CacheList("PocoUsings.txt");
24329+
return CacheList(TemplateFileBasedConstants.Text.PocoUsings);
2433024330
}
2433124331

2433224332
public override string Poco()
2433324333
{
24334-
return CacheText("Poco.mustache");
24334+
return CacheText(TemplateFileBasedConstants.Mustache.Poco);
2433524335
}
2433624336

2433724337
public override List<string> PocoConfigurationUsings(PocoConfigurationModel data)
2433824338
{
24339-
return CacheList("PocoConfigurationUsings.txt");
24339+
return CacheList(TemplateFileBasedConstants.Text.PocoConfigurationUsings);
2434024340
}
2434124341

2434224342
public override string PocoConfiguration()
2434324343
{
24344-
return CacheText("PocoConfiguration.mustache");
24344+
return CacheText(TemplateFileBasedConstants.Mustache.PocoConfiguration);
2434524345
}
2434624346

2434724347
public override List<string> StoredProcReturnModelUsings()
2434824348
{
24349-
return CacheList("StoredProcReturnModelUsings.txt");
24349+
return CacheList(TemplateFileBasedConstants.Text.StoredProcReturnModelUsings);
2435024350
}
2435124351

2435224352
public override string StoredProcReturnModels()
2435324353
{
24354-
return CacheText("StoredProcReturnModels.mustache");
24354+
return CacheText(TemplateFileBasedConstants.Mustache.StoredProcReturnModels);
2435524355
}
2435624356

2435724357
public override List<string> EnumUsings()
2435824358
{
24359-
return CacheList("EnumUsings.txt");
24359+
return CacheList(TemplateFileBasedConstants.Text.EnumUsings);
2436024360
}
2436124361

2436224362
public override string Enums()
2436324363
{
24364-
return CacheText("Enums.mustache");
24364+
return CacheText(TemplateFileBasedConstants.Mustache.Enums);
2436524365
}
2436624366

2436724367
private string CacheText(string filename)
@@ -24386,6 +24386,35 @@ public enum {{EnumName}}{{#newline}}
2438624386
return lines;
2438724387
}
2438824388
}
24389+
public static class TemplateFileBasedConstants
24390+
{
24391+
public static class Mustache
24392+
{
24393+
public const string Usings = "Usings.mustache";
24394+
public const string DatabaseContextInterface = "DatabaseContextInterface.mustache";
24395+
public const string DatabaseContext = "DatabaseContext.mustache";
24396+
public const string DatabaseContextFactory = "DatabaseContextFactory.mustache";
24397+
public const string FakeDatabaseContext = "FakeDatabaseContext.mustache";
24398+
public const string FakeDbSet = "FakeDbSet.mustache";
24399+
public const string Poco = "Poco.mustache";
24400+
public const string PocoConfiguration = "PocoConfiguration.mustache";
24401+
public const string StoredProcReturnModels = "StoredProcReturnModels.mustache";
24402+
public const string Enums = "Enums.mustache";
24403+
}
24404+
24405+
public static class Text
24406+
{
24407+
public const string DatabaseContextInterfaceUsings = "DatabaseContextInterfaceUsings.txt";
24408+
public const string DatabaseContextUsings = "DatabaseContextUsings.txt";
24409+
public const string DatabaseContextFactoryUsings = "DatabaseContextFactoryUsings.txt";
24410+
public const string FakeDatabaseContextUsings = "FakeDatabaseContextUsings.txt";
24411+
public const string FakeDbSetUsings = "FakeDbSetUsings.txt";
24412+
public const string PocoUsings = "PocoUsings.txt";
24413+
public const string PocoConfigurationUsings = "PocoConfigurationUsings.txt";
24414+
public const string StoredProcReturnModelUsings = "StoredProcReturnModelUsings.txt";
24415+
public const string EnumUsings = "EnumUsings.txt";
24416+
}
24417+
}
2438924418
public enum TemplateType
2439024419
{
2439124420
Ef6,

Generator/Generator.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@
110110
<Compile Include="Templates\TemplateEfCore2.cs" />
111111
<Compile Include="Templates\TemplateEfCore3.cs" />
112112
<Compile Include="Templates\TemplateEfCore6.cs" />
113+
<Compile Include="Templates\TemplateFileBasedConstants.cs" />
113114
<Compile Include="Util\MultiContextSettingsCopy.cs" />
114115
<Compile Include="Filtering\PeriodFilter.cs" />
115116
<Compile Include="Filtering\RegexExcludeFilter.cs" />

0 commit comments

Comments
 (0)