gapic-generator 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c8a401f416529802324b86833c5c3a9fcef01afd699439053ce868a7862c5c8
4
- data.tar.gz: 6f794cc05eb33a4c201bdcc62dc62524406ae2fb003f0b2d9c536482517a4109
3
+ metadata.gz: ab653b4ab114926d58b96c5326de2a8ece5ad19d2780cb8ec5886ee83a3cb053
4
+ data.tar.gz: 733ccb95f513617b9fc653ac8bbc8f02a37fa8be1a8b81c5cec051299d5f7468
5
5
  SHA512:
6
- metadata.gz: 536731d9a866b0c58540b6eb6f62469eef75f10f82a9fba3c45e0e5a2c5d08b7f5b97b0b385b3e6063e418e0faba687faf45c44cc700ab69da554c9d28a46049
7
- data.tar.gz: c1b99ad4ebfae8c4085522924ba4fd11f1a2628b67d64dfc549f22df40aadf5d79ae127bcac73ca5fe2795937f29556b6f656d5b86c66aaef43c78ec644b6772
6
+ metadata.gz: 5ceea190fdf3424e89df06130809a21f6cc43b61255e1a9fa143413e4ca197a7f52962dcd060693091317226063ae373cb2c6cfdb55bf516ae06c4d9099d43b4
7
+ data.tar.gz: 7558dd6358c2a19e2e9d471270acb9ce12a94696b67980193e4d6dcafb168f79342a408b68d89408606ff208fec5f5ae5bbad35110f81e9398d2eb5a124c5f43
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Release History for gapic-generator
2
2
 
3
+ ### 0.9.0 / 2021-06-29
4
+
5
+ * Support for configuring the service/method used for the quickstart example
6
+ * Allow generation of libraries with no custom env prefix
7
+ * Add service override setting to the repo metadata
8
+ * Wrapper gem dependencies on pre-GA versioned gems now allow both 0.x and 1.x versions
9
+ * Scoped some String and Hash references to the global scope to avoid name collisions
10
+ * Reformat some config code to avoid rubocop indentation churn
11
+ * Bazel: Replace monolith deps with rules_gapic
12
+
3
13
  ### 0.8.0 / 2021-06-16
4
14
 
5
15
  * Initial implementation of standalone snippet generation.
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Gapic
18
18
  module Generator
19
- VERSION = "0.8.0"
19
+ VERSION = "0.9.0"
20
20
  end
21
21
  end
@@ -26,6 +26,7 @@ require "gapic/presenters/package_presenter"
26
26
  require "gapic/presenters/resource_presenter"
27
27
  require "gapic/presenters/sample_presenter"
28
28
  require "gapic/presenters/service_presenter"
29
+ require "gapic/presenters/service_config_presenter"
29
30
  require "gapic/presenters/service_rest_presenter"
30
31
  require "gapic/presenters/snippet_presenter"
31
32
 
@@ -127,11 +127,7 @@ module Gapic
127
127
  end
128
128
 
129
129
  def env_prefix
130
- prefix = gem_config(:env_prefix) || begin
131
- segs = name.split("-").reverse
132
- segs.find { |seg| seg !~ /^v\d/ } || segs.first || "UNKNOWN"
133
- end
134
- prefix.upcase
130
+ gem_config(:env_prefix)&.upcase
135
131
  end
136
132
 
137
133
  def iam_dependency?
@@ -231,6 +227,18 @@ module Gapic
231
227
  JSON.pretty_generate first_package_drift_manifest
232
228
  end
233
229
 
230
+ ##
231
+ # The service to use for quick start samples. Normally this is simply the
232
+ # {#first_non_common_service}, but it can be overridden via a gem config.
233
+ #
234
+ # @return [Gapic::Presenters::ServicePresenter]
235
+ #
236
+ def quick_start_service
237
+ preferred_service = gem_config :quick_start_service
238
+ result = services.find { |svc| svc.name == preferred_service } if preferred_service
239
+ result || first_non_common_service
240
+ end
241
+
234
242
  private
235
243
 
236
244
  def gem_config key
@@ -232,6 +232,10 @@ module Gapic
232
232
  end
233
233
  end
234
234
 
235
+ def service_config_presenter
236
+ ServiceConfigPresenter.new grpc_service_config
237
+ end
238
+
235
239
  def grpc_method_name
236
240
  @method.name
