Compare commits

..

1 Commits

Author SHA1 Message Date
xiang.li 5905cbeb71 feat: 新增 protobuf go_package 生成 2023-07-11 18:57:30 +08:00
3 changed files with 26 additions and 0 deletions

View File

@ -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<DefTypeBase> 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;
}
}
}

View File

@ -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)

View File

@ -2,6 +2,8 @@
package {{x.namespace}};
option go_package = "{{x.go}}";
// luban internal types begin
message Vector2 {
float x = 1;