From 5905cbeb71f168c4805de9609cb5385a30150919 Mon Sep 17 00:00:00 2001 From: "xiang.li" Date: Tue, 11 Jul 2023 18:57:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20protobuf=20go=5Fpa?= =?UTF-8?q?ckage=20=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Generate/ProtobufSchemaRenderBase.cs | 21 +++++++++++++++++++ src/Luban.Job.Common/Source/GenArgsBase.cs | 3 +++ .../Templates/config/protobuf3/all.tpl | 2 ++ 3 files changed, 26 insertions(+) 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;