gapic-generator 0.8.0 → 0.9.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.
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
- }