gapic-generator 0.2.3 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/lib/gapic/formatting_utils.rb +9 -7
  4. data/lib/gapic/generator/version.rb +1 -1
  5. data/lib/gapic/generators/default_generator.rb +11 -10
  6. data/lib/gapic/helpers/filepath_helper.rb +1 -0
  7. data/lib/gapic/helpers/namespace_helper.rb +8 -1
  8. data/lib/gapic/presenters/field_presenter.rb +9 -9
  9. data/lib/gapic/presenters/file_presenter.rb +1 -1
  10. data/lib/gapic/presenters/gem_presenter.rb +4 -0
  11. data/lib/gapic/presenters/method_presenter.rb +24 -18
  12. data/lib/gapic/presenters/package_presenter.rb +16 -1
  13. data/lib/gapic/presenters/resource_presenter.rb +3 -9
  14. data/lib/gapic/presenters/service_presenter.rb +58 -13
  15. data/lib/gapic/resource_lookup.rb +23 -45
  16. data/lib/gapic/ruby_info.rb +93 -0
  17. data/lib/gapic/schema/api.rb +102 -1
  18. data/lib/gapic/schema/loader.rb +9 -2
  19. data/lib/gapic/schema/wrappers.rb +109 -22
  20. data/templates/default/gem/entrypoint.erb +8 -0
  21. data/templates/default/gem/gemspec.erb +1 -1
  22. data/templates/default/gem/readme.erb +15 -1
  23. data/templates/default/gem/rubocop.erb +13 -41
  24. data/templates/default/layouts/_ruby.erb +5 -4
  25. data/templates/default/lib/_package.erb +17 -0
  26. data/templates/default/lib/_service.erb +32 -0
  27. data/templates/default/package.erb +5 -5
  28. data/templates/default/proto_docs/_message.erb +2 -2
  29. data/templates/default/service.erb +5 -7
  30. data/templates/default/service/_helpers.erb +3 -0
  31. data/templates/default/service/client.erb +1 -1
  32. data/templates/default/service/client/_client.erb +13 -19
  33. data/templates/default/service/client/_config.erb +26 -26
  34. data/templates/default/service/client/_credentials.erb +1 -1
  35. data/templates/default/service/client/_operations.erb +1 -5
  36. data/templates/default/service/client/_resource.erb +1 -1
  37. data/templates/default/service/client/method/def/_options_defaults.erb +2 -2
  38. data/templates/default/service/client/method/def/_request_normal.erb +2 -2
  39. data/templates/default/service/client/method/def/_request_streaming.erb +3 -3
  40. data/templates/default/service/client/method/def/_response_normal.erb +1 -1
  41. data/templates/default/service/client/method/def/_response_paged.erb +2 -2
  42. data/templates/default/service/client/method/docs/_error.erb +1 -1
  43. data/templates/default/service/client/method/docs/_request_normal.erb +11 -6
  44. data/templates/default/service/client/method/docs/_request_streaming.erb +2 -2
  45. data/templates/default/service/client/method/docs/_response.erb +1 -1
  46. data/templates/default/service/client/resource/_def.erb +1 -1
  47. data/templates/default/service/client/resource/_multi.erb +2 -2
  48. data/templates/default/service/client/resource/_single.erb +1 -1
  49. data/templates/default/service/credentials.erb +1 -1
  50. data/templates/default/service/operations.erb +1 -1
  51. data/templates/default/service/paths.erb +1 -1
  52. data/templates/default/service/test/client.erb +16 -2
  53. data/templates/default/service/test/client_operations.erb +2 -2
  54. data/templates/default/service/test/method/_configure.erb +19 -0
  55. metadata +9 -4
  56. data/templates/default/service/client/_helpers.erb +0 -9
@@ -1,6 +1,6 @@
1
1
  <%- assert_locals resource -%>
2
2
  <%- if resource.patterns.count == 1 -%>
3
3
  <%= render partial: "service/client/resource/single", locals: { resource: resource } %>
4
- <%- else -%>
4
+ <%- elsif !resource.patterns.empty? -%>
5
5
  <%= render partial: "service/client/resource/multi", locals: { resource: resource } %>
6
6
  <%- end -%>
@@ -1,12 +1,12 @@
1
1
  <%- assert_locals method -%>
2
2
  # Converts hash and nil to an options object
3
- options = Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
3
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
4
4
 
5
5
  # Customize the options with defaults
6
6
  metadata = @config.rpcs.<%= method.name %>.metadata.to_h
7
7
 
8
8
  # Set x-goog-api-client and x-goog-user-project headers
9
- metadata[:"x-goog-api-client"] ||= Gapic::Headers.x_goog_api_client \
9
+ metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
10
10
  lib_name: @config.lib_name, lib_version: @config.lib_version,
11
11
  gapic_version: ::<%= method.service.gem.version_name_full %>
12
12
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
@@ -1,4 +1,4 @@
1
1
  <%- assert_locals method -%>
2
- raise ArgumentError, "request must be provided" if request.nil?
2
+ raise ::ArgumentError, "request must be provided" if request.nil?
3
3
 
4
- request = Gapic::Protobuf.coerce request, to: <%= method.request_type %>
4
+ request = ::Gapic::Protobuf.coerce request, to: <%= method.request_type %>
@@ -1,9 +1,9 @@
1
1
  <%- assert_locals method -%>
2
- unless request.is_a? Enumerable
3
- raise ArgumentError, "request must be an Enumerable" unless request.respond_to? :to_enum
2
+ unless request.is_a? ::Enumerable
3
+ raise ::ArgumentError, "request must be an Enumerable" unless request.respond_to? :to_enum
4
4
  request = request.to_enum
5
5
  end
6
6
 
7
7
  request = request.lazy.map do |req|
8
- Gapic::Protobuf.coerce req, to: <%= method.request_type %>
8
+ ::Gapic::Protobuf.coerce req, to: <%= method.request_type %>
9
9
  end
@@ -1,7 +1,7 @@
1
1
  <%- assert_locals method -%>
2
2
  @<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |response, operation|
3
3
  <%- if method.lro? -%>
4
- response = Gapic::Operation.new response, <%= method.service.lro_client_ivar %>, options: options
4
+ response = ::Gapic::Operation.new response, <%= method.service.lro_client_ivar %>, options: options
5
5
  <%- end -%>
6
6
  yield response, operation if block_given?
7
7
  return response
@@ -1,9 +1,9 @@
1
1
  <%- assert_locals method -%>
2
2
  @<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |response, operation|
3
3
  <%- if method.lro? -%>
4
- wrap_lro_operation = ->(op_response) { Gapic::Operation.new op_response, <%= method.service.lro_client_ivar %> }
4
+ wrap_lro_operation = ->(op_response) { ::Gapic::Operation.new op_response, <%= method.service.lro_client_ivar %> }
5
5
  <%- end -%>
6
- response = Gapic::PagedEnumerable.new @<%= method.service.stub_name %>, :<%= method.name %>, request, response, operation, options<%- if method.lro? -%>, format_resource: wrap_lro_operation<%- end -%>
6
+ response = ::Gapic::PagedEnumerable.new @<%= method.service.stub_name %>, :<%= method.name %>, request, response, operation, options<%- if method.lro? -%>, format_resource: wrap_lro_operation<%- end -%>
7
7
  yield response, operation if block_given?
8
8
  return response
9
9
  end
@@ -1,2 +1,2 @@
1
1
  <%- assert_locals method -%>
2
- # @raise [GRPC::BadStatus] if the RPC is aborted.
2
+ # @raise [::GRPC::BadStatus] if the RPC is aborted.
@@ -1,15 +1,21 @@
1
1
  <%- assert_locals method -%>
2
2
  # @overload <%= method.name %>(request, options = nil)
3
- # @param request [<%= method.request_type %> | Hash]
4
- <%- if method.doc_description -%>
5
- <%= indent method.doc_description, "# " %>
6
- <%- end -%>
7
- # @param options [Gapic::CallOptions, Hash]
3
+ # Pass arguments to `<%= method.name %>` via a request object, either of type
4
+ # {<%= method.request_type %>} or an equivalent Hash.
5
+ #
6
+ # @param request [<%= method.request_type %>, ::Hash]
7
+ # A request object representing the call parameters. Required. To specify no
8
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
9
+ # @param options [::Gapic::CallOptions, ::Hash]
8
10
  # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
9
11
  <%-if method.arguments.any?-%>
10
12
  #
11
13
  <%- arg_list = method.arguments.map { |arg| "#{arg.name}: nil"}.join ", " -%>
12
14
  # @overload <%= method.name %>(<%= arg_list %>)
15
+ # Pass arguments to `<%= method.name %>` via keyword arguments. Note that at
16
+ # least one keyword argument is required. To specify no parameters, or to keep all
17
+ # the default parameter values, pass an empty Hash as a request object (see above).
18
+ #
13
19
  <%- method.arguments.each do |arg| -%>
14
20
  # @param <%= arg.name %> [<%= arg.doc_types %>]
15
21
  <%- if arg.doc_description -%>
@@ -17,4 +23,3 @@
17
23
  <%- end -%>
18
24
  <%- end -%>