237
241
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2021 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ module Gapic
18
+ module Presenters
19
+ ##
20
+ # A presenter for grpc service config.
21
+ #
22
+ class ServiceConfigPresenter
23
+ def initialize grpc_service_config
24
+ @grpc_service_config = grpc_service_config
25
+ end
26
+
27
+ attr_reader :grpc_service_config
28
+
29
+ def retry_policy_fields
30
+ elems = []
31
+ retry_policy = grpc_service_config&.retry_policy
32
+ if retry_policy&.initial_delay_seconds
33
+ elems << "initial_delay: #{Gapic::FormattingUtils.format_number retry_policy.initial_delay_seconds}"
34
+ end
35
+ if retry_policy&.max_delay_seconds
36
+ elems << "max_delay: #{Gapic::FormattingUtils.format_number retry_policy.max_delay_seconds}"
37
+ end
38
+ if retry_policy&.multiplier
39
+ elems << "multiplier: #{Gapic::FormattingUtils.format_number retry_policy.multiplier}"
40
+ end
41
+ if retry_policy&.status_codes
42
+ elems << "retry_codes: #{retry_policy.status_codes}"
43
+ end
44
+ elems.empty? ? "{}" : "{\n #{elems.join ', '}\n}"
45
+ end
46
+ end
47
+ end
48
+ end
@@ -361,6 +361,10 @@ module Gapic
361
361
  @api.grpc_service_config.service_level_configs[grpc_full_name]
362
362
  end
363
363
 
364
+ def service_config_presenter
365
+ ServiceConfigPresenter.new grpc_service_config
366
+ end
367
+
364
368
  ##
365
369
  # The short proto name for this service
366
370
  #
@@ -405,6 +409,20 @@ module Gapic
405
409
  generate_rest_clients? ? "GRPC client" : "client"
406
410
  end
407
411
 
412
+ ##
413
+ # The method to use for quick start samples. Normally this is simply the
414
+ # first non-client-streaming method defined, but it can be overridden via
415
+ # a gem config.
416
+ #
417
+ # @return [Gapic::Presenters::MethodPresenter]
418
+ #
419
+ def quick_start_method
420
+ gem_config = @api.configuration[:gem]
421
+ preferred_method = gem_config[:quick_start_method] if gem_config
422
+ result = methods.find { |meth| meth.name == preferred_method } if preferred_method
423
+ result || methods.find { |meth| !meth.client_streaming? }
424
+ end
425
+
408
426
  private
409
427
 
410
428
  def default_config key
@@ -16,12 +16,12 @@ $ gem install <%= gem.name %>
16
16
 
17
17
  ```ruby
18
18
  require "<%= gem.entrypoint_require %>"
19
- <%- service = gem.first_non_common_service -%>
20
- <%- method = service&.methods.first -%>
19
+ <%- service = gem.quick_start_service -%>
20
+ <%- method = service&.quick_start_method -%>
21
21
  <%- if service && method -%>
22
22
 
23
23
  client = <%= service.create_client_call %>
24
- request = my_create_request
24
+ request = <%= method.request_type %>.new # (request fields as keyword arguments...)
25
25
  response = client.<%= method.name %> request
26
26
  <%- end -%>
27
27
  ```
@@ -104,7 +104,7 @@ class <%= service.client_name %>
104
104
  !@config.endpoint.split(".").first.include?("-")
105
105
  credentials ||= Credentials.default scope: @config.scope,
106
106
  enable_self_signed_jwt: enable_self_signed_jwt
107
- if credentials.is_a?(String) || credentials.is_a?(Hash)
107
+ if credentials.is_a?(::String) || credentials.is_a?(::Hash)
108
108
  credentials = Credentials.new credentials, scope: @config.scope
109
109
  end
110
110
  <%- end -%>
@@ -12,10 +12,12 @@ class <%= service.credentials_name %> < ::Google::Auth::Credentials
12
12
  <%- end -%>
13
13
  ]
14
14
  <%- end -%>
15
+ <%- if service.gem.env_prefix -%>
15
16
  self.env_vars = [
16
17
  "<%= service.gem.env_prefix %>_CREDENTIALS",
17
18
  "<%= service.gem.env_prefix %>_KEYFILE",
18
19
  "<%= service.gem.env_prefix %>_CREDENTIALS_JSON",
19
20
  "<%= service.gem.env_prefix %>_KEYFILE_JSON"
20
21
  ]
