PowerProto 开源项目使用教程
1. 项目的目录结构及介绍
PowerProto 项目的目录结构如下:
powerproto/
├── cmd/
│ ├── powerproto/
│ │ └── main.go
├── pkg/
│ ├── config/
│ │ └── config.go
│ ├── generator/
│ │ └── generator.go
├── proto/
│ ├── example.proto
├── .gitignore
├── go.mod
├── go.sum
├── README.md
├── powerproto.yaml
目录结构介绍
- cmd/: 包含项目的入口文件,即
main.go
。 - pkg/: 包含项目的核心逻辑,分为
config
和generator
两个子目录。- config/: 负责配置文件的读取和解析。
- generator/: 负责代码生成逻辑。
- proto/: 包含示例的
.proto
文件。 - .gitignore: Git 忽略文件配置。
- go.mod 和 go.sum: Go 模块依赖管理文件。
- README.md: 项目说明文档。
- powerproto.yaml: 项目配置文件。
2. 项目的启动文件介绍
项目的启动文件位于 cmd/powerproto/main.go
。该文件是整个项目的入口点,负责初始化配置、解析命令行参数并调用相应的功能模块。
package main
import (
"fmt"
"os"
"github.com/storyicon/powerproto/pkg/config"
"github.com/storyicon/powerproto/pkg/generator"
)
func main() {
// 读取配置文件
cfg, err := config.LoadConfig("powerproto.yaml")
if err != nil {
fmt.Println("Failed to load config:", err)
os.Exit(1)
}
// 生成代码
if err := generator.Generate(cfg); err != nil {
fmt.Println("Failed to generate code:", err)
os.Exit(1)
}
fmt.Println("Code generated successfully!")
}
3. 项目的配置文件介绍
项目的配置文件为 powerproto.yaml
,该文件定义了项目的基本配置和生成代码的选项。
protoc:
latest: true
protocWorkDir: ""
plugins:
protoc-gen-go: "google.golang.org/protobuf/cmd/protoc-gen-go@latest"
protoc-gen-go-grpc: "google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest"
repositories:
GOOGLE_APIS: "https://github.com/googleapis/googleapis@75e9812478607db997376ccea247dd6928f70f45"
options:
- --go_out=
- --go_opt=paths=source_relative
- --go-grpc_out=
- --go-grpc_opt=paths=source_relative
importPaths:
- $GOPATH
- $POWERPROTO_INCLUDE
- $GOOGLE_APIS/github.com/googleapis/googleapis
postActions: []
postShell: ""
配置文件介绍
- protoc: 定义了
protoc
编译器的相关配置。- latest: 是否使用最新版本的
protoc
。 - protocWorkDir:
protoc
的工作目录。 - plugins: 定义了需要使用的插件及其版本。
- repositories: 定义了依赖的仓库及其版本。
- options: 定义了生成代码时的选项。
- importPaths: 定义了导入路径。
- postActions: 定义了生成代码后的操作。
- postShell: 定义了生成代码后执行的 Shell 命令。
- latest: 是否使用最新版本的
通过以上配置,可以灵活地控制代码生成的过程和结果。