gapic-generator 0.2.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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