Skip to content

generate code for different programming language based on the breeze schema

License

Notifications You must be signed in to change notification settings

weibreeze/breeze-generator

Folders and files

NameName
Last commit message
Last commit date
Apr 21, 2022
Apr 21, 2022
Apr 25, 2022
Apr 21, 2022
Apr 21, 2022
Apr 25, 2022
Nov 2, 2020
May 30, 2019
May 15, 2019
Apr 25, 2022
May 15, 2019
Apr 25, 2022
Nov 2, 2020
Nov 2, 2020

Repository files navigation

Breeze-Generator

License Build Status codecov GoDoc Go Report Card

概述

根据Breeze Schema生成各种语言的Breeze Message对象类。目前支持Java、PHP、Golang、C++。

快速入门

生成代码的样例如下:

    func testGenerateCode() {
        path := "./main" // path can be a dir or a file
        config := &generator.Config{WritePath: "./autoGenerate", CodeTemplates: "php, go, java", Options: make(map[string]string)}
        result, err := generator.GeneratePath(path, config) // parse schema and generate code
        fmt.Printf("%v, %v\n", result, err)
    }

其中Config用来配置Schema解析和代码生成时的配置:

  • WritePath用来指定生成代码的输出目录。

  • CodeTemplates用来指定生成代码的语言,多种语言直接使用逗号分隔。如果需要对所有语言都生成,则可以使用all作为参数值。

  • Options用来指定额外参数,例如针对不同语言生成模板的参数,比如templates.GoPackagePrefix用来指定go语言生成时统一的包前缀等。

具体代码可以参考main/test.go

做为Breeze生成服务器

可以使用GenerateCodeHandler做为http server来为Breeze的intellij插件 提供生成服务。样例代码如下:

    func main() {
        port := 8899
        path := "/generate_code"
        http.Handle(path, &breezeHttp.GenerateCodeHandler{})
        http.ListenAndServe(":"+strconv.Itoa(port), nil)
        select {}
    }

转换protobuf为breeze

生成器可以转换protobuf的.proto描述文件为breeze的.breeze描述文件。

但是有以下限制规则:

  • 类型映射 double -> float64, float -> float32, [uint32, uint64] -> int64, sint32 -> int32, sint64 -> int64, [fixed32, fixed64] -> int64, sfixed32 -> int32, sfixed64 -> int64
  • optional, required 忽略,字段默认值和拓展配置忽略。
  • 不支持message,enum嵌套。
  • 不支持import,extend,oneof,syntax,singular,repeated。
  • 其他breeze没有的特性不支持。

About

generate code for different programming language based on the breeze schema

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages