Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

生成 model 文件路径不符合预期 #1154

Open
sscui opened this issue Jul 15, 2024 · 6 comments · May be fixed by #1155
Open

生成 model 文件路径不符合预期 #1154

sscui opened this issue Jul 15, 2024 · 6 comments · May be fixed by #1155

Comments

@sscui
Copy link

sscui commented Jul 15, 2024

Describe the bug

我在 proto 文件中定义了 go_packages,然后我使用 hz update 去生成相应的model文件,结果生成的文件路径与我在 proto 定义的文件路径不符

Replay
我的项目名为 hello

  1. 创建 idl/hello/hello.proto 文件
  2. 将 demo 中的文件内容复制进去
  3. 编辑 go_packages 路径(只要路径中包含 “hello”子字串即可,此处假设为 hertz/hello1 )
  4. 运行 hz new -module hello -I idl -idl idl/hello/hello.proto
  5. hello.pb.go 预期应该生成在 biz/model 下的 hertz/hello1 文件夹。但是实际上却是在 biz/model 的根目录下
  6. 编辑 go_packages 路径更新为 hertz/hell
  7. 运行 hz update -I idl -idl idl/hello/hello.proto
  8. 实际运行结果如预期:hello.pb.go 生成在 biz/model 下的 hertz/hell 文件夹

Note
只要我的go_packages 路径中包含或者等于 hello,这个实际生成的 pb 文件路径就会有问题

Hertz version:

hz -version
hz version v0.9.0
@3DRX 3DRX linked a pull request Jul 16, 2024 that will close this issue
3 tasks
@3DRX
Copy link
Contributor

3DRX commented Jul 16, 2024

我在 #1155 试着修复了一下这个问题,不清楚是否是这个功能设计时的本意,请 review。

@Skyenought
Copy link
Contributor

Skyenought commented Jul 16, 2024

你好, 这是我使用的 proto 文件

syntax = "proto3";

package hello;

option go_package = "hertz/hello";

import "api.proto";

message HelloReq {
  string Name = 1[(api.query)="name"];
}

message HelloResp {
  string RespBody = 1;
}

service HelloService {
  rpc Method1(HelloReq) returns(HelloResp) {
    option (api.get) = "/hello";
  }
}

依据 go_package 定义, 它应该生成在 biz/model/hello/hello.pb.go
我并没有复现出你的问题.

或者你可以提供你的 proto 用于我们来确定问题的来源

@sscui
Copy link
Author

sscui commented Jul 16, 2024

option go_package = "hertz/hello"; 不应该是 biz/model/hertz/hello/hello.pb.go 吗?实际上它的生成文件是在 biz/model/hello.pb.go
关键点可能是 hz new -module hello -I idl -idl idl/hello/hello.proto 的 module 是 hello,而不是文档中的 example.com/m。这导致 module 是我 go_package 的一个子串

@Skyenought
Copy link
Contributor

ok, 确实是存在相应的问题的, 我来 cr 一下

@Skyenought
Copy link
Contributor

但是 预期生成路径应该是 biz/model + go_package 中定义的路径, 所以说 biz/model/hello/hello.pb.go 这个路径是没有错误的

@FGYFFFF
Copy link
Contributor

FGYFFFF commented Aug 23, 2024

这块最好的选择是重新命名 module,例如 github.com/cloudwego/hello 这样。 我看看是不是也把同学的优化合进去

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging a pull request may close this issue.

4 participants