Skip to content

Commit

Permalink
enhancement(api): Separate Go module for API definitions (#1801)
Browse files Browse the repository at this point in the history
* enhancement(api): Separate Go module for API definitions

Make the generated protobuf code available as a separate module so that
they can be shared with other projects without pulling in all Cerbos
dependencies.

The `replace` directive in `go.mod` will have to be removed in a
separate PR because it's impossible to work with unpublished modules in
Go without `replace` directives.

Signed-off-by: Charith Ellawala <charith@cerbos.dev>

* Simplify Makefile

Signed-off-by: Charith Ellawala <charith@cerbos.dev>

---------

Signed-off-by: Charith Ellawala <charith@cerbos.dev>
  • Loading branch information
charithe committed Sep 14, 2023
1 parent 9bd8557 commit d4c39c9
Show file tree
Hide file tree
Showing 12 changed files with 1,305 additions and 159 deletions.
3 changes: 0 additions & 3 deletions .gitignore
Expand Up @@ -23,6 +23,3 @@ unit.cover
integration.cover
junit.*.xml
test-times.json

go.work
go.work.sum
19 changes: 10 additions & 9 deletions Makefile
Expand Up @@ -19,7 +19,7 @@ all: clean build

.PHONY: clean
clean:
@-rm -rf $(GEN_DIR)
@-rm -rf $(GEN_DIR)/cerbos
@-rm -rf $(MOCK_DIR)
@-rm -rf $(DOCS_OUT_DIR)
@-rm -rf $(JSONSCHEMA_DIR)
Expand All @@ -40,23 +40,24 @@ lint-helm:
@ deploy/charts/validate.sh

.PHONY: generate
generate: clean generate-proto-code generate-json-schemas generate-testdata-json-schemas generate-mocks deps confdocs
generate: clean generate-proto-code generate-json-schemas generate-testdata-json-schemas generate-mocks confdocs

.PHONY: generate-proto-code
generate-proto-code: proto-gen-deps
@-rm -rf $(GEN_DIR)
generate-proto-code: $(BUF)
@-rm -rf $(GEN_DIR)/cerbos
@ $(BUF) format -w
@ $(BUF) generate --template '$(BUF_GEN_TEMPLATE)' .
@ cd tools && $(BUF) generate --template=api.gen.yaml --output=.. ..
@ GOWORK=off go mod tidy -C $(GEN_DIR)

.PHONY: generate-json-schemas
generate-json-schemas: proto-gen-deps
generate-json-schemas: $(BUF)
@-rm -rf $(JSONSCHEMA_DIR)
@ $(BUF) generate --template '$(JSONSCHEMA_BUF_GEN_TEMPLATE)' api/public
@ cd tools && $(BUF) generate --template=jsonschema.gen.yaml --output=.. ../api/public

.PHONY: generate-testdata-json-schemas
generate-testdata-json-schemas: proto-gen-deps
generate-testdata-json-schemas: $(BUF)
@-rm -rf $(TESTDATA_JSONSCHEMA_DIR)
@ $(BUF) generate --template '$(TESTDATA_JSONSCHEMA_BUF_GEN_TEMPLATE)' api/private
@ cd tools && $(BUF) generate --template=testdata_jsonschema.gen.yaml --output=.. ../api/private
@ mv $(TESTDATA_JSONSCHEMA_DIR)/cerbos/private/v1/*TestCase.schema.json $(TESTDATA_JSONSCHEMA_DIR)/cerbos/private/v1/QueryPlannerTestSuite.schema.json $(TESTDATA_JSONSCHEMA_DIR)
@ rm -rf $(TESTDATA_JSONSCHEMA_DIR)/cerbos

Expand Down
20 changes: 20 additions & 0 deletions api/genpb/go.mod
@@ -0,0 +1,20 @@
module github.com/cerbos/cerbos/api/genpb

go 1.21.1

require (
github.com/envoyproxy/protoc-gen-validate v1.0.2
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0
google.golang.org/genproto/googleapis/api v0.0.0-20230911183012-2d3300fd4832
google.golang.org/grpc v1.58.0
google.golang.org/protobuf v1.31.0
)

require (
github.com/golang/protobuf v1.5.3 // indirect
golang.org/x/net v0.15.0 // indirect
golang.org/x/sys v0.12.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect
)
31 changes: 31 additions & 0 deletions api/genpb/go.sum
@@ -0,0 +1,31 @@
github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA=
github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE=
github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk=
golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g=
google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8=
google.golang.org/genproto/googleapis/api v0.0.0-20230911183012-2d3300fd4832 h1:4E7rZzBdR5LmiZx6n47Dg4AjH8JLhMQWywsYqvXNLcs=
google.golang.org/genproto/googleapis/api v0.0.0-20230911183012-2d3300fd4832/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M=
google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o=
google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
9 changes: 6 additions & 3 deletions go.mod
@@ -1,6 +1,6 @@
module github.com/cerbos/cerbos

go 1.20
go 1.21.1

require (
contrib.go.opencensus.io/exporter/prometheus v0.4.2
Expand All @@ -13,12 +13,12 @@ require (
github.com/bluele/gcache v0.0.2
github.com/bufbuild/protovalidate-go v0.3.1
github.com/cenkalti/backoff/v4 v4.2.1
github.com/cerbos/cerbos/api/genpb v0.0.0-unpublished
github.com/cerbos/cloud-api v0.1.7
github.com/cespare/xxhash v1.1.0
github.com/cespare/xxhash/v2 v2.2.0
github.com/dgraph-io/badger/v4 v4.2.0
github.com/doug-martin/goqu/v9 v9.18.0
github.com/envoyproxy/protoc-gen-validate v1.0.2
github.com/fatih/color v1.15.0
github.com/fatih/structtag v1.2.0
github.com/fergusstrange/embedded-postgres v1.24.0
Expand Down Expand Up @@ -97,7 +97,7 @@ require (
golang.org/x/sync v0.3.0
golang.org/x/tools v0.13.0
gonum.org/v1/gonum v0.14.0
google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d
google.golang.org/genproto/googleapis/api v0.0.0-20230911183012-2d3300fd4832
google.golang.org/grpc v1.58.0
google.golang.org/protobuf v1.31.0
gopkg.in/natefinch/lumberjack.v2 v2.2.1
Expand Down Expand Up @@ -165,6 +165,7 @@ require (
github.com/docker/go-units v0.5.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/envoyproxy/protoc-gen-validate v1.0.2 // indirect
github.com/felixge/httpsnoop v1.0.3 // indirect
github.com/gdamore/encoding v1.0.0 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
Expand Down Expand Up @@ -290,3 +291,5 @@ require (
modernc.org/token v1.1.0 // indirect
sigs.k8s.io/yaml v1.3.0 // indirect
)

replace github.com/cerbos/cerbos/api/genpb v0.0.0-unpublished => ./api/genpb

0 comments on commit d4c39c9

Please sign in to comment.