diff --git a/src/Luban.Job.Cfg/Source/JobController.cs b/src/Luban.Job.Cfg/Source/JobController.cs index 9588669..b22bd1f 100644 --- a/src/Luban.Job.Cfg/Source/JobController.cs +++ b/src/Luban.Job.Cfg/Source/JobController.cs @@ -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; } diff --git a/src/Luban.Job.Common/Source/GenArgsBase.cs b/src/Luban.Job.Common/Source/GenArgsBase.cs new file mode 100644 index 0000000..1c97152 --- /dev/null +++ b/src/Luban.Job.Common/Source/GenArgsBase.cs @@ -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; + } + } +} diff --git a/src/Luban.Job.Db/Source/Generate/TypescriptRender.cs b/src/Luban.Job.Db/Source/Generate/TypescriptRender.cs index fda69ca..42fd697 100644 --- a/src/Luban.Job.Db/Source/Generate/TypescriptRender.cs +++ b/src/Luban.Job.Db/Source/Generate/TypescriptRender.cs @@ -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.') } diff --git a/src/Luban.Job.Db/Source/JobController.cs b/src/Luban.Job.Db/Source/JobController.cs index 043f42c..bc5e355 100644 --- a/src/Luban.Job.Db/Source/JobController.cs +++ b/src/Luban.Job.Db/Source/JobController.cs @@ -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 args, out GenArgs result, out string errMsg) + private bool TryParseArg(List 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).Value; + options = (parseResult as Parsed).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} {{"); diff --git a/src/Luban.Job.Proto/Source/JobController.cs b/src/Luban.Job.Proto/Source/JobController.cs index d196a2d..cd55496 100644 --- a/src/Luban.Job.Proto/Source/JobController.cs +++ b/src/Luban.Job.Proto/Source/JobController.cs @@ -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 args, out GenArgs result, out string errMsg) + private bool TryParseArg(List 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).Value; + options = (parseResult as Parsed).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; }