【重构】略微重构GenArgs类,提出公共基类及公共检查函数

main
walon 2021-07-15 09:33:42 +08:00
parent 12e6df6090
commit d7dbdf4b94
5 changed files with 82 additions and 63 deletions

View File

@ -26,10 +26,8 @@ namespace Luban.Job.Cfg
{ {
private static readonly NLog.Logger s_logger = NLog.LogManager.GetCurrentClassLogger(); private static readonly NLog.Logger s_logger = NLog.LogManager.GetCurrentClassLogger();
class GenArgs class GenArgs : GenArgsBase
{ {
[Option('d', "define_file", Required = true, HelpText = "define file")]
public string DefineFile { get; set; }
[Option("input_data_dir", Required = true, HelpText = "input data dir")] [Option("input_data_dir", Required = true, HelpText = "input data dir")]
public string InputDataDir { get; set; } public string InputDataDir { get; set; }
@ -37,9 +35,6 @@ namespace Luban.Job.Cfg
[Option('v', "validate_root_dir", Required = false, HelpText = "validate root directory")] [Option('v', "validate_root_dir", Required = false, HelpText = "validate root directory")]
public string ValidateRootDir { get; set; } public string ValidateRootDir { get; set; }
[Option("output_code_dir", Required = false, HelpText = "output code directory")]
public string OutputCodeDir { get; set; }
[Option("output_data_dir", Required = true, HelpText = "output data directory")] [Option("output_data_dir", Required = true, HelpText = "output data directory")]
public string OutputDataDir { get; set; } public string OutputDataDir { get; set; }
@ -49,7 +44,7 @@ namespace Luban.Job.Cfg
[Option("output_data_json_monolithic_file", Required = false, HelpText = "output monolithic json file")] [Option("output_data_json_monolithic_file", Required = false, HelpText = "output monolithic json file")]
public string OutputDataJsonMonolithicFile { get; set; } public string OutputDataJsonMonolithicFile { get; set; }
[Option("gen_types", Required = true, HelpText = "code_cs_bin,code_cs_json,code_lua_bin,data_bin,data_lua,data_json,data_json_monolithic . can be multi")] [Option("gen_types", Required = true, HelpText = "code_cs_bin,code_cs_json,code_lua_bin,code_java_bin,code_go_bin,code_go_json,code_cpp_bin,code_python27_json,code_python3_json,code_typescript_bin,code_typescript_json,data_bin,data_lua,data_json,data_json_monolithic . can be multi")]
public string GenType { get; set; } public string GenType { get; set; }
[Option('s', "service", Required = true, HelpText = "service")] [Option('s', "service", Required = true, HelpText = "service")]
@ -75,15 +70,6 @@ namespace Luban.Job.Cfg
[Option("branch_input_data_dir", Required = false, HelpText = "branch input data root dir")] [Option("branch_input_data_dir", Required = false, HelpText = "branch input data root dir")]
public string BranchInputDataDir { get; set; } public string BranchInputDataDir { get; set; }
[Option("typescript_bright_require_path", Required = false, HelpText = "bright require path in typescript")]
public string TypescriptBrightRequirePath { get; set; }
[Option("use_puerts_bytebuf", Required = false, HelpText = "use puerts bytebuf class. default is false")]
public bool UsePuertsByteBuf { get; set; }
[Option("embed_bright_types", Required = false, HelpText = "use puerts bytebuf class. default is false")]
public bool EmbedBrightTypes { get; set; }
} }
private ICodeRender CreateCodeRender(string genType) private ICodeRender CreateCodeRender(string genType)
@ -179,14 +165,8 @@ namespace Luban.Job.Cfg
return false; return false;
} }
if (!options.UsePuertsByteBuf && string.IsNullOrWhiteSpace(options.TypescriptBrightRequirePath)) if (!options.ValidateTypescriptRequire(options.GenType, ref errMsg))
{ {
errMsg = $"while use_puerts_bytebuf is false, should provide option --typescript_bright_require_path";
return false;
}
if (!options.EmbedBrightTypes && string.IsNullOrWhiteSpace(options.TypescriptBrightRequirePath))
{
errMsg = $"while embed_bright_types is false, should provide option --typescript_bright_require_path";
return false; return false;
} }

View File

@ -0,0 +1,57 @@
using CommandLine;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Luban.Job.Common
{
public class GenArgsBase
{
[Option('d', "define_file", Required = true, HelpText = "define file")]
public string DefineFile { get; set; }
[Option('c', "output_code_dir", Required = false, HelpText = "output code directory")]
public string OutputCodeDir { get; set; }
[Option("typescript_bright_require_path", Required = false, HelpText = "bright require path in typescript")]
public string TypescriptBrightRequirePath { get; set; }
[Option("use_puerts_bytebuf", Required = false, HelpText = "use puerts bytebuf class")]
public bool UsePuertsByteBuf { get; set; }
[Option("embed_bright_types", Required = false, HelpText = "use puerts bytebuf class")]
public bool EmbedBrightTypes { get; set; }
public bool ValidateOutouptCodeDir(ref string errMsg)
{
if (string.IsNullOrWhiteSpace(this.OutputCodeDir))
{
errMsg = "--outputcodedir missing";
return false;
}
return true;
}
public bool ValidateTypescriptRequire(string genType, ref string errMsg)
{
if (genType.Contains("typescript"))
{
if (!this.UsePuertsByteBuf && string.IsNullOrWhiteSpace(this.TypescriptBrightRequirePath))
{
errMsg = $"while use_puerts_bytebuf is false, should provide option --typescript_bright_require_path";
return false;
}
if (!this.EmbedBrightTypes && string.IsNullOrWhiteSpace(this.TypescriptBrightRequirePath))
{
errMsg = $"while embed_bright_types is false, should provide option --typescript_bright_require_path";
return false;
}
}
return true;
}
}
}

View File

@ -197,6 +197,8 @@ export {{x.ts_class_modifier}} class {{name}} extends {{if parent_def_type}} {{x
super({{x.table_uid}}, ""{{x.full_name}}"") super({{x.table_uid}}, ""{{x.full_name}}"")
} }
newValue(): {{db_ts_define_type value_ttype}} { return new {{db_ts_define_type value_ttype}}() }
serializeKey(buf: ByteBuf, key: {{db_ts_define_type key_ttype}}) { serializeKey(buf: ByteBuf, key: {{db_ts_define_type key_ttype}}) {
throw new Error('Method not implemented.') throw new Error('Method not implemented.')
} }

View File

@ -20,23 +20,14 @@ namespace Luban.Job.Db
{ {
public class JobController : IJobController public class JobController : IJobController
{ {
class GenArgs class GenArgs : GenArgsBase
{ {
[Option('d', "define_file", Required = true, HelpText = "define file")] [Option('g', "gen_type", Required = true, HelpText = "cs,typescript ")]
public string DefineFile { get; set; }
[Option('c', "output_code_dir", Required = true, HelpText = "output code directory")]
public string OutputCodeDir { get; set; }
[Option('g', "gen_type", Required = true, HelpText = "cs,typescript . current only support cs")]
public string GenType { get; set; } public string GenType { get; set; }
[Option("typescript_bright_require_path", Required = true, HelpText = "bright require path in typescript")]
public string TypescriptBrightRequirePath { get; set; }
} }
private bool TryParseArg(List<string> args, out GenArgs result, out string errMsg) private bool TryParseArg(List<string> args, out GenArgs options, out string errMsg)
{ {
var helpWriter = new StringWriter(); var helpWriter = new StringWriter();
var parser = new Parser(ps => var parser = new Parser(ps =>
@ -47,12 +38,20 @@ namespace Luban.Job.Db
if (parseResult.Tag == ParserResultType.NotParsed) if (parseResult.Tag == ParserResultType.NotParsed)
{ {
errMsg = helpWriter.ToString(); errMsg = helpWriter.ToString();
result = null; options = null;
return false; return false;
} }
result = (parseResult as Parsed<GenArgs>).Value; options = (parseResult as Parsed<GenArgs>).Value;
errMsg = null; errMsg = null;
if (!options.ValidateOutouptCodeDir(ref errMsg))
{
return false;
}
if (!options.ValidateTypescriptRequire(options.GenType, ref errMsg))
{
return false;
}
return true; return true;
} }
@ -146,7 +145,7 @@ namespace Luban.Job.Db
fileContent.Add($"import {{TxnTable, TxnTableGeneric}} from '{brightRequirePath}/transaction/TxnTable'"); fileContent.Add($"import {{TxnTable, TxnTableGeneric}} from '{brightRequirePath}/transaction/TxnTable'");
fileContent.Add($"import TransactionContext from '{brightRequirePath}/transaction/TransactionContext'"); fileContent.Add($"import TransactionContext from '{brightRequirePath}/transaction/TransactionContext'");
fileContent.Add($"import {{FieldTag}} from '{brightRequirePath}/serialization/FieldTag'"); fileContent.Add($"import {{FieldTag}} from '{brightRequirePath}/serialization/FieldTag'");
fileContent.Add($"import {{TKey}} from '{brightRequirePath}/storage/TKey'"); fileContent.Add($"import TKey from '{brightRequirePath}/storage/TKey'");
fileContent.Add(@$"export namespace {ass.TopModule} {{"); fileContent.Add(@$"export namespace {ass.TopModule} {{");

View File

@ -23,32 +23,17 @@ namespace Luban.Job.Proto
{ {
private static readonly NLog.Logger s_logger = NLog.LogManager.GetCurrentClassLogger(); private static readonly NLog.Logger s_logger = NLog.LogManager.GetCurrentClassLogger();
class GenArgs class GenArgs : GenArgsBase
{ {
[Option('d', "define_file", Required = true, HelpText = "define file")]
public string DefineFile { get; set; }
[Option('c', "output_code_dir", Required = true, HelpText = "output code directory")]
public string OutputCodeDir { get; set; }
[Option('g', "gen_type", Required = true, HelpText = "cs,lua,java,cpp,ts")] [Option('g', "gen_type", Required = true, HelpText = "cs,lua,java,cpp,ts")]
public string GenType { get; set; } public string GenType { get; set; }
[Option('s', "service", Required = true, HelpText = "service")] [Option('s', "service", Required = true, HelpText = "service")]
public string Service { get; set; } public string Service { get; set; }
[Option("typescript_bright_require_path", Required = false, HelpText = "bright require path in typescript")]
public string TypescriptBrightRequirePath { get; set; }
[Option("use_puerts_bytebuf", Required = false, HelpText = "use puerts bytebuf class. default is false")]
public bool UsePuertsByteBuf { get; set; }
[Option("embed_bright_types", Required = false, HelpText = "use puerts bytebuf class. default is false")]
public bool EmbedBrightTypes { get; set; }
} }
private bool TryParseArg(List<string> args, out GenArgs result, out string errMsg) private bool TryParseArg(List<string> args, out GenArgs options, out string errMsg)
{ {
var helpWriter = new StringWriter(); var helpWriter = new StringWriter();
var parser = new Parser(ps => var parser = new Parser(ps =>
@ -59,25 +44,21 @@ namespace Luban.Job.Proto
if (parseResult.Tag == ParserResultType.NotParsed) if (parseResult.Tag == ParserResultType.NotParsed)
{ {
errMsg = helpWriter.ToString(); errMsg = helpWriter.ToString();
result = null; options = null;
return false; return false;
} }
result = (parseResult as Parsed<GenArgs>).Value; options = (parseResult as Parsed<GenArgs>).Value;
errMsg = null; errMsg = null;
if (!options.ValidateOutouptCodeDir(ref errMsg))
if (!result.UsePuertsByteBuf && string.IsNullOrWhiteSpace(result.TypescriptBrightRequirePath))
{ {
errMsg = $"while use_puerts_bytebuf is false, should provide option --typescript_bright_require_path";
return false; return false;
} }
if (!result.EmbedBrightTypes && string.IsNullOrWhiteSpace(result.TypescriptBrightRequirePath)) if (!options.ValidateTypescriptRequire(options.GenType, ref errMsg))
{ {
errMsg = $"while embed_bright_types is false, should provide option --typescript_bright_require_path";
return false; return false;
} }
return true; return true;
} }