【重构】略微重构GenArgs类,提出公共基类及公共检查函数
parent
12e6df6090
commit
d7dbdf4b94
|
|
@ -26,10 +26,8 @@ namespace Luban.Job.Cfg
|
|||
{
|
||||
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")]
|
||||
public string InputDataDir { get; set; }
|
||||
|
|
@ -37,9 +35,6 @@ namespace Luban.Job.Cfg
|
|||
[Option('v', "validate_root_dir", Required = false, HelpText = "validate root directory")]
|
||||
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")]
|
||||
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")]
|
||||
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; }
|
||||
|
||||
[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")]
|
||||
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)
|
||||
|
|
@ -179,14 +165,8 @@ namespace Luban.Job.Cfg
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -197,6 +197,8 @@ export {{x.ts_class_modifier}} class {{name}} extends {{if parent_def_type}} {{x
|
|||
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}}) {
|
||||
throw new Error('Method not implemented.')
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,23 +20,14 @@ namespace Luban.Job.Db
|
|||
{
|
||||
public class JobController : IJobController
|
||||
{
|
||||
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,typescript . current only support cs")]
|
||||
[Option('g', "gen_type", Required = true, HelpText = "cs,typescript ")]
|
||||
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 parser = new Parser(ps =>
|
||||
|
|
@ -47,12 +38,20 @@ namespace Luban.Job.Db
|
|||
if (parseResult.Tag == ParserResultType.NotParsed)
|
||||
{
|
||||
errMsg = helpWriter.ToString();
|
||||
result = null;
|
||||
options = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
result = (parseResult as Parsed<GenArgs>).Value;
|
||||
options = (parseResult as Parsed<GenArgs>).Value;
|
||||
errMsg = null;
|
||||
if (!options.ValidateOutouptCodeDir(ref errMsg))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!options.ValidateTypescriptRequire(options.GenType, ref errMsg))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -146,7 +145,7 @@ namespace Luban.Job.Db
|
|||
fileContent.Add($"import {{TxnTable, TxnTableGeneric}} from '{brightRequirePath}/transaction/TxnTable'");
|
||||
fileContent.Add($"import TransactionContext from '{brightRequirePath}/transaction/TransactionContext'");
|
||||
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} {{");
|
||||
|
||||
|
|
|
|||
|
|
@ -23,32 +23,17 @@ namespace Luban.Job.Proto
|
|||
{
|
||||
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")]
|
||||
public string GenType { get; set; }
|
||||
|
||||
[Option('s', "service", Required = true, HelpText = "service")]
|
||||
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 parser = new Parser(ps =>
|
||||
|
|
@ -59,25 +44,21 @@ namespace Luban.Job.Proto
|
|||
if (parseResult.Tag == ParserResultType.NotParsed)
|
||||
{
|
||||
errMsg = helpWriter.ToString();
|
||||
result = null;
|
||||
options = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
result = (parseResult as Parsed<GenArgs>).Value;
|
||||
options = (parseResult as Parsed<GenArgs>).Value;
|
||||
errMsg = null;
|
||||
|
||||
|
||||
if (!result.UsePuertsByteBuf && string.IsNullOrWhiteSpace(result.TypescriptBrightRequirePath))
|
||||
if (!options.ValidateOutouptCodeDir(ref errMsg))
|
||||
{
|
||||
errMsg = $"while use_puerts_bytebuf is false, should provide option --typescript_bright_require_path";
|
||||
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 true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue