Skip to content

Commit e610d4d

Browse files
committed
code generator
1 parent d5f18fd commit e610d4d

File tree

9 files changed

+57
-52
lines changed

9 files changed

+57
-52
lines changed

lib/sidecar/grpc/code_generator.ex

+2
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,8 @@ defmodule Sidecar.GRPC.CodeGenerator do
273273

274274
files ->
275275
files
276+
# Exclude files that contains google folder
277+
|> Enum.reject(&String.contains?(&1, "google/"))
276278
|> Enum.filter(&String.ends_with?(&1, extension))
277279
|> Enum.sort()
278280
end

lib/sidecar/grpc/generators/actor_invoker_generator.ex

+9-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ defmodule Sidecar.GRPC.Generators.ActorInvoker do
1010
@impl true
1111
def template do
1212
"""
13+
<%= if @render do %>
1314
defmodule <%= @module %> do
1415
@moduledoc "This module provides helper functions for invoking the methods on the <%= @service_name %> actor."
1516
@@ -113,11 +114,12 @@ defmodule Sidecar.GRPC.Generators.ActorInvoker do
113114
end
114115
<% end %>
115116
end
117+
<% end %>
116118
"""
117119
end
118120

119121
@impl true
120-
def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: svcs} = _desc) do
122+
def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: [_ | _] = svcs} = _desc) do
121123
for svc <- svcs do
122124
mod_name = Util.mod_name(ctx, [Macro.camelize(svc.name)])
123125
actor_name = Macro.camelize(svc.name)
@@ -143,11 +145,16 @@ defmodule Sidecar.GRPC.Generators.ActorInvoker do
143145
actor_name: actor_name,
144146
service_name: mod_name,
145147
methods: methods,
146-
version: Util.version()
148+
version: Util.version(),
149+
render: true
147150
]}
148151
end
149152
end
150153

154+
def generate(_ctx, _opts), do: {"unknown", [render: false]}
155+
156+
defp opts(nil), do: %{}
157+
151158
defp opts(%Google.Protobuf.MethodOptions{__pb_extensions__: extensions})
152159
when extensions == %{} do
153160
%{}

lib/sidecar/grpc/generators/generator_accumulator.ex

+4-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ defmodule Sidecar.GRPC.Generators.GeneratorAccumulator do
1717
end
1818

1919
@impl true
20-
def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: svcs} = _desc) do
20+
def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: [_ | _] = svcs} = _desc) do
2121
current_services = :persistent_term.get(:grpc_services, [])
2222
descriptors = (:persistent_term.get(:proto_file_descriptors, []) ++ svcs) |> Enum.uniq()
2323

@@ -26,12 +26,11 @@ defmodule Sidecar.GRPC.Generators.GeneratorAccumulator do
2626
:persistent_term.put(:grpc_services, services)
2727
:persistent_term.put(:proto_file_descriptors, descriptors)
2828

29-
{"ProxyEndpoint",
30-
[
31-
services: services
32-
]}
29+
{"ProxyEndpoint", [render: true]}
3330
end
3431

32+
def generate(_ctx, _opts), do: {"unknown", [render: false]}
33+
3534
defp services_to_module(_ctx, nil, current_services), do: current_services
3635
defp services_to_module(_ctx, [], current_services), do: current_services
3736

lib/sidecar/grpc/generators/grpc_with_custom_options.ex

+25-18
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,31 @@ defmodule Sidecar.GRPC.Generators.GRPCWithCustomOptions do
1212
@impl true
1313
def template do
1414
"""
15-
defmodule <%= @module %>.Service do
16-
use GRPC.Service, name: <%= inspect(@service_name) %>, protoc_gen_elixir_version: "<%= @version %>"
17-
18-
<%= if @descriptor_fun_body do %>
19-
def descriptor do
20-
# credo:disable-for-next-line
21-
<%= @descriptor_fun_body %>
22-
end
23-
<% end %>
24-
25-
<%= for {method_name, input, output, options} <- @methods do %>
26-
rpc :<%= method_name %>, <%= input %>, <%= output %>, <%= options %>
27-
<% end %>
28-
end
15+
<%= if @render do %>
16+
defmodule <%= @module %>.Service do
17+
use GRPC.Service, name: <%= inspect(@service_name) %>, protoc_gen_elixir_version: "<%= @version %>"
2918
30-
defmodule <%= @module %>.Stub do
31-
use GRPC.Stub, service: <%= @module %>.Service
32-
end
19+
<%= if @descriptor_fun_body do %>
20+
def descriptor do
21+
# credo:disable-for-next-line
22+
<%= @descriptor_fun_body %>
23+
end
24+
<% end %>
25+
26+
<%= for {method_name, input, output, options} <- @methods do %>
27+
rpc :<%= method_name %>, <%= input %>, <%= output %>, <%= options %>
28+
<% end %>
29+
end
30+
31+
defmodule <%= @module %>.Stub do
32+
use GRPC.Stub, service: <%= @module %>.Service
33+
end
34+
<% end %>
3335
"""
3436
end
3537

3638
@impl true
37-
def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: svcs} = desc) do
39+
def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: [_ | _] = svcs} = desc) do
3840
for svc <- svcs do
3941
mod_name = Util.mod_name(ctx, [Macro.camelize(svc.name)])
4042
name = Util.prepend_package_prefix(ctx.package, svc.name)
@@ -61,6 +63,7 @@ defmodule Sidecar.GRPC.Generators.GRPCWithCustomOptions do
6163

6264
{mod_name,
6365
[
66+
render: true,
6467
module: mod_name,
6568
service_name: name,
6669
methods: methods,
@@ -70,9 +73,13 @@ defmodule Sidecar.GRPC.Generators.GRPCWithCustomOptions do
7073
end
7174
end
7275

76+
def generate(_ctx, _opts), do: {"unknown", [render: false]}
77+
7378
defp service_arg(type, _streaming? = true), do: "stream(#{type})"
7479
defp service_arg(type, _streaming?), do: type
7580

81+
defp opts(nil), do: %{}
82+
7683
defp opts(%Google.Protobuf.MethodOptions{__pb_extensions__: extensions})
7784
when extensions == %{} do
7885
%{}

lib/sidecar/grpc/generators/handler_generator.ex

+9-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ defmodule Sidecar.GRPC.Generators.HandlerGenerator do
1414
@impl true
1515
def template do
1616
"""
17+
<%= if @render do %>
1718
defmodule <%= @module %>.ActorDispatcher do
1819
use GRPC.Server, service: <%= @service_name %>
1920
@@ -33,13 +34,13 @@ defmodule Sidecar.GRPC.Generators.HandlerGenerator do
3334
Dispatcher.dispatch(request)
3435
end
3536
<% end %>
36-
3737
end
38+
<% end %>
3839
"""
3940
end
4041

4142
@impl true
42-
def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: svcs} = _desc) do
43+
def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: [_ | _] = svcs} = _desc) do
4344
for svc <- svcs do
4445
mod_name = Util.mod_name(ctx, [Macro.camelize(svc.name)])
4546
actor_name = Macro.camelize(svc.name)
@@ -65,14 +66,19 @@ defmodule Sidecar.GRPC.Generators.HandlerGenerator do
6566
actor_name: actor_name,
6667
service_name: mod_name,
6768
methods: methods,
68-
version: Util.version()
69+
version: Util.version(),
70+
render: true
6971
]}
7072
end
7173
end
7274

75+
def generate(_ctx, _opts), do: {"unknown", [render: false]}
76+
7377
defp service_arg(type, _streaming? = true), do: "stream(#{type})"
7478
defp service_arg(type, _streaming?), do: type
7579

80+
defp opts(nil), do: %{}
81+
7682
defp opts(%Google.Protobuf.MethodOptions{__pb_extensions__: extensions})
7783
when extensions == %{} do
7884
%{}

lib/sidecar/grpc/generators/handler_transcoding_generator.ex

+5-21
Original file line numberDiff line numberDiff line change
@@ -41,27 +41,7 @@ defmodule Sidecar.GRPC.Generators.HandlerTranscodingGenerator do
4141
end
4242

4343
@impl true
44-
def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: svcs} = _desc) do
45-
do_generate(ctx, svcs)
46-
end
47-
48-
defp do_generate(_ctx, nil),
49-
do:
50-
{"unknown",
51-
[
52-
render: false,
53-
module: "Unknown"
54-
]}
55-
56-
defp do_generate(_ctx, []),
57-
do:
58-
{"unknown",
59-
[
60-
render: false,
61-
module: "Unknown"
62-
]}
63-
64-
defp do_generate(ctx, svcs) do
44+
def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: [_ | _] = svcs} = _desc) do
6545
for svc <- svcs do
6646
mod_name = Util.mod_name(ctx, [Macro.camelize(svc.name)])
6747
actor_name = Macro.camelize(svc.name)
@@ -93,9 +73,13 @@ defmodule Sidecar.GRPC.Generators.HandlerTranscodingGenerator do
9373
end
9474
end
9575

76+
def generate(_ctx, _opts), do: {"unknown", [render: false]}
77+
9678
defp service_arg(type, _streaming? = true), do: "stream(#{type})"
9779
defp service_arg(type, _streaming?), do: type
9880

81+
defp opts(nil), do: %{}
82+
9983
defp opts(%Google.Protobuf.MethodOptions{__pb_extensions__: extensions})
10084
when extensions == %{} do
10185
%{}

spawn_operator/spawn_operator/lib/spawn_operator.ex

+2-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ defmodule SpawnOperator do
9292
Map.get(annotations, "spawn-eigr.io/actors-global-backpressure-min-demand", "-1"),
9393
actors_global_backpressure_enabled:
9494
Map.get(annotations, "spawn-eigr.io/actors-global-backpressure-enabled", "true"),
95-
grpc_include_protos_path: Map.get(annotations, "spawn-eigr.io/grpc-include-protos-path", "/shared/protos"),
95+
grpc_include_protos_path:
96+
Map.get(annotations, "spawn-eigr.io/grpc-include-protos-path", "/shared/protos")
9697
}
9798
end
9899
end

spawn_operator/spawn_operator/lib/spawn_operator/k8s/proxy/configmap/sidecar_configmap.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ defmodule SpawnOperator.K8s.Proxy.CM.Configmap do
160160
"ACTORS_GLOBAL_BACKPRESSURE_MIN_DEMAND" =>
161161
annotations.actors_global_backpressure_min_demand,
162162
"ACTORS_GLOBAL_BACKPRESSURE_ENABLED" => annotations.actors_global_backpressure_enabled,
163-
"PROXY_GRPC_INCLUDE_PROTOS_PATH" => annotations.grpc_include_protos_path,
163+
"PROXY_GRPC_INCLUDE_PROTOS_PATH" => annotations.grpc_include_protos_path
164164
}
165165
}
166166
end

spawn_operator/spawn_operator/lib/spawn_operator/k8s/proxy/deployment.ex

-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ defmodule SpawnOperator.K8s.Proxy.Deployment do
6666
"name" => "shared-volume",
6767
"emptyDir" => %{}
6868
}
69-
7069

7170
@default_certs_volume %{
7271
"name" => "certs",

0 commit comments

Comments
 (0)