RazorPageGenerator: extracted creating RazorEngine into a method [refactoring] (#1727)
* RazorPageGenerator: extracted creating RazorEngine into a method to simplify reusing logic in custom generators RazorPageGenerator: added optional cli argument with base directory (previously current dir always was used)
This commit is contained in:
parent
984713c297
commit
a0733ffa91
|
|
@ -14,17 +14,25 @@ namespace RazorPageGenerator
|
||||||
{
|
{
|
||||||
public static int Main(string[] args)
|
public static int Main(string[] args)
|
||||||
{
|
{
|
||||||
if (args == null || args.Length != 1)
|
if (args == null || args.Length < 1)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Invalid argument(s).");
|
Console.WriteLine("Invalid argument(s).");
|
||||||
Console.WriteLine("Usage: dotnet razorpagegenerator <root-namespace-of-views>");
|
Console.WriteLine(@"Usage:
|
||||||
Console.WriteLine("Example: dotnet razorpagegenerator Microsoft.AspNetCore.Diagnostics.RazorViews");
|
dotnet razorpagegenerator <root-namespace-of-views> [path]
|
||||||
|
Examples:
|
||||||
|
dotnet razorpagegenerator Microsoft.AspNetCore.Diagnostics.RazorViews
|
||||||
|
- processes all views in ""Views"" subfolders of the current directory
|
||||||
|
dotnet razorpagegenerator Microsoft.AspNetCore.Diagnostics.RazorViews c:\project
|
||||||
|
- processes all views in ""Views"" subfolders of c:\project directory
|
||||||
|
");
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
var rootNamespace = args[0];
|
var rootNamespace = args[0];
|
||||||
var targetProjectDirectory = Directory.GetCurrentDirectory();
|
var targetProjectDirectory = args.Length > 1 ? args[1] : Directory.GetCurrentDirectory();
|
||||||
var results = MainCore(rootNamespace, targetProjectDirectory);
|
var razorEngine = CreateRazorEngine(rootNamespace);
|
||||||
|
var results = MainCore(razorEngine, targetProjectDirectory);
|
||||||
|
|
||||||
foreach (var result in results)
|
foreach (var result in results)
|
||||||
{
|
{
|
||||||
|
|
@ -37,7 +45,7 @@ namespace RazorPageGenerator
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IList<RazorPageGeneratorResult> MainCore(string rootNamespace, string targetProjectDirectory)
|
public static RazorEngine CreateRazorEngine(string rootNamespace, Action<IRazorEngineBuilder> configure = null)
|
||||||
{
|
{
|
||||||
var razorEngine = RazorEngine.Create(builder =>
|
var razorEngine = RazorEngine.Create(builder =>
|
||||||
{
|
{
|
||||||
|
|
@ -52,8 +60,16 @@ namespace RazorPageGenerator
|
||||||
});
|
});
|
||||||
|
|
||||||
builder.Features.Add(new SuppressChecksumOptionsFeature());
|
builder.Features.Add(new SuppressChecksumOptionsFeature());
|
||||||
|
if (configure != null)
|
||||||
|
{
|
||||||
|
configure(builder);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
return razorEngine;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IList<RazorPageGeneratorResult> MainCore(RazorEngine razorEngine, string targetProjectDirectory)
|
||||||
|
{
|
||||||
var viewDirectories = Directory.EnumerateDirectories(targetProjectDirectory, "Views", SearchOption.AllDirectories);
|
var viewDirectories = Directory.EnumerateDirectories(targetProjectDirectory, "Views", SearchOption.AllDirectories);
|
||||||
var razorProject = RazorProject.Create(targetProjectDirectory);
|
var razorProject = RazorProject.Create(targetProjectDirectory);
|
||||||
var templateEngine = new RazorTemplateEngine(razorEngine, razorProject);
|
var templateEngine = new RazorTemplateEngine(razorEngine, razorProject);
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,9 @@ namespace RazorPageGenerator.Test
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var projectDirectory = TestProject.GetProjectDirectory(GetType());
|
var projectDirectory = TestProject.GetProjectDirectory(GetType());
|
||||||
|
var razorEngine = Program.CreateRazorEngine("Microsoft.AspNetCore.TestGenerated");
|
||||||
// Act
|
// Act
|
||||||
var results = Program.MainCore("Microsoft.AspNetCore.TestGenerated", projectDirectory);
|
var results = Program.MainCore(razorEngine, projectDirectory);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Collection(results,
|
Assert.Collection(results,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue