gapic-generator 0.2.2 → 0.4.0

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +37 -0
  3. data/lib/gapic/formatting_utils.rb +4 -2
  4. data/lib/gapic/generator/version.rb +1 -1
  5. data/lib/gapic/generators/default_generator.rb +11 -10
  6. data/lib/gapic/presenters/field_presenter.rb +1 -1
  7. data/lib/gapic/presenters/gem_presenter.rb +8 -2
  8. data/lib/gapic/presenters/method_presenter.rb +17 -2
  9. data/lib/gapic/presenters/package_presenter.rb +16 -1
  10. data/lib/gapic/presenters/resource_presenter.rb +3 -9
  11. data/lib/gapic/presenters/service_presenter.rb +57 -12
  12. data/lib/gapic/resource_lookup.rb +23 -45
  13. data/lib/gapic/ruby_info.rb +93 -0
  14. data/lib/gapic/schema/api.rb +102 -1
  15. data/lib/gapic/schema/loader.rb +9 -2
  16. data/lib/gapic/schema/wrappers.rb +109 -22
  17. data/templates/default/gem/entrypoint.erb +8 -0
  18. data/templates/default/gem/gemspec.erb +1 -1
  19. data/templates/default/gem/readme.erb +15 -1
  20. data/templates/default/gem/rubocop.erb +13 -41
  21. data/templates/default/lib/_package.erb +17 -0
  22. data/templates/default/lib/_service.erb +32 -0
  23. data/templates/default/package.erb +5 -5
  24. data/templates/default/service.erb +5 -7
  25. data/templates/default/service/_helpers.erb +3 -0
  26. data/templates/default/service/client.erb +1 -1
  27. data/templates/default/service/client/_client.erb +10 -16
  28. data/templates/default/service/client/_operations.erb +0 -4
  29. data/templates/default/service/client/_resource.erb +1 -1
  30. data/templates/default/service/client/method/docs/_request_normal.erb +10 -5
  31. data/templates/default/service/client/method/docs/_request_streaming.erb +1 -1
  32. data/templates/default/service/credentials.erb +1 -1
  33. data/templates/default/service/operations.erb +1 -1
  34. data/templates/default/service/paths.erb +1 -1
  35. data/templates/default/service/test/client.erb +16 -2
  36. data/templates/default/service/test/client_operations.erb +2 -2
  37. data/templates/default/service/test/method/_configure.erb +19 -0
  38. metadata +8 -3
  39. data/templates/default/service/client/_helpers.erb +0 -9
@@ -0,0 +1,8 @@
1
+ <%- assert_locals gem -%>
2
+ <%= render partial: "shared/header" -%>
3
+
4
+ # This gem does not autoload during Bundler.require. To load this gem,
5
+ # issue explicit require statements for the packages desired, e.g.:
6
+ <%- gem.packages.each do |package| -%>
7
+ # require "<%= package.package_require %>"
8
+ <%- end -%>
@@ -25,7 +25,7 @@ Gem::Specification.new do |gem|
25
25
 
26
26
  gem.add_dependency "gapic-common", "~> 0.2"
27
27
  <%- if gem.iam_dependency? -%>
28
- gem.add_dependency "grpc-google-iam-v1", "~> 0.6.9"
28
+ gem.add_dependency "grpc-google-iam-v1", ">= 0.6.10", "< 2.0"
29
29
  <%- end -%>
30
30
 
31
31
  gem.add_development_dependency "google-style", "~> 1.24.0"
@@ -1,4 +1,4 @@
1
- # <%= gem.title %>
1
+ # Ruby Client for the <%= gem.title %> API
2
2
 
3
3
  <%= gem.summary %>
4
4
 
@@ -12,6 +12,20 @@
12
12
  $ gem install <%= gem.name %>
