build: Take protoc out of the "go generate" path
Since protoc is not go-gettable, and most development tasks in Terraform won't involve recompiling protoc files anyway, we'll use a separate mechanism for these. This way "go generate" only depends on things we can "go get" in the "make tools" target. In a later commit we should also in some way specify a particular version of protoc to use so that we don't get "flapping" regenerations as developers work with different versions, but the priority here is just to make "make generate" minimally usable again to restore the dev workflow documented in the README. This also includes some updates that resulted from running "make generate" and "make protobuf" after those Makefile changes were in place.
This commit is contained in:
parent
47921bddb7
commit
ec57927ea3
|
@ -27,7 +27,7 @@ install:
|
||||||
# packages that live there.
|
# packages that live there.
|
||||||
# See: https://github.com/golang/go/issues/12933
|
# See: https://github.com/golang/go/issues/12933
|
||||||
- bash scripts/gogetcookie.sh
|
- bash scripts/gogetcookie.sh
|
||||||
- go get github.com/kardianos/govendor
|
- make tools
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- git config --global url.https://github.com/.insteadOf ssh://git@github.com/
|
- git config --global url.https://github.com/.insteadOf ssh://git@github.com/
|
||||||
|
|
16
Makefile
16
Makefile
|
@ -9,6 +9,7 @@ tools:
|
||||||
go get -u github.com/kardianos/govendor
|
go get -u github.com/kardianos/govendor
|
||||||
go get -u golang.org/x/tools/cmd/stringer
|
go get -u golang.org/x/tools/cmd/stringer
|
||||||
go get -u golang.org/x/tools/cmd/cover
|
go get -u golang.org/x/tools/cmd/cover
|
||||||
|
go get -u github.com/golang/mock/mockgen
|
||||||
|
|
||||||
# bin generates the releaseable binaries for Terraform
|
# bin generates the releaseable binaries for Terraform
|
||||||
bin: fmtcheck generate
|
bin: fmtcheck generate
|
||||||
|
@ -70,7 +71,8 @@ cover:
|
||||||
rm coverage.out
|
rm coverage.out
|
||||||
|
|
||||||
# generate runs `go generate` to build the dynamically generated
|
# generate runs `go generate` to build the dynamically generated
|
||||||
# source files.
|
# source files, except the protobuf stubs which are built instead with
|
||||||
|
# "make protobuf".
|
||||||
generate:
|
generate:
|
||||||
@which stringer > /dev/null; if [ $$? -ne 0 ]; then \
|
@which stringer > /dev/null; if [ $$? -ne 0 ]; then \
|
||||||
go get -u golang.org/x/tools/cmd/stringer; \
|
go get -u golang.org/x/tools/cmd/stringer; \
|
||||||
|
@ -78,6 +80,16 @@ generate:
|
||||||
go generate ./...
|
go generate ./...
|
||||||
@go fmt command/internal_plugin_list.go > /dev/null
|
@go fmt command/internal_plugin_list.go > /dev/null
|
||||||
|
|
||||||
|
# We separate the protobuf generation because most development tasks on
|
||||||
|
# Terraform do not involve changing protobuf files and protoc is not a
|
||||||
|
# go-gettable dependency and so getting it installed can be inconvenient.
|
||||||
|
#
|
||||||
|
# If you are working on changes to protobuf interfaces you may either use
|
||||||
|
# this target or run the individual scripts below directly.
|
||||||
|
protobuf:
|
||||||
|
bash plugin/proto/generate.sh
|
||||||
|
bash plans/internal/planproto/generate.sh
|
||||||
|
|
||||||
fmt:
|
fmt:
|
||||||
gofmt -w $(GOFMT_FILES)
|
gofmt -w $(GOFMT_FILES)
|
||||||
|
|
||||||
|
@ -136,4 +148,4 @@ endif
|
||||||
# under parallel conditions.
|
# under parallel conditions.
|
||||||
.NOTPARALLEL:
|
.NOTPARALLEL:
|
||||||
|
|
||||||
.PHONY: bin cover default dev e2etest fmt fmtcheck generate plugin-dev quickdev test-compile test testacc testrace tools vendor-status website website-test
|
.PHONY: bin cover default dev e2etest fmt fmtcheck generate protobuf plugin-dev quickdev test-compile test testacc testrace tools vendor-status website website-test
|
||||||
|
|
3
go.mod
3
go.mod
|
@ -41,7 +41,7 @@ require (
|
||||||
github.com/gogo/protobuf v0.0.0-20180821102207-98f6aa8b3bcf // indirect
|
github.com/gogo/protobuf v0.0.0-20180821102207-98f6aa8b3bcf // indirect
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
|
||||||
github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7 // indirect
|
github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7 // indirect
|
||||||
github.com/golang/mock v0.0.0-20180503014854-22bbf0ddf081
|
github.com/golang/mock v1.1.1
|
||||||
github.com/golang/protobuf v1.2.0
|
github.com/golang/protobuf v1.2.0
|
||||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c // indirect
|
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c // indirect
|
||||||
github.com/google/go-cmp v0.2.0
|
github.com/google/go-cmp v0.2.0
|
||||||
|
@ -84,7 +84,6 @@ require (
|
||||||
github.com/jtolds/gls v4.2.1+incompatible // indirect
|
github.com/jtolds/gls v4.2.1+incompatible // indirect
|
||||||
github.com/kardianos/osext v0.0.0-20160811001526-c2c54e542fb7
|
github.com/kardianos/osext v0.0.0-20160811001526-c2c54e542fb7
|
||||||
github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba // indirect
|
github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba // indirect
|
||||||
github.com/kr/pty v1.1.3 // indirect
|
|
||||||
github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82
|
github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82
|
||||||
github.com/masterzen/azure-sdk-for-go v0.0.0-20161014135628-ee4f0065d00c // indirect
|
github.com/masterzen/azure-sdk-for-go v0.0.0-20161014135628-ee4f0065d00c // indirect
|
||||||
github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9 // indirect
|
github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9 // indirect
|
||||||
|
|
9
go.sum
9
go.sum
|
@ -87,8 +87,8 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekf
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7 h1:u4bArs140e9+AfE52mFHOXVFnOSBJBRlzTHrOPLOIhE=
|
github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7 h1:u4bArs140e9+AfE52mFHOXVFnOSBJBRlzTHrOPLOIhE=
|
||||||
github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/mock v0.0.0-20180503014854-22bbf0ddf081 h1:/tM41IiBUAMGD+3XxXi4PjGhckCkPN4wu8UIAMAUKmc=
|
github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8=
|
||||||
github.com/golang/mock v0.0.0-20180503014854-22bbf0ddf081/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/protobuf v1.1.0 h1:0iH4Ffd/meGoXqF2lSAhZHt8X+cPgkfn/cb6Cce5Vpc=
|
github.com/golang/protobuf v1.1.0 h1:0iH4Ffd/meGoXqF2lSAhZHt8X+cPgkfn/cb6Cce5Vpc=
|
||||||
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||||
|
@ -185,7 +185,6 @@ github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f26
|
||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
|
||||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4=
|
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4=
|
||||||
|
@ -303,8 +302,6 @@ github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q
|
||||||
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557 h1:Jpn2j6wHkC9wJv5iMfJhKqrZJx3TahFx+7sbZ7zQdxs=
|
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557 h1:Jpn2j6wHkC9wJv5iMfJhKqrZJx3TahFx+7sbZ7zQdxs=
|
||||||
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
||||||
github.com/zclconf/go-cty v0.0.0-20180815031001-58bb2bc0302a/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
github.com/zclconf/go-cty v0.0.0-20180815031001-58bb2bc0302a/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
||||||
github.com/zclconf/go-cty v0.0.0-20180925180032-d9b87d891d0b h1:9rQAtgrPBuyPjmPEcx4pqJs6D+u41FYbbVE/hhdsrtk=
|
|
||||||
github.com/zclconf/go-cty v0.0.0-20180925180032-d9b87d891d0b/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
|
||||||
github.com/zclconf/go-cty v0.0.0-20181017232614-01c5aba823a6 h1:Y9SzKuDy2J5QLFPmFk7/ZIzbu4/FrQK9Zwv4vjivNiM=
|
github.com/zclconf/go-cty v0.0.0-20181017232614-01c5aba823a6 h1:Y9SzKuDy2J5QLFPmFk7/ZIzbu4/FrQK9Zwv4vjivNiM=
|
||||||
github.com/zclconf/go-cty v0.0.0-20181017232614-01c5aba823a6/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
github.com/zclconf/go-cty v0.0.0-20181017232614-01c5aba823a6/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
||||||
go.opencensus.io v0.17.0 h1:2Cu88MYg+1LU+WVD+NWwYhyP0kKgRlN9QjWGaX0jKTE=
|
go.opencensus.io v0.17.0 h1:2Cu88MYg+1LU+WVD+NWwYhyP0kKgRlN9QjWGaX0jKTE=
|
||||||
|
@ -324,8 +321,6 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r
|
||||||
golang.org/x/net v0.0.0-20180811021610-c39426892332 h1:efGso+ep0DjyCBJPjvoz0HI6UldX4Md2F1rZFe1ir0E=
|
golang.org/x/net v0.0.0-20180811021610-c39426892332 h1:efGso+ep0DjyCBJPjvoz0HI6UldX4Md2F1rZFe1ir0E=
|
||||||
golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180925072008-f04abc6bdfa7 h1:zKzVgSQ8WOSHzD7I4k8LQjrHUUCNOlBsgc0PcYLVNnY=
|
|
||||||
golang.org/x/net v0.0.0-20180925072008-f04abc6bdfa7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
|
||||||
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f h1:4pRM7zYwpBjCnfA1jRmhItLxYJkaEnsmuAcRtA347DA=
|
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f h1:4pRM7zYwpBjCnfA1jRmhItLxYJkaEnsmuAcRtA347DA=
|
||||||
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced h1:4oqSq7eft7MdPKBGQK11X9WYUxmj6ZLgGTqYIbY1kyw=
|
golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced h1:4oqSq7eft7MdPKBGQK11X9WYUxmj6ZLgGTqYIbY1kyw=
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
package planproto
|
|
||||||
|
|
||||||
//go:generate protoc --go_out=paths=source_relative:. planfile.proto
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# We do not run protoc under go:generate because we want to ensure that all
|
||||||
|
# dependencies of go:generate are "go get"-able for general dev environment
|
||||||
|
# usability. To compile all protobuf files in this repository, run
|
||||||
|
# "make protobuf" at the top-level.
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
SOURCE="${BASH_SOURCE[0]}"
|
||||||
|
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
||||||
|
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
||||||
|
|
||||||
|
cd "$DIR"
|
||||||
|
|
||||||
|
protoc --go_out=paths=source_relative:. planfile.proto
|
|
@ -1,3 +0,0 @@
|
||||||
//go:generate protoc -I ./ plugin.proto --go_out=plugins=grpc:./
|
|
||||||
|
|
||||||
package proto
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# We do not run protoc under go:generate because we want to ensure that all
|
||||||
|
# dependencies of go:generate are "go get"-able for general dev environment
|
||||||
|
# usability. To compile all protobuf files in this repository, run
|
||||||
|
# "make protobuf" at the top-level.
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
SOURCE="${BASH_SOURCE[0]}"
|
||||||
|
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
||||||
|
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
||||||
|
|
||||||
|
cd "$DIR"
|
||||||
|
|
||||||
|
protoc -I ./ plugin.proto --go_out=plugins=grpc:./
|
File diff suppressed because it is too large
Load Diff
|
@ -5,16 +5,19 @@ package states
|
||||||
import "strconv"
|
import "strconv"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
_ObjectStatus_name_0 = "ObjectReady"
|
_ObjectStatus_name_0 = "ObjectPlanned"
|
||||||
_ObjectStatus_name_1 = "ObjectTainted"
|
_ObjectStatus_name_1 = "ObjectReady"
|
||||||
|
_ObjectStatus_name_2 = "ObjectTainted"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (i ObjectStatus) String() string {
|
func (i ObjectStatus) String() string {
|
||||||
switch {
|
switch {
|
||||||
case i == 82:
|
case i == 80:
|
||||||
return _ObjectStatus_name_0
|
return _ObjectStatus_name_0
|
||||||
case i == 84:
|
case i == 82:
|
||||||
return _ObjectStatus_name_1
|
return _ObjectStatus_name_1
|
||||||
|
case i == 84:
|
||||||
|
return _ObjectStatus_name_2
|
||||||
default:
|
default:
|
||||||
return "ObjectStatus(" + strconv.FormatInt(int64(i), 10) + ")"
|
return "ObjectStatus(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,18 +87,6 @@ func (n notMatcher) String() string {
|
||||||
return "not(" + n.m.String() + ")"
|
return "not(" + n.m.String() + ")"
|
||||||
}
|
}
|
||||||
|
|
||||||
type assignableToTypeOfMatcher struct {
|
|
||||||
targetType reflect.Type
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m assignableToTypeOfMatcher) Matches(x interface{}) bool {
|
|
||||||
return reflect.TypeOf(x).AssignableTo(m.targetType)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m assignableToTypeOfMatcher) String() string {
|
|
||||||
return "is assignable to " + m.targetType.Name()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
func Any() Matcher { return anyMatcher{} }
|
func Any() Matcher { return anyMatcher{} }
|
||||||
func Eq(x interface{}) Matcher { return eqMatcher{x} }
|
func Eq(x interface{}) Matcher { return eqMatcher{x} }
|
||||||
|
@ -109,16 +97,3 @@ func Not(x interface{}) Matcher {
|
||||||
}
|
}
|
||||||
return notMatcher{Eq(x)}
|
return notMatcher{Eq(x)}
|
||||||
}
|
}
|
||||||
|
|
||||||
// AssignableToTypeOf is a Matcher that matches if the parameter to the mock
|
|
||||||
// function is assignable to the type of the parameter to this function.
|
|
||||||
//
|
|
||||||
// Example usage:
|
|
||||||
//
|
|
||||||
// dbMock.EXPECT().
|
|
||||||
// Insert(gomock.AssignableToTypeOf(&EmployeeRecord{})).
|
|
||||||
// Return(errors.New("DB error"))
|
|
||||||
//
|
|
||||||
func AssignableToTypeOf(x interface{}) Matcher {
|
|
||||||
return assignableToTypeOfMatcher{reflect.TypeOf(x)}
|
|
||||||
}
|
|
||||||
|
|
|
@ -215,7 +215,7 @@ github.com/go-test/deep
|
||||||
github.com/gogo/protobuf/gogoproto
|
github.com/gogo/protobuf/gogoproto
|
||||||
github.com/gogo/protobuf/proto
|
github.com/gogo/protobuf/proto
|
||||||
github.com/gogo/protobuf/protoc-gen-gogo/descriptor
|
github.com/gogo/protobuf/protoc-gen-gogo/descriptor
|
||||||
# github.com/golang/mock v0.0.0-20180503014854-22bbf0ddf081
|
# github.com/golang/mock v1.1.1
|
||||||
github.com/golang/mock/gomock
|
github.com/golang/mock/gomock
|
||||||
# github.com/golang/protobuf v1.2.0
|
# github.com/golang/protobuf v1.2.0
|
||||||
github.com/golang/protobuf/proto
|
github.com/golang/protobuf/proto
|
||||||
|
|
Loading…
Reference in New Issue