19
25
  <%- end -%>
20
- #
@@ -1,5 +1,5 @@
1
1
  <%- assert_locals method -%>
2
- # @param request [Gapic::StreamInput, Enumerable<<%= method.request_type %> | Hash>]
2
+ # @param request [::Gapic::StreamInput, ::Enumerable<<%= method.request_type %>, ::Hash>]
3
3
  # An enumerable of {<%= method.request_type %>} instances.
4
- # @param options [Gapic::CallOptions, Hash]
4
+ # @param options [::Gapic::CallOptions, ::Hash]
5
5
  # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
@@ -1,6 +1,6 @@
1
1
  <%- assert_locals method -%>
2
2
  # @yield [response, operation] Access the result along with the RPC operation
3
3
  # @yieldparam response [<%= method.doc_response_type %>]
4
- # @yieldparam operation [GRPC::ActiveCall::Operation]
4
+ # @yieldparam operation [::GRPC::ActiveCall::Operation]
5
5
  #
6
6
  # @return [<%= method.doc_response_type %>]
@@ -1,6 +1,6 @@
1
1
  <%- assert_locals pattern -%>
2
2
  <%- pattern.arguments[0...-1].each do |arg| -%>
3
- raise ArgumentError, "<%= arg %> cannot contain /" if <%= arg %>.to_s.include? "/"
3
+ raise ::ArgumentError, "<%= arg %> cannot contain /" if <%= arg %>.to_s.include? "/"
4
4
  <%- end -%>
5
5
 
6
6
  "<%= pattern.path_string %>"
@@ -8,7 +8,7 @@
8
8
  <%= indent render(partial: "service/client/resource/doc", locals: { pattern: pattern }), "# " %>
9
9
  #
10
10
  <%- end -%>
11
- # @return [String]
11
+ # @return [::String]
12
12
  def <%= resource.path_helper %> **args
13
13
  resources = {
14
14
  <%- last_pattern_index = resource.patterns.count - 1 -%>
@@ -23,6 +23,6 @@ def <%= resource.path_helper %> **args
23
23
  }
24
24
 
25
25
  resource = resources[args.keys.sort.join(":")]
26
- raise ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
26
+ raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
27
27
  resource.call(**args)
28
28
  end
@@ -4,7 +4,7 @@
4
4
  #
5
5
  <%= indent render(partial: "service/client/resource/doc", locals: { pattern: resource.patterns.first }), "# " %>
6
6
  #
7
- # @return [String]
7
+ # @return [::String]
8
8
  <%- args = resource.patterns.first.arguments.map { |arg| "#{arg}:" }.join ", " -%>
9
9
  def <%= resource.path_helper %> <%= args %>
10
10
  <%= indent render(partial: "service/client/resource/def", locals: { pattern: resource.patterns.first }), 2 %>
@@ -2,5 +2,5 @@
2
2
  <%= render partial: "service/client/credentials",
3
3
  layout: "layouts/ruby",
4
4
  locals: { service: service,
5
- namespace: service.proto_service_name_full }
5
+ namespace: service.service_name_full }
6
6
  %>
@@ -2,5 +2,5 @@
2
2
  <%= render partial: "service/client/operations",
3
3
  layout: "layouts/ruby",
4
4
  locals: { service: service,
5
- namespace: service.proto_service_name_full }
5
+ namespace: service.service_name_full }
6
6
  %>
@@ -2,5 +2,5 @@
2
2
  <%= render partial: "service/client/paths",
3
3
  layout: "layouts/ruby",
4
4
  locals: { service: service,
5
- namespace: service.proto_service_name_full }
5
+ namespace: service.service_name_full }
6
6
  %>
@@ -17,8 +17,22 @@ class <%= service.client_name_full %>Test < Minitest::Test
17
17
  <% service.methods.each do |method| %>
18
18
  <%= indent render(partial: "service/test/method/#{method.kind}",
19
19
  locals: { method: method }), 2 %>
20
- <% if method != service.methods.last %>
21
20
 
22
21
  <% end %>
23
- <% end %>
22
+ <%= indent render(partial: "service/test/method/configure", locals: { service: service }), 2 %>
23
+ <%- if service.lro? -%>
24
+
25
+ def test_<%= service.lro_client_var %>
26
+ grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
27
+
28
+ client = nil
29
+ Gapic::ServiceStub.stub :new, nil do
30
+ client = <%= service.client_name_full =%>.new do |config|
31
+ config.credentials = grpc_channel
32
+ end
33
+ end
34
+
35
+ assert_kind_of <%= service.operations_name_full %>, client.<%= service.lro_client_var %>
36
+ end
37
+ <%- end -%>
24
38
  end
@@ -17,8 +17,8 @@ class <%= service.operations_name_full %>Test < Minitest::Test
17
17
  <% service.lro_service.methods.each do |method| %>
18
18
  <%= indent render(partial: "service/test/method/#{method.kind}",
19
19
  locals: { client_name_full: service.operations_name_full, method: method }), 2 %>
20
- <% if method != service.lro_service.methods.last %>
21
20
 
22
21
  <% end %>
23
- <% end %>
22
+ <%= indent render(partial: "service/test/method/configure",
23
+ locals: { service: service, client_name_full: service.operations_name_full }), 2 %>
24
24
  end
@@ -0,0 +1,19 @@
1
+ <%- assert_locals service -%>
2
+ <%- full_client_name = defined?(client_name_full) ? client_name_full : service.client_name_full -%>
3
+ def test_configure
4
+ grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
5
+
6
+ client = block_config = config = nil
7
+ Gapic::ServiceStub.stub :new, nil do
8
+ client = <%= full_client_name =%>.new do |config|
9
+ config.credentials = grpc_channel
10
+ end
11
+ end
12
+
13
+ config = client.configure do |c|
14
+ block_config = c
15
+ end
16
+
17
+ assert_same block_config, config
18
+ assert_kind_of <%= full_client_name %>::Configuration, config
19
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gapic-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ernest Landrito
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-04-06 00:00:00.000000000 Z
13
+ date: 2020-04-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -233,6 +233,7 @@ files:
233
233
  - lib/gapic/presenters/sample_presenter.rb
234
234
  - lib/gapic/presenters/service_presenter.rb
235
235
  - lib/gapic/resource_lookup.rb
236
+ - lib/gapic/ruby_info.rb
236
237
  - lib/gapic/runner.rb
237
238
  - lib/gapic/schema.rb
238
239
  - lib/gapic/schema/api.rb
@@ -251,6 +252,7 @@ files:
251
252
  - lib/google/rpc/status.pb.rb
252
253
  - templates/default/gem/_version.erb
253
254
  - templates/default/gem/changelog.erb
255
+ - templates/default/gem/entrypoint.erb
254
256
  - templates/default/gem/gemfile.erb
255
257
  - templates/default/gem/gemspec.erb
256
258
  - templates/default/gem/gitignore.erb
@@ -264,6 +266,8 @@ files:
264
266
  - templates/default/helpers/filepath_helper.rb
265
267
  - templates/default/helpers/namespace_helper.rb
266
268
  - templates/default/layouts/_ruby.erb
269
+ - templates/default/lib/_package.erb
270
+ - templates/default/lib/_service.erb
267
271
  - templates/default/package.erb
268
272
  - templates/default/proto_docs/_enum.erb
269
273
  - templates/default/proto_docs/_message.erb
@@ -271,11 +275,11 @@ files:
271
275
  - templates/default/proto_docs/proto_file.erb
272
276
  - templates/default/proto_docs/readme.erb
273
277
  - templates/default/service.erb
278
+ - templates/default/service/_helpers.erb
274
279
  - templates/default/service/client.erb
275
280
  - templates/default/service/client/_client.erb
276
281
  - templates/default/service/client/_config.erb
277
282
  - templates/default/service/client/_credentials.erb
278
- - templates/default/service/client/_helpers.erb
279
283
  - templates/default/service/client/_operations.erb
280
284
  - templates/default/service/client/_paths.erb
281
285
  - templates/default/service/client/_requires.erb
@@ -320,6 +324,7 @@ files:
320
324
  - templates/default/service/test/method/_assert_response.erb
321
325
  - templates/default/service/test/method/_bidi.erb
322
326
  - templates/default/service/test/method/_client.erb
327
+ - templates/default/service/test/method/_configure.erb
323
328
  - templates/default/service/test/method/_normal.erb
324
329
  - templates/default/service/test/method/_server.erb
325
330
  - templates/default/service/test/method/_setup.erb
@@ -346,7 +351,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
346
351
  - !ruby/object:Gem::Version
347
352
  version: '0'
348
353
  requirements: []
349
- rubygems_version: 3.1.2
354
+ rubygems_version: 3.0.3
350
355
  signing_key:
351
356
  specification_version: 4
352
357
  summary: An API Client Generator for Ruby in Ruby!
@@ -1,9 +0,0 @@
1
- # rubocop:disable Lint/HandleExceptions
2
-
3
- # Once client is loaded, load helpers.rb if it exists.
4
- begin
5
- require "<%= service.helpers_require %>"
6
- rescue LoadError
7
- end
8
-
9
- # rubocop:enable Lint/HandleExceptions