22
+ <%- end -%>
21
23
  end
@@ -61,7 +61,7 @@ class <%= service.operations_name %>
61
61
  # Create credentials
62
62
  credentials = @config.credentials
63
63
  credentials ||= Credentials.default scope: @config.scope
64
- if credentials.is_a?(String) || credentials.is_a?(Hash)
64
+ if credentials.is_a?(::String) || credentials.is_a?(::Hash)
65
65
  credentials = Credentials.new credentials, scope: @config.scope
66
66
  end
67
67
  @quota_project_id = @config.quota_project
@@ -6,7 +6,7 @@
6
6
  default_config.timeout = <%= format_number service.grpc_service_config.timeout_seconds %>
7
7
  <%- end -%>
8
8
  <%- if service.grpc_service_config.retry_policy -%>
9
- default_config.retry_policy = <%= indent_tail render(partial: "service/client/self_configure_retry_policy", locals: { retry_policy: service.grpc_service_config.retry_policy }), 2 %>
9
+ default_config.retry_policy = <%= indent_tail service.service_config_presenter.retry_policy_fields, 2 %>
10
10
  <%- end -%>
11
11
  <%- end -%>
12
12
  <%- method_service.methods.each do |method| -%>
@@ -16,7 +16,7 @@
16
16
  default_config.rpcs.<%= method.name %>.timeout = <%= format_number method.grpc_service_config.timeout_seconds %>
17
17
  <%- end -%>
18
18
  <%- if method.grpc_service_config.retry_policy -%>
19
- default_config.rpcs.<%= method.name %>.retry_policy =<%= indent_tail render(partial: "service/client/self_configure_retry_policy", locals: { retry_policy: method.grpc_service_config.retry_policy }), 2 %>
19
+ default_config.rpcs.<%= method.name %>.retry_policy =<%= indent_tail method.service_config_presenter.retry_policy_fields, 2 %>
20
20
  <%- end -%>
21
21
  <%- end -%>
22
22
  <%- end -%>
@@ -97,7 +97,7 @@ class <%= service.rest.client_name %>
97
97
  credentials = @config.credentials
98
98
  <%- unless service.generic_endpoint? -%>
99
99
  credentials ||= Credentials.default scope: @config.scope
100
- if credentials.is_a?(String) || credentials.is_a?(Hash)
100
+ if credentials.is_a?(::String) || credentials.is_a?(::Hash)
101
101
  credentials = Credentials.new credentials, scope: @config.scope
102
102
  end
103
103
  <%- 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.8.0
4
+ version: 0.9.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: 2021-06-16 00:00:00.000000000 Z
13
+ date: 2021-06-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -220,6 +220,7 @@ files:
220
220
  - lib/gapic/presenters/package_presenter.rb
221
221
  - lib/gapic/presenters/resource_presenter.rb
222
222
  - lib/gapic/presenters/sample_presenter.rb
223
+ - lib/gapic/presenters/service_config_presenter.rb
223
224
  - lib/gapic/presenters/service_presenter.rb
224
225
  - lib/gapic/presenters/service_rest_presenter.rb
225
226
  - lib/gapic/presenters/snippet_presenter.rb
@@ -285,7 +286,6 @@ files:
285
286
  - templates/default/service/client/_resource.erb
286
287
  - templates/default/service/client/_self_configure.erb
287
288
  - templates/default/service/client/_self_configure_defaults.erb
288
- - templates/default/service/client/_self_configure_retry_policy.erb
289
289
  - templates/default/service/client/method/_def.erb
290
290
  - templates/default/service/client/method/def/_options_defaults.erb
291
291
  - templates/default/service/client/method/def/_request.erb
@@ -1,15 +0,0 @@
1
- <%- assert_locals retry_policy -%>
2
- {
3
- <%- if retry_policy.initial_delay_seconds -%>
4
- initial_delay: <%= format_number retry_policy.initial_delay_seconds %>,
5
- <%- end -%>
6
- <%- if retry_policy.max_delay_seconds -%>
7
- max_delay: <%= format_number retry_policy.max_delay_seconds %>,
8
- <%- end -%>
9
- <%- if retry_policy.multiplier -%>
10
- multiplier: <%= format_number retry_policy.multiplier %>,
11
- <%- end-%>
12
- <%- if retry_policy.status_codes -%>
13
- retry_codes: <%= retry_policy.status_codes %>
14
- <%- end -%>
15
- }