Dependency tool for Protocol Buffers IDL file (.proto) vendoring tool.
In building Microservices architecture, gRPC with Protocol Buffers is effective. When using gRPC, your application will depend on many remote services.
If you manage proto files in a git repository, what will you do? Most remote services are managed by git and they will be versioned. We need to control which dependency service version that application uses.
$ go install -v github.com/odinnou/protodep@v0.1.7
Support as follows:
- protodep_darwin_amd64.tar.gz
- protodep_darwin_arm64.tar.gz
- protodep_linux_386.tar.gz
- protodep_linux_amd64.tar.gz
- protodep_linux_arm.tar.gz
- protodep_linux_arm64.tar.gz
$ wget https://github.com/odinnou/protodep/releases/download/0.1.4/protodep_darwin_amd64.tar.gz
$ tar -xf protodep_darwin_amd64.tar.gz
$ mv protodep /usr/local/bin/
Proto dependency management is defined in protodep.toml
.
proto_outdir = "./proto"
[[dependencies]]
target = "github.com/odinnou/protodep/protobuf"
branch = "master"
[[dependencies]]
target = "github.com/grpc-ecosystem/grpc-gateway/examples/examplepb"
revision = "v1.2.2"
path = "grpc-gateway/examplepb"
# blacklist by "ignores" attribute
[[dependencies]]
target = "github.com/kubernetes/helm/_proto/hapi"
branch = "master"
path = "helm/hapi"
ignores = ["./release", "./rudder", "./services", "./version"]
# whitelist by "includes" attribute
[[dependencies]]
target = "github.com/protodep/catalog/hierarchy"
branch = "main"
includes = [
"/protodep/hierarchy/service.proto",
"**/fuga/**",
]
protocol = "https"
In same directory, execute this command.
$ protodep up
If succeeded, protodep.lock
is generated.
Even if protodep.lock exists, you can force update dependenies.
$ protodep up -f
From protodep 0.1.0 supports ssh-agent, and this is the default. In other words, in order to operate protodep without options as before, it is necessary to set with ssh-add.
As the follows:
$ ssh-add ~/.ssh/id_rsa
$ protodep up
If you want to get it via HTTPS, do as follows.
$ protodep up --use-https
And also, if Basic authentication is required, do as follows. If you have 2FA enabled, specify the Personal Access Token as the password.
$ protodep up --use-https \
--basic-auth-username=your-github-username \
--basic-auth-password=your-github-password
Apache License 2.0, see LICENSE.