Skip to content

Commit ea06400

Browse files
Adrian, MehmkeAnthony Sneed
authored andcommitted
Search and register new hbs files by filename in Partials subdirectory.
1 parent e7ec43d commit ea06400

8 files changed

+87
-84
lines changed

src/EntityFrameworkCore.Scaffolding.Handlebars/CSharpTemplateLanguageService.cs

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class CSharpTemplateLanguageService : ITemplateLanguageService
1212
/// Get DbContext template file information.
1313
/// </summary>
1414
/// <returns>Dictionary of templates with file information.</returns>
15-
public Dictionary<string, TemplateFileInfo> GetDbContextTemplateFileInfo()
15+
public Dictionary<string, TemplateFileInfo> GetDbContextTemplateFileInfo(ITemplateFileService fileService)
1616
{
1717
var result = new Dictionary<string, TemplateFileInfo>
1818
{
@@ -49,14 +49,15 @@ public Dictionary<string, TemplateFileInfo> GetDbContextTemplateFileInfo()
4949
}
5050
},
5151
};
52+
5253
return result;
5354
}
5455

5556
/// <summary>
5657
/// Get Entities template file information.
5758
/// </summary>
5859
/// <returns>Dictionary of templates with file information.</returns>
59-
public Dictionary<string, TemplateFileInfo> GetEntitiesTemplateFileInfo()
60+
public Dictionary<string, TemplateFileInfo> GetEntitiesTemplateFileInfo(ITemplateFileService fileService)
6061
{
6162
var result = new Dictionary<string, TemplateFileInfo>
6263
{
@@ -68,31 +69,51 @@ public Dictionary<string, TemplateFileInfo> GetEntitiesTemplateFileInfo()
6869
FileName = Constants.EntityTypeTemplate + Constants.TemplateExtension
6970
}
7071
},
71-
{
72-
Constants.EntityTypeImportTemplate,
73-
new TemplateFileInfo
74-
{
75-
RelativeDirectory = Constants.CSharpTemplateDirectories.EntityTypePartialsDirectory,
76-
FileName = Constants.EntityTypeImportTemplate + Constants.TemplateExtension
77-
}
78-
},
79-
{
80-
Constants.EntityTypeCtorTemplate,
81-
new TemplateFileInfo
82-
{
83-
RelativeDirectory = Constants.CSharpTemplateDirectories.EntityTypePartialsDirectory,
84-
FileName = Constants.EntityTypeCtorTemplate + Constants.TemplateExtension
85-
}
86-
},
87-
{
88-
Constants.EntityTypePropertyTemplate,
89-
new TemplateFileInfo
90-
{
91-
RelativeDirectory = Constants.CSharpTemplateDirectories.EntityTypePartialsDirectory,
92-
FileName = Constants.EntityTypePropertyTemplate + Constants.TemplateExtension
93-
}
94-
},
72+
//{
73+
// Constants.EntityTypeImportTemplate,
74+
// new TemplateFileInfo
75+
// {
76+
// RelativeDirectory = Constants.CSharpTemplateDirectories.EntityTypePartialsDirectory,
77+
// FileName = Constants.EntityTypeImportTemplate + Constants.TemplateExtension
78+
// }
79+
//},
80+
//{
81+
// Constants.EntityTypeCtorTemplate,
82+
// new TemplateFileInfo
83+
// {
84+
// RelativeDirectory = Constants.CSharpTemplateDirectories.EntityTypePartialsDirectory,
85+
// FileName = Constants.EntityTypeCtorTemplate + Constants.TemplateExtension
86+
// }
87+
//},
88+
//{
89+
// Constants.EntityTypePropertyTemplate,
90+
// new TemplateFileInfo
91+
// {
92+
// RelativeDirectory = Constants.CSharpTemplateDirectories.EntityTypePartialsDirectory,
93+
// FileName = Constants.EntityTypePropertyTemplate + Constants.TemplateExtension
94+
// }
95+
//},
96+
//{
97+
// Constants.EntityTypePropertyTemplate + "item" ,
98+
// new TemplateFileInfo
99+
// {
100+
// RelativeDirectory = Constants.CSharpTemplateDirectories.EntityTypePartialsDirectory,
101+
// FileName = Constants.EntityTypePropertyTemplate + "item" + Constants.TemplateExtension
102+
// }
103+
//},
95104
};
105+
106+
foreach(var file in fileService.RetrieveAllFileNames(Constants.CSharpTemplateDirectories.EntityTypePartialsDirectory))
107+
{
108+
result.Add(file, new TemplateFileInfo()
109+
{
110+
RelativeDirectory = Constants.CSharpTemplateDirectories.EntityTypePartialsDirectory,
111+
FileName = file + Constants.TemplateExtension
112+
});
113+
}
114+
115+
116+
//EntityFrameworkCore.Scaffolding.Handlebars.FileService.
96117
return result;
97118
}
98119
}

src/EntityFrameworkCore.Scaffolding.Handlebars/FileSystemTemplateFileService.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Collections.Generic;
22
using System.IO;
3+
using System.Linq;
34
using System.Reflection;
45
using EntityFrameworkCore.Scaffolding.Handlebars.Internal;
56

