Skip to content

Commit 3338c3f

Browse files
Upgrade cel-go to support bazel-mod (#1049)
* Support for cel-spec v0.18.0 * Minor update to the WORKSPACE * Update go version in Cloud Build
1 parent 7c13168 commit 3338c3f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+5524
-214
lines changed

.bazelversion

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6.4.0
1+
7.0.1

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ bazel-testlogs
99
proto/checked.pb.go
1010
proto/syntax.pb.go
1111
*~
12+
MODULE.bazel.lock

MODULE.bazel

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
module(
2+
name = "cel-go",
3+
)
4+
5+
bazel_dep(
6+
name = "bazel_skylib",
7+
version = "1.7.1",
8+
)
9+
bazel_dep(
10+
name = "gazelle",
11+
version = "0.39.1",
12+
repo_name = "bazel_gazelle",
13+
)
14+
bazel_dep(
15+
name = "googleapis",
16+
version = "0.0.0-20240819-fe8ba054a",
17+
repo_name = "com_google_googleapis",
18+
)
19+
bazel_dep(
20+
name = "protobuf",
21+
version = "26.0",
22+
repo_name = "com_google_protobuf",
23+
)
24+
bazel_dep(
25+
name = "rules_go",
26+
version = "0.50.1",
27+
repo_name = "io_bazel_rules_go",
28+
)
29+
bazel_dep(
30+
name = "rules_proto",
31+
version = "6.0.0",
32+
)
33+
34+
switched_rules = use_extension("@com_google_googleapis//:extensions.bzl", "switched_rules")
35+
switched_rules.use_languages(
36+
go = True,
37+
)
38+
use_repo(switched_rules, "com_google_googleapis_imports")
39+
40+
go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk")
41+
go_sdk.download(version = "1.21.1")
42+
43+
go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
44+
go_deps.gazelle_default_attributes(
45+
directives = [
46+
"gazelle:proto disable_global",
47+
],
48+
)
49+
go_deps.gazelle_override(
50+
# Force Gazelle to wipe out the existing build files before regenerate them.
51+
build_file_generation = "on",
52+
directives = [
53+
"gazelle:go_generate_proto false",
54+
# Provide hints to gazelle about how includes and imports map to build targets
55+
"gazelle:resolve go cel.dev/expr @dev_cel_expr//:expr",
56+
"gazelle:resolve proto go google/rpc/status.proto @org_golang_google_genproto_googleapis_rpc//status",
57+
"gazelle:resolve proto proto google/rpc/status.proto @googleapis//google/rpc:status_proto",
58+
],
59+
path = "cel.dev/expr",
60+
)
61+
go_deps.from_file(go_mod = "//:go.mod")
62+
go_deps.module(
63+
path = "gopkg.in/yaml.v3",
64+
sum = "h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=",
65+
version = "v3.0.1",
66+
)
67+
go_deps.module(
68+
path = "github.com/chzyer/readline",
69+
sum = "h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI=",
70+
version = "v1.5.1",
71+
)
72+
go_deps.module(
73+
path = "github.com/google/go-cmp",
74+
sum = "h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=",
75+
version = "v0.5.9",
76+
)
77+
use_repo(
78+
go_deps,
79+
"com_github_antlr4_go_antlr_v4",
80+
"com_github_chzyer_readline",
81+
"com_github_google_go_cmp",
82+
"com_github_stoewer_go_strcase",
83+
"dev_cel_expr",
84+
"in_gopkg_yaml_v3",
85+
"org_golang_google_genproto_googleapis_api",
86+
"org_golang_google_genproto_googleapis_rpc",
87+
"org_golang_google_protobuf",
88+
"org_golang_x_text",
89+
)

WORKSPACE

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -82,21 +82,6 @@ go_repository(
8282
version = "v0.0.0-20240823204242-4ba0660f739c",
8383
)
8484

85-
# gRPC deps for v1.49.0 (including x/text and x/net)
86-
go_repository(
87-
name = "org_golang_google_grpc",
88-
build_file_proto_mode = "disable_global",
89-
importpath = "google.golang.org/grpc",
90-
tag = "v1.49.0",
91-
)
92-
93-
go_repository(
94-
name = "org_golang_x_net",
95-
importpath = "golang.org/x/net",
96-
sum = "h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=",
97-
version = "v0.0.0-20190311183353-d8887717615a",
98-
)
99-
10085
go_repository(
10186
name = "org_golang_x_text",
10287
importpath = "golang.org/x/text",
@@ -112,16 +97,17 @@ go_repository(
11297
version = "v4.13.0",
11398
)
11499

115-
# CEL Spec deps (v0.16.1)
100+
# CEL Spec deps
116101
go_repository(
117-
name = "com_google_cel_spec",
118-
commit = "aa4eb92b7d469b32ff1a767ef4ef340b2d05a5d0",
102+
name = "dev_cel_expr",
119103
importpath = "cel.dev/expr",
104+
sum = "h1:CJ6drgk+Hf96lkLikr4rFf19WrU0BOWEihyZnI2TAzo=",
105+
version = "v0.18.0",
120106
)
121107

122108
# local_repository(
123-
# name = "com_google_cel_spec",
124-
# path = "<abs/path>/github.com/google/cel-spec",
109+
# name = "dev_cel_expr",
110+
# path = "</abs/path>/github.com/google/cel-spec",
125111
# )
126112

127113
# strcase deps
@@ -167,7 +153,7 @@ go_repository(
167153
# of the above repositories but at different versions, so ours must come first.
168154
go_rules_dependencies()
169155

170-
go_register_toolchains(version = "1.21.0")
156+
go_register_toolchains(version = "1.21.1")
171157

172158
gazelle_dependencies()
173159

WORKSPACE.bzlmod

Whitespace-only changes.

cel/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ go_library(
3939
"//common/types/traits:go_default_library",
4040
"//interpreter:go_default_library",
4141
"//parser:go_default_library",
42+
"@dev_cel_expr//:expr",
4243
"@org_golang_google_genproto_googleapis_api//expr/v1alpha1:go_default_library",
4344
"@org_golang_google_protobuf//proto:go_default_library",
4445
"@org_golang_google_protobuf//reflect/protodesc:go_default_library",
@@ -81,7 +82,6 @@ go_test(
8182
"//test:go_default_library",
8283
"//test/proto2pb:go_default_library",
8384
"//test/proto3pb:go_default_library",
84-
"@io_bazel_rules_go//proto/wkt:descriptor_go_proto",
8585
"@org_golang_google_genproto_googleapis_api//expr/v1alpha1:go_default_library",
8686
"@org_golang_google_protobuf//proto:go_default_library",
8787
"@org_golang_google_protobuf//encoding/prototext:go_default_library",

cel/decls.go

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/google/cel-go/common/types"
2424
"github.com/google/cel-go/common/types/ref"
2525

26+
celpb "cel.dev/expr"
2627
exprpb "google.golang.org/genproto/googleapis/api/expr/v1alpha1"
2728
)
2829

@@ -312,20 +313,34 @@ func ExprTypeToType(t *exprpb.Type) (*Type, error) {
312313

313314
// ExprDeclToDeclaration converts a protobuf CEL declaration to a CEL-native declaration, either a Variable or Function.
314315
func ExprDeclToDeclaration(d *exprpb.Decl) (EnvOption, error) {
316+
return AlphaProtoAsDeclaration(d)
317+
}
318+
319+
// AlphaProtoAsDeclaration converts a v1alpha1.Decl value describing a variable or function into an EnvOption.
320+
func AlphaProtoAsDeclaration(d *exprpb.Decl) (EnvOption, error) {
321+
canonical := &celpb.Decl{}
322+
if err := convertProto(d, canonical); err != nil {
323+
return nil, err
324+
}
325+
return ProtoAsDeclaration(canonical)
326+
}
327+
328+
// ProtoAsDeclaration converts a canonical celpb.Decl value describing a variable or function into an EnvOption.
329+
func ProtoAsDeclaration(d *celpb.Decl) (EnvOption, error) {
315330
switch d.GetDeclKind().(type) {
316-
case *exprpb.Decl_Function:
331+
case *celpb.Decl_Function:
317332
overloads := d.GetFunction().GetOverloads()
318333
opts := make([]FunctionOpt, len(overloads))
319334
for i, o := range overloads {
320335
args := make([]*Type, len(o.GetParams()))
321336
for j, p := range o.GetParams() {
322-
a, err := types.ExprTypeToType(p)
337+
a, err := types.ProtoAsType(p)
323338
if err != nil {
324339
return nil, err
325340
}
326341
args[j] = a
327342
}
328-
res, err := types.ExprTypeToType(o.GetResultType())
343+
res, err := types.ProtoAsType(o.GetResultType())
329344
if err != nil {
330345
return nil, err
331346
}
@@ -336,15 +351,15 @@ func ExprDeclToDeclaration(d *exprpb.Decl) (EnvOption, error) {
336351
}
337352
}
338353
return Function(d.GetName(), opts...), nil
339-
case *exprpb.Decl_Ident:
340-
t, err := types.ExprTypeToType(d.GetIdent().GetType())
354+
case *celpb.Decl_Ident:
355+
t, err := types.ProtoAsType(d.GetIdent().GetType())
341356
if err != nil {
342357
return nil, err
343358
}
344359
if d.GetIdent().GetValue() == nil {
345360
return Variable(d.GetName(), t), nil
346361
}
347-
val, err := ast.ConstantToVal(d.GetIdent().GetValue())
362+
val, err := ast.ProtoConstantAsVal(d.GetIdent().GetValue())
348363
if err != nil {
349364
return nil, err
350365
}

0 commit comments

Comments
 (0)