diff --git a/src/Luban.Job.Cfg/Source/Generate/ProtobufSchemaRenderBase.cs b/src/Luban.Job.Cfg/Source/Generate/ProtobufSchemaRenderBase.cs index d6976ad..6fbd858 100644 --- a/src/Luban.Job.Cfg/Source/Generate/ProtobufSchemaRenderBase.cs +++ b/src/Luban.Job.Cfg/Source/Generate/ProtobufSchemaRenderBase.cs @@ -5,6 +5,7 @@ using Luban.Job.Common.Generate; using Luban.Job.Common.Utils; using System; using System.Collections.Generic; +using System.IO.Packaging; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -13,13 +14,33 @@ namespace Luban.Job.Cfg.Generate { abstract class ProtobufSchemaRenderBase : TemplateCodeRenderBase { + public string GoPackage; + public override void Render(GenContext ctx) { DefAssembly.LocalAssebmly.CurrentLanguage = Common.ELanguage.PROTOBUF; var file = RenderFileUtil.GetFileOrDefault(ctx.GenArgs.OutputCodeMonolithicFile, "schema.proto"); + GoPackage = ctx.GenArgs.ProtobufGoPackge; var content = this.RenderAll(ctx.ExportTypes); var md5 = CacheFileUtil.GenMd5AndAddCache(file, string.Join('\n', content)); ctx.GenCodeFilesInOutputCodeDir.Add(new FileInfo() { FilePath = file, MD5 = md5 }); } + + public override string RenderAll(List types) + { + var enums = types.Where(t => t is DefEnum).ToList(); + var beans = types.Where(t => t is DefBean).ToList(); + var tables = types.Where(t => t is DefTable).ToList(); + + var template = GetConfigTemplate("all"); + var result = template.RenderCode(new { + Namespace = DefAssembly.LocalAssebmly.TopModule, + Go = GoPackage, + Enums = enums.Select(e => Render((DefEnum)e)).ToList(), + Beans = beans.Select(b => Render((DefBean)b)).ToList(), + Tables = tables.Select(t => Render((DefTable)t)).ToList(), + }); + return result; + } } } diff --git a/src/Luban.Job.Common/Source/GenArgsBase.cs b/src/Luban.Job.Common/Source/GenArgsBase.cs index 9c29d43..bd952de 100644 --- a/src/Luban.Job.Common/Source/GenArgsBase.cs +++ b/src/Luban.Job.Common/Source/GenArgsBase.cs @@ -59,6 +59,9 @@ namespace Luban.Job.Common [Option("external:selectors", Required = false, HelpText = "external selectors")] public string ExternalSelectors { get; set; } + [Option("protobuf:go_package", Required = false, HelpText = "option go_package")] + public string ProtobufGoPackge { get; set; } + public AccessConvention AccessConventionBeanMember { get; set; } public bool ValidateOutouptCodeDir(ref string errMsg) diff --git a/src/Luban.Server/Templates/config/protobuf3/all.tpl b/src/Luban.Server/Templates/config/protobuf3/all.tpl index 4581f78..cbea803 100644 --- a/src/Luban.Server/Templates/config/protobuf3/all.tpl +++ b/src/Luban.Server/Templates/config/protobuf3/all.tpl @@ -2,6 +2,8 @@ package {{x.namespace}}; +option go_package = "{{x.go}}"; + // luban internal types begin message Vector2 { float x = 1;