- 增加 FreeSql.Generator 在目标目录产生 __razor.cshtml.txt 文件,以便自定义修改模板生成;

This commit is contained in:
28810 2019-12-20 17:21:18 +08:00
parent 5e7ba890d4
commit 80133d0af7

View File

@ -19,7 +19,7 @@ namespace FreeSql.Generator
string ArgsConnectionString { get; } string ArgsConnectionString { get; }
string ArgsFilter { get; } string ArgsFilter { get; }
string ArgsFileName { get; } string ArgsFileName { get; }
string ArgsOutput { get; } internal string ArgsOutput { get; private set; }
public ConsoleApp(string[] args, ManualResetEvent wait) public ConsoleApp(string[] args, ManualResetEvent wait)
{ {
@ -57,7 +57,16 @@ new Colorful.Formatter("v" + string.Join(".", typeof(ConsoleApp).Assembly.GetNam
ArgsNameSpace = "MyProject"; ArgsNameSpace = "MyProject";
ArgsFilter = ""; ArgsFilter = "";
ArgsFileName = "{name}.cs"; ArgsFileName = "{name}.cs";
ArgsOutput = Directory.GetCurrentDirectory(); Action<string> setArgsOutput = value =>
{
ArgsOutput = value;
ArgsOutput = ArgsOutput.Trim().TrimEnd('/', '\\');
ArgsOutput += ArgsOutput.Contains("\\") ? "\\" : "/";
if (!Directory.Exists(ArgsOutput))
Directory.CreateDirectory(ArgsOutput);
};
setArgsOutput(Directory.GetCurrentDirectory());
string args0 = args[0].Trim().ToLower(); string args0 = args[0].Trim().ToLower();
if (args[0] == "?" || args0 == "--help" || args0 == "-help") if (args[0] == "?" || args0 == "--help" || args0 == "-help")
{ {
@ -125,9 +134,9 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat双击它重新
} }
for (int a = 0; a < args.Length; a++) for (int a = 0; a < args.Length; a++)
{ {
switch (args[a]) switch (args[a].Trim().ToLower())
{ {
case "-Razor": case "-razor":
ArgsRazorRaw = args[a + 1].Trim(); ArgsRazorRaw = args[a + 1].Trim();
switch (ArgsRazorRaw) switch (ArgsRazorRaw)
{ {
@ -138,16 +147,16 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat双击它重新
a++; a++;
break; break;
case "-NameOptions": case "-nameoptions":
ArgsNameOptions = args[a + 1].Split(',').Select(opt => opt == "1").ToArray(); ArgsNameOptions = args[a + 1].Split(',').Select(opt => opt == "1").ToArray();
if (ArgsNameOptions.Length != 4) throw new ArgumentException("-NameOptions 参数错误格式为0,0,0,0"); if (ArgsNameOptions.Length != 4) throw new ArgumentException("-NameOptions 参数错误格式为0,0,0,0");
a++; a++;
break; break;
case "-NameSpace": case "-namespace":
ArgsNameSpace = args[a + 1]; ArgsNameSpace = args[a + 1];
a++; a++;
break; break;
case "-DB": case "-db":
var dbargs = args[a + 1].Split(',', 2); var dbargs = args[a + 1].Split(',', 2);
if (dbargs.Length != 2) throw new ArgumentException("-DB 参数错误格式为MySql,ConnectionString"); if (dbargs.Length != 2) throw new ArgumentException("-DB 参数错误格式为MySql,ConnectionString");
switch (dbargs[0].Trim().ToLower()) switch (dbargs[0].Trim().ToLower())
@ -162,16 +171,16 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat双击它重新
ArgsConnectionString = dbargs[1].Trim(); ArgsConnectionString = dbargs[1].Trim();
a++; a++;
break; break;
case "-Filter": case "-filter":
ArgsFilter = args[a + 1]; ArgsFilter = args[a + 1];
a++; a++;
break; break;
case "-FileName": case "-filename":
ArgsFileName = args[a + 1]; ArgsFileName = args[a + 1];
a++; a++;
break; break;
case "-Output": case "-output":
ArgsOutput = args[a + 1]; setArgsOutput(args[a + 1]);
a++; a++;
break; break;
} }
@ -179,11 +188,6 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat双击它重新
if (string.IsNullOrEmpty(ArgsConnectionString)) throw new ArgumentException($"-DB 参数错误,未提供 ConnectionString"); if (string.IsNullOrEmpty(ArgsConnectionString)) throw new ArgumentException($"-DB 参数错误,未提供 ConnectionString");
ArgsOutput = ArgsOutput.Trim().TrimEnd('/', '\\');
ArgsOutput += ArgsOutput.Contains("\\") ? "\\" : "/";
if (!Directory.Exists(ArgsOutput))
Directory.CreateDirectory(ArgsOutput);
RazorEngine.Engine.Razor = RazorEngineService.Create(new RazorEngine.Configuration.TemplateServiceConfiguration RazorEngine.Engine.Razor = RazorEngineService.Create(new RazorEngine.Configuration.TemplateServiceConfiguration
{ {
EncodedStringFactory = new RazorEngine.Text.RawStringFactory() // Raw string encoding. EncodedStringFactory = new RazorEngine.Text.RawStringFactory() // Raw string encoding.
@ -201,7 +205,6 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat双击它重新
var tables = fsql.DbFirst.GetTablesByDatabase(); var tables = fsql.DbFirst.GetTablesByDatabase();
var outputTables = tables; var outputTables = tables;
//开始生成操作 //开始生成操作
foreach (var table in outputTables) foreach (var table in outputTables)
{ {
@ -267,8 +270,16 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat双击它重新
var rebuildBat = ArgsOutput + "__重新生成.bat"; var rebuildBat = ArgsOutput + "__重新生成.bat";
if (File.Exists(rebuildBat) == false) if (File.Exists(rebuildBat) == false)
{ {
var razorCshtml = ArgsOutput + "__razor.cshtml.txt";
if (File.Exists(razorCshtml) == false)
{
File.WriteAllText(razorCshtml, ArgsRazor);
Console.WriteFormatted(" OUT -> " + razorCshtml + " (以后) 编辑它自定义模板生成\r\n", Color.Magenta);
++outputCounter;
}
File.WriteAllText(rebuildBat, $@" File.WriteAllText(rebuildBat, $@"
FreeSql.Generator -Razor {ArgsRazorRaw} -NameOptions {string.Join(",", ArgsNameOptions.Select(a => a ? 1 : 0))} -NameSpace {ArgsNameSpace} -DB ""{ArgsDbType},{ArgsConnectionString}""{(string.IsNullOrEmpty(ArgsFilter) ? "" : $" -Filter \"{ArgsFilter}\"")} -FileName ""{ArgsFileName}"" FreeSql.Generator -Razor ""__razor.cshtml.txt"" -NameOptions {string.Join(",", ArgsNameOptions.Select(a => a ? 1 : 0))} -NameSpace {ArgsNameSpace} -DB ""{ArgsDbType},{ArgsConnectionString}""{(string.IsNullOrEmpty(ArgsFilter) ? "" : $" -Filter \"{ArgsFilter}\"")} -FileName ""{ArgsFileName}""
"); ");
Console.WriteFormatted(" OUT -> " + rebuildBat + " (以后) 双击它重新生成实体\r\n", Color.Magenta); Console.WriteFormatted(" OUT -> " + rebuildBat + " (以后) 双击它重新生成实体\r\n", Color.Magenta);
++outputCounter; ++outputCounter;