@@ -28,6 +29,12 @@ public virtual string[] InputFiles(params InputFile[] files)
2829
return filePaths.ToArray();
2930
}
3031

32+
public string[] RetrieveAllFileNames(string relativeDirectory)
33+
{
34+
return Directory.GetFiles(relativeDirectory).Select(x => Path.GetFileNameWithoutExtension(x)).ToArray();
35+
}
36+
37+
3138
/// <summary>
3239
/// Retreive template file contents from the file system.
3340
/// If template is not present, copy it locally.

src/EntityFrameworkCore.Scaffolding.Handlebars/HbsDbContextTemplateService.cs

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Globalization;
43
using EntityFrameworkCore.Scaffolding.Handlebars.Helpers;
54
using Microsoft.EntityFrameworkCore.Design;
65
using HandlebarsLib = HandlebarsDotNet.Handlebars;
@@ -27,7 +26,7 @@ public class HbsDbContextTemplateService : HbsTemplateService, IDbContextTemplat
2726
public HbsDbContextTemplateService(ITemplateFileService fileService,
2827
ITemplateLanguageService languageService) : base(fileService, languageService)
2928
{
30-
DbContextTemplateFiles = LanguageService.GetDbContextTemplateFileInfo();
29+
DbContextTemplateFiles = LanguageService.GetDbContextTemplateFileInfo(fileService);
3130
}
3231

3332
/// <summary>
@@ -68,33 +67,14 @@ protected virtual Func<object, string> CompileDbContextTemplate(
6867
protected override IDictionary<string, string> GetPartialTemplates(
6968
LanguageOptions language = LanguageOptions.CSharp)
7069
{
71-
DbContextTemplateFiles.TryGetValue(Constants.DbContextImportTemplate, out TemplateFileInfo importFile);
72-
var importTemplateFile = FileService.RetrieveTemplateFileContents(
73-
importFile.RelativeDirectory, importFile.FileName);
74-
75-
DbContextTemplateFiles.TryGetValue(Constants.DbContextCtorTemplate, out TemplateFileInfo ctorFile);
76-
var ctorTemplateFile = FileService.RetrieveTemplateFileContents(
77-
ctorFile.RelativeDirectory, ctorFile.FileName);
78-
79-
DbContextTemplateFiles.TryGetValue(Constants.DbContextDbSetsTemplate, out TemplateFileInfo propertyFile);
80-
var propertyTemplateFile = FileService.RetrieveTemplateFileContents(
81-
propertyFile.RelativeDirectory, propertyFile.FileName);
82-
83-
var templates = new Dictionary<string, string>
70+
var templates = new Dictionary<string, string>();
71+
foreach(var item in DbContextTemplateFiles)
8472
{
73+
if(item.Value.RelativeDirectory == Constants.CSharpTemplateDirectories.DbContextPartialsDirectory)
8574
{
86-
Constants.DbContextImportTemplate.ToLower(CultureInfo.InvariantCulture),
87-
importTemplateFile
88-
},
89-
{
90-
Constants.DbContextCtorTemplate.ToLower(CultureInfo.InvariantCulture),
91-
ctorTemplateFile
92-
},
93-
{
94-
Constants.DbContextDbSetsTemplate.ToLower(CultureInfo.InvariantCulture),
95-
propertyTemplateFile
96-
},
97-
};
75+
templates.Add(item.Key, FileService.RetrieveTemplateFileContents(item.Value.RelativeDirectory, item.Value.FileName));
76+
}
77+
}
9878
return templates;
9979
}
10080
}

src/EntityFrameworkCore.Scaffolding.Handlebars/HbsEntityTypeTemplateService.cs

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Globalization;
43
using EntityFrameworkCore.Scaffolding.Handlebars.Helpers;
54
using Microsoft.EntityFrameworkCore.Design;
65
using HandlebarsLib = HandlebarsDotNet.Handlebars;
@@ -27,7 +26,7 @@ public class HbsEntityTypeTemplateService : HbsTemplateService, IEntityTypeTempl
2726
public HbsEntityTypeTemplateService(ITemplateFileService fileService,
2827
ITemplateLanguageService languageService) : base(fileService, languageService)
2928
{
30-
EntitiesTemplateFiles = LanguageService.GetEntitiesTemplateFileInfo();
29+
EntitiesTemplateFiles = LanguageService.GetEntitiesTemplateFileInfo(fileService);
3130
}
3231

3332
/// <summary>
@@ -68,33 +67,16 @@ protected virtual Func<object, string> CompileEntityTypeTemplate(
6867
protected override IDictionary<string, string> GetPartialTemplates(
6968
LanguageOptions language = LanguageOptions.CSharp)
7069
{
71-
EntitiesTemplateFiles.TryGetValue(Constants.EntityTypeCtorTemplate, out TemplateFileInfo ctorFile);
72-
var ctorTemplateFile = FileService.RetrieveTemplateFileContents(
73-
ctorFile.RelativeDirectory, ctorFile.FileName);
74-
75-
EntitiesTemplateFiles.TryGetValue(Constants.EntityTypeImportTemplate, out TemplateFileInfo importFile);
76-
var importTemplateFile = FileService.RetrieveTemplateFileContents(
77-
importFile.RelativeDirectory, importFile.FileName);
78-
79-
EntitiesTemplateFiles.TryGetValue(Constants.EntityTypePropertyTemplate, out TemplateFileInfo propertyFile);
80-
var propertyTemplateFile = FileService.RetrieveTemplateFileContents(
81-
propertyFile.RelativeDirectory, propertyFile.FileName);
82-
83-
var templates = new Dictionary<string, string>
70+
71+
var templates = new Dictionary<string, string>();
72+
foreach (var item in EntitiesTemplateFiles)
8473
{
74+
if (item.Value.RelativeDirectory == Constants.CSharpTemplateDirectories.EntityTypePartialsDirectory)
8575
{
86-
Constants.EntityTypeCtorTemplate.ToLower(CultureInfo.InvariantCulture),
87-
ctorTemplateFile
88-
},
89-
{
90-
Constants.EntityTypeImportTemplate.ToLower(CultureInfo.InvariantCulture),
91-
importTemplateFile
92-
},
93-
{
94-
Constants.EntityTypePropertyTemplate.ToLower(CultureInfo.InvariantCulture),
95-
propertyTemplateFile
96-
},
97-
};
76+
templates.Add(item.Key, FileService.RetrieveTemplateFileContents(item.Value.RelativeDirectory, item.Value.FileName));
77+
}
78+
}
79+
9880
return templates;
9981
}
10082
}

src/EntityFrameworkCore.Scaffolding.Handlebars/ITemplateFileService.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,8 @@ public interface ITemplateFileService : IFileService
2424
/// <returns>File contents.</returns>
2525
string RetrieveTemplateFileContents(string relativeDirectory, string fileName,
2626
string altRelativeDirectory = null);
27+
28+
29+
string[] RetrieveAllFileNames(string relativeDirectory);
2730
}
2831
}

src/EntityFrameworkCore.Scaffolding.Handlebars/ITemplateLanguageService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ public interface ITemplateLanguageService
1111
/// Get DbContext template file information.
1212
/// </summary>
1313
/// <returns>Dictionary of templates with file information.</returns>
14-
Dictionary<string, TemplateFileInfo> GetDbContextTemplateFileInfo();
14+
Dictionary<string, TemplateFileInfo> GetDbContextTemplateFileInfo(ITemplateFileService fileService);
1515

1616
/// <summary>
1717
/// Get Entities template file information.
1818
/// </summary>
1919
/// <returns>Dictionary of templates with file information.</returns>
20-
Dictionary<string, TemplateFileInfo> GetEntitiesTemplateFileInfo();
20+
Dictionary<string, TemplateFileInfo> GetEntitiesTemplateFileInfo(ITemplateFileService fileService);
2121
}
2222
}

src/EntityFrameworkCore.Scaffolding.Handlebars/InMemoryTemplateFileService.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Collections.Generic;
22
using System.IO;
3+
using System.Linq;
34
using EntityFrameworkCore.Scaffolding.Handlebars.Internal;
45

56
namespace EntityFrameworkCore.Scaffolding.Handlebars
@@ -35,6 +36,15 @@ public virtual string[] InputFiles(params InputFile[] files)
3536
return filePaths.ToArray();
3637
}
3738

39+
public string[] RetrieveAllFileNames(string relativeDirectory)
40+
{
41+
if (!NameToContentMap.TryGetValue(relativeDirectory, out var filesMap))
42+
{
43+
throw new DirectoryNotFoundException("Could not find directory " + relativeDirectory);
44+
}
45+
return filesMap.Select(x=> x.Key).ToArray();
46+
}
47+
3848
/// <summary>
3949
/// Retrieve template file contents from the file system.
4050
/// If template is not present, copy it locally.

src/EntityFrameworkCore.Scaffolding.Handlebars/TypeScriptTemplateLanguageService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class TypeScriptTemplateLanguageService : ITemplateLanguageService
1212
/// Get DbContext template file information.
1313
/// </summary>
1414
/// <returns>Dictionary of templates with file information.</returns>
15-
public Dictionary<string, TemplateFileInfo> GetDbContextTemplateFileInfo()
15+
public Dictionary<string, TemplateFileInfo> GetDbContextTemplateFileInfo(ITemplateFileService fileService)
1616
{
1717
var result = new Dictionary<string, TemplateFileInfo>
1818
{
@@ -56,7 +56,7 @@ public Dictionary<string, TemplateFileInfo> GetDbContextTemplateFileInfo()
5656
/// Get Entities template file information.
5757
/// </summary>
5858
/// <returns>Dictionary of templates with file information.</returns>
59-
public Dictionary<string, TemplateFileInfo> GetEntitiesTemplateFileInfo()
59+
public Dictionary<string, TemplateFileInfo> GetEntitiesTemplateFileInfo(ITemplateFileService fileService)
6060
{
6161
var result = new Dictionary<string, TemplateFileInfo>
6262
{

0 commit comments

Comments
 (0)