# Proto codegen script. # Canonical .proto lives at repo-root proto/ (language-neutral contract). # Generated Go code (*.pb.go / *_grpc.pb.go) is written into src/go/proto/ and # committed to git, so cloning + `go build` works without protoc. # Only re-run this when the .proto contract changes. $ErrorActionPreference = 'Stop' $root = Split-Path $PSScriptRoot -Parent # repo root $protoc = 'D:\RJ\Tool\Anaconda3\Library\bin\protoc.exe' $gopath = 'C:\Users\Administrator\go' # protoc needs protoc-gen-go / protoc-gen-go-grpc (in GOPATH\bin) on PATH $env:GOPATH = $gopath $env:PATH = "$gopath\bin;$env:PATH" $protoRoot = Join-Path $root 'proto' # proto import root $goOut = Join-Path $root 'src\go\proto' # Go output root (module-relative proto/) New-Item -ItemType Directory -Force $goOut | Out-Null & $protoc "--proto_path=$protoRoot" ` "--go_out=$goOut" --go_opt=paths=source_relative ` "--go-grpc_out=$goOut" --go-grpc_opt=paths=source_relative ` contract/v1/contract.proto if ($LASTEXITCODE -ne 0) { throw "protoc failed (exit $LASTEXITCODE)" } Write-Host "Proto generated: src/go/proto/contract/v1/*.pb.go (from proto/contract/v1/contract.proto)"