13
13
  ```
14
14
 
15
+ ## Quick Start
16
+
17
+ ```ruby
18
+ require "<%= gem.entrypoint_require %>"
19
+ <%- service = gem.packages.first&.services.first -%>
20
+ <%- method = service&.methods.first -%>
21
+ <%- if service && method -%>
22
+
23
+ client = <%= service.create_client_call %>
24
+ request = my_create_request
25
+ response = client.<%= method.name %> request
26
+ <%- end -%>
27
+ ```
28
+
15
29
  ## Supported Ruby Versions
16
30
 
17
31
  This library is supported on Ruby 2.4+.
@@ -9,53 +9,25 @@ AllCops:
9
9
  - "test/**/*"
10
10
 
11
11
  Metrics/AbcSize:
12
- Exclude:
13
- <%- gem.packages.each do |package| -%>
14
- <%- package.services.each do |service| -%>
15
- - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
16
- <%- end -%>
17
- <%- end -%>
12
+ Enabled: false
18
13
  Metrics/ClassLength:
19
- Exclude:
20
- <%- gem.packages.each do |package| -%>
21
- <%- package.services.each do |service| -%>
22
- - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
23
- <%- end -%>
24
- <%- end -%>
14
+ Enabled: false
25
15
  Metrics/CyclomaticComplexity:
26
- Exclude:
27
- <%- gem.packages.each do |package| -%>
28
- <%- package.services.each do |service| -%>
29
- - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
30
- <%- end -%>
31
- <%- end -%>
16
+ Enabled: false
32
17
  Metrics/LineLength:
33
- Exclude:
34
- <%- gem.packages.each do |package| -%>
35
- <%- package.services.each do |service| -%>
36
- - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
37
- <%- end -%>
38
- <%- end -%>
18
+ Enabled: false
39
19
  Metrics/MethodLength:
40
- Exclude:
41
- <%- gem.packages.each do |package| -%>
42
- <%- package.services.each do |service| -%>
43
- - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
44
- <%- end -%>
45
- <%- end -%>
20
+ Enabled: false
21
+ Metrics/ModuleLength:
22
+ Enabled: false
46
23
  Metrics/PerceivedComplexity:
24
+ Enabled: false
25
+ Naming/FileName:
47
26
  Exclude:
48
- <%- gem.packages.each do |package| -%>
49
- <%- package.services.each do |service| -%>
50
- - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
51
- <%- end -%>
52
- <%- end -%>
27
+ - "lib/<%= gem.name %>.rb"
53
28
  Style/CaseEquality:
54
- Exclude:
55
- <%- gem.packages.each do |package| -%>
56
- <%- package.services.each do |service| -%>
57
- - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
58
- <%- end -%>
59
- <%- end -%>
29
+ Enabled: false
30
+ Style/IfUnlessModifier:
31
+ Enabled: false
60
32
  Style/ModuleFunction:
61
33
  Enabled: false
@@ -0,0 +1,17 @@
1
+ <%- assert_locals package -%>
2
+ <% @requires = capture do %>
3
+ <%- package.services.each do |service| -%>
4
+ require "<%= service.service_require %>"
5
+ <%- end -%>
6
+ require "<%= package.gem.version_require %>"
7
+ <% end %>
8
+ <%- unless package.empty? -%>
9
+ ##
10
+ # To load this package, including all its services, and instantiate a client:
11
+ #
12
+ # require "<%= package.package_require %>"
13
+ # client = <%= package.services.first.create_client_call %>
14
+ #
15
+ <%- end -%>
16
+ module <%= package.module_name %>
17
+ end
@@ -0,0 +1,32 @@
1
+ <%- assert_locals service -%>
2
+ <% @requires = capture do %>
3
+ require "gapic/common"
4
+ require "gapic/config"
5
+ require "gapic/config/method"
6
+
7
+ require "<%= service.gem.version_require %>"
8
+
9
+ require "<%= service.credentials_require %>"
10
+ <%- if service.paths? -%>
11
+ require "<%= service.paths_require %>"
12
+ <%- end -%>
13
+ <%- if service.lro? -%>
14
+ require "<%= service.operations_require %>"
15
+ <%- end -%>
16
+ require "<%= service.client_require %>"
17
+ <% end %>
18
+ ##
19
+ <%- if service.doc_description -%>
20
+ <%= indent service.doc_description, "# " %>
21
+ #
22
+ <%- end -%>
23
+ # To load this service and instantiate a client:
24
+ #
25
+ # require "<%= service.service_require %>"
26
+ # client = <%= service.create_client_call %>
27
+ #
28
+ module <%= service.module_name %>
29
+ end
30
+ <% @footer = capture do %>
31
+ <%= render partial: "service/helpers", locals: { service: service} -%>
32
+ <% end %>
@@ -1,6 +1,6 @@
1
1
  <%- assert_locals package -%>
2
- <%= render partial: "shared/header" -%>
3
-
4
- <% package.services.each do |service| %>
5
- require "<%= service.service_require %>"
6
- <% end %>
2
+ <%= render partial: "lib/package",
3
+ layout: "layouts/ruby",
4
+ locals: { package: package,
5
+ namespace: package.parent_namespace }
6
+ %>
@@ -1,8 +1,6 @@
1
1
  <%- assert_locals service -%>
2
- <%= render partial: "shared/header" -%>
3
-
4
- require "<%= service.client_require %>"
5
- <%- if service.lro? -%>
6
- require "<%= service.operations_require %>"
7
- <%- end -%>
8
- require "<%= service.credentials_require %>"
2
+ <%= render partial: "lib/service",
3
+ layout: "layouts/ruby",
4
+ locals: { service: service,
5
+ namespace: service.namespace }
6
+ %>
@@ -0,0 +1,3 @@
1
+ <%- assert_locals service -%>
2
+ helper_path = ::File.join __dir__, "<%= service.service_directory_name%>", "helpers.rb"
3
+ require "<%= service.helpers_require %>" if ::File.file? helper_path
@@ -2,5 +2,5 @@
2
2
  <%= render partial: "service/client/client",
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
  %>
@@ -1,19 +1,7 @@
1
1
  <%- assert_locals service -%>
2
2
  <% @requires = capture do %>
3
- require "gapic/common"
4
- require "gapic/config"
5
- require "gapic/config/method"
6
-
7
3
  <%= render partial: "service/client/requires", locals: { service: service} -%>
8
- require "<%= service.gem.version_require %>"
9
4
  require "<%= service.proto_service_require %>"
10
- require "<%= service.credentials_require %>"
11
- <%- if service.paths? -%>
12
- require "<%= service.paths_require %>"
13
- <%- end -%>
14
- <%- if service.lro? -%>
15
- require "<%= service.operations_require %>"
16
- <%- end -%>
17
5
  <% end %>
18
6
  ##
19
7
  # Client for the <%= service.name %> service.
@@ -117,6 +105,7 @@ class <%= service.client_name %>
117
105
  <%- if service.lro? -%>
118
106
  <%= service.lro_client_ivar %> = <%= service.operations_name %>.new do |config|
119
107
  config.credentials = credentials
108
+ config.endpoint = @config.endpoint
120
109
  end
121
110
 
122
111
  <%- end -%>
@@ -129,6 +118,15 @@ class <%= service.client_name %>
129
118
  )
130
119
  end
131
120
 
121
+ <%- if service.lro? -%>
122
+ ##
123
+ # Get the associated client for long-running operations.
124
+ #
125
+ # @return [<%= service.operations_name_full %>]
126
+ #
127
+ attr_reader :<%= service.lro_client_var %>
128
+
129
+ <%- end -%>
132
130
  # Service calls
133
131
  <%- service.methods.each do |method| -%>
134
132
 
@@ -137,7 +135,3 @@ class <%= service.client_name %>
137
135
 
138
136
  <%= indent_tail render(partial: "service/client/config", locals: { service: service }), 2 %>
139
137
  end
140
-
141
- <% @footer = capture do %>
142
- <%= render partial: "service/client/helpers", locals: { service: service} %>
143
- <% end %>
@@ -1,10 +1,6 @@
1
1
  <%- assert_locals service -%>
2
2
  <% @requires = capture do %>
3
- require "gapic/common"
4
3
  require "gapic/operation"
5
-
6
- require "<%= service.gem.version_require %>"
7
- require "<%= service.client_require %>"
8
4
  require "<%= service.lro_service.proto_service_require %>"
9
5
  <% end %>
10
6
  # Service that implements Longrunning Operations API.
@@ -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,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 -%>
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.
7
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
4
  # @param options [Gapic::CallOptions, Hash]
5
5
  # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
@@ -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.2
4
+ version: 0.4.0
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-03-31 00:00:00.000000000 Z
13
+ date: 2020-04-20 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