mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 增加 FreeSql.Generator 在目标目录产生 __razor.cshtml.txt 文件,以便自定义修改模板生成;
This commit is contained in:
parent
5e7ba890d4
commit
80133d0af7
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user