From 80133d0af76e89e8dd689983d61fd51b27b74e2f Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Fri, 20 Dec 2019 17:21:18 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20FreeSql.Generator=20?= =?UTF-8?q?=E5=9C=A8=E7=9B=AE=E6=A0=87=E7=9B=AE=E5=BD=95=E4=BA=A7=E7=94=9F?= =?UTF-8?q?=20=5F=5Frazor.cshtml.txt=20=E6=96=87=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E4=BE=BF=E8=87=AA=E5=AE=9A=E4=B9=89=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=94=9F=E6=88=90=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Extensions/FreeSql.Generator/ConsoleApp.cs | 47 +++++++++++++--------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/Extensions/FreeSql.Generator/ConsoleApp.cs b/Extensions/FreeSql.Generator/ConsoleApp.cs index c3e9b51b..6488856a 100644 --- a/Extensions/FreeSql.Generator/ConsoleApp.cs +++ b/Extensions/FreeSql.Generator/ConsoleApp.cs @@ -19,7 +19,7 @@ namespace FreeSql.Generator string ArgsConnectionString { get; } string ArgsFilter { get; } string ArgsFileName { get; } - string ArgsOutput { get; } + internal string ArgsOutput { get; private set; } public ConsoleApp(string[] args, ManualResetEvent wait) { @@ -57,7 +57,16 @@ new Colorful.Formatter("v" + string.Join(".", typeof(ConsoleApp).Assembly.GetNam ArgsNameSpace = "MyProject"; ArgsFilter = ""; ArgsFileName = "{name}.cs"; - ArgsOutput = Directory.GetCurrentDirectory(); + Action 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(); if (args[0] == "?" || args0 == "--help" || args0 == "-help") { @@ -125,9 +134,9 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新 } 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(); switch (ArgsRazorRaw) { @@ -138,16 +147,16 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新 a++; break; - case "-NameOptions": + case "-nameoptions": ArgsNameOptions = args[a + 1].Split(',').Select(opt => opt == "1").ToArray(); if (ArgsNameOptions.Length != 4) throw new ArgumentException("-NameOptions 参数错误,格式为:0,0,0,0"); a++; break; - case "-NameSpace": + case "-namespace": ArgsNameSpace = args[a + 1]; a++; break; - case "-DB": + case "-db": var dbargs = args[a + 1].Split(',', 2); if (dbargs.Length != 2) throw new ArgumentException("-DB 参数错误,格式为:MySql,ConnectionString"); switch (dbargs[0].Trim().ToLower()) @@ -162,16 +171,16 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新 ArgsConnectionString = dbargs[1].Trim(); a++; break; - case "-Filter": + case "-filter": ArgsFilter = args[a + 1]; a++; break; - case "-FileName": + case "-filename": ArgsFileName = args[a + 1]; a++; break; - case "-Output": - ArgsOutput = args[a + 1]; + case "-output": + setArgsOutput(args[a + 1]); a++; break; } @@ -179,11 +188,6 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新 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 { EncodedStringFactory = new RazorEngine.Text.RawStringFactory() // Raw string encoding. @@ -201,7 +205,6 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新 var tables = fsql.DbFirst.GetTablesByDatabase(); var outputTables = tables; - //开始生成操作 foreach (var table in outputTables) { @@ -267,8 +270,16 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新 var rebuildBat = ArgsOutput + "__重新生成.bat"; 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, $@" -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); ++outputCounter;