gapic-generator 0.6.4 → 0.6.9
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 +4 -4
- data/CHANGELOG.md +24 -0
- data/gem_templates/dockerfile.erb +1 -1
- data/lib/gapic/generator/version.rb +1 -1
- data/lib/gapic/grpc_service_config/parser.rb +42 -2
- data/lib/gapic/presenters/gem_presenter.rb +4 -0
- data/lib/gapic/presenters/package_presenter.rb +16 -0
- data/lib/gapic/schema/api.rb +17 -1
- data/templates/default/gem/readme.erb +1 -1
- data/templates/default/gem/rubocop.erb +4 -0
- data/templates/default/lib/_package.erb +4 -0
- data/templates/default/service/_helpers.erb +1 -1
- data/templates/default/service/client/_config.erb +1 -1
- data/templates/default/service/test/method/_bidi.erb +4 -4
- data/templates/default/service/test/method/_client.erb +4 -4
- data/templates/default/service/test/method/_normal.erb +4 -4
- data/templates/default/service/test/method/_server.erb +4 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1b218438104bc5239538c96e90d05a84591a7517c7f8e3e01009b0a7c47bb76
|
4
|
+
data.tar.gz: dcfea920e8b059e62df55e305ee956182101e0531ea7c207d9a6d45589982d00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef95a59c0f4bfabaa7a479ddaf9eab02739c18e345fc03d33b8e4f50c9676c5aafb9facedfdb4cc2202e269c7724bf497297c72c67b48763fea251330315547f
|
7
|
+
data.tar.gz: cecd8d4c13b61a1be2578cee67b7f5601a83b6d4795228fce3c5d89f572351a773830a6fca6af07defcf3274633fecddbf23cb02a45503be64082d0296fd317d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
# Release History for gapic-generator
|
2
2
|
|
3
|
+
### 0.6.9 / 2020-12-07
|
4
|
+
|
5
|
+
* Load package-level handwritten helpers.
|
6
|
+
* Disable Names/PredicateName rubocop rule.
|
7
|
+
* Fix generated client tests when a request field name collides with a Ruby superclass method.
|
8
|
+
|
9
|
+
### 0.6.8 / 2020-09-16
|
10
|
+
|
11
|
+
* Add samples tasks to generated gapic rakefiles.
|
12
|
+
* Disable Style/AsciiComments rule.
|
13
|
+
|
14
|
+
### 0.6.7 / 2020-08-07
|
15
|
+
|
16
|
+
* Generated credentials config allows symbols.
|
17
|
+
|
18
|
+
### 0.6.6 / 2020-08-05
|
19
|
+
|
20
|
+
* Use numeric error codes rather than strings in generated retry configs.
|
21
|
+
|
22
|
+
### 0.6.5 / 2020-07-16
|
23
|
+
|
24
|
+
* Examples in auth, rakefile, and readme should pick a non-common service.
|
25
|
+
* Emit a warning if common_services config references a nonexistent service.
|
26
|
+
|
3
27
|
### 0.6.4 / 2020-07-13
|
4
28
|
|
5
29
|
* Fix rubocop warning on a generated multi-path helper if it could take no arguments.
|
@@ -30,7 +30,7 @@ COPY --from=gcr.io/gapic-images/api-common-protos:beta /protos/ /workspace/commo
|
|
30
30
|
COPY --from=builder /workspace/*.gem /workspace/
|
31
31
|
|
32
32
|
# Install the subgenerator and other needed tools.
|
33
|
-
RUN gem install
|
33
|
+
RUN gem install grpc-tools gapic-generator-<%= gem_name %>.gem \
|
34
34
|
&& rm gapic-generator-<%= gem_name %>.gem \
|
35
35
|
&& mkdir -p --mode=777 /.cache
|
36
36
|
|
@@ -40,6 +40,31 @@ module Gapic
|
|
40
40
|
MULTIPLIER_JSON_KEY = "backoffMultiplier"
|
41
41
|
STATUS_CODES_JSON_KEY = "retryableStatusCodes"
|
42
42
|
|
43
|
+
# See https://grpc.github.io/grpc/core/md_doc_statuscodes.html for a
|
44
|
+
# list of error codes.
|
45
|
+
ERROR_CODE_MAPPING = [
|
46
|
+
"OK",
|
47
|
+
"CANCELLED",
|
48
|
+
"UNKNOWN",
|
49
|
+
"INVALID_ARGUMENT",
|
50
|
+
"DEADLINE_EXCEEDED",
|
51
|
+
"NOT_FOUND",
|
52
|
+
"ALREADY_EXISTS",
|
53
|
+
"PERMISSION_DENIED",
|
54
|
+
"RESOURCE_EXHAUSTED",
|
55
|
+
"FAILED_PRECONDITION",
|
56
|
+
"ABORTED",
|
57
|
+
"OUT_OF_RANGE",
|
58
|
+
"UNIMPLEMENTED",
|
59
|
+
"INTERNAL",
|
60
|
+
"UNAVAILABLE",
|
61
|
+
"DATA_LOSS",
|
62
|
+
"UNAUTHENTICATED"
|
63
|
+
].freeze
|
64
|
+
|
65
|
+
ERROR_STRING_MAPPING = ERROR_CODE_MAPPING.each_with_index.each_with_object({}) do |(str, num), hash|
|
66
|
+
hash[str] = num
|
67
|
+
end.freeze
|
43
68
|
|
44
69
|
##
|
45
70
|
# Parses ServiceConfig from a json of a GRPC service config
|
@@ -146,11 +171,26 @@ module Gapic
|
|
146
171
|
initial_delay_seconds = parse_interval_seconds get(retry_policy_json, INITIAL_DELAY_JSON_KEY)
|
147
172
|
max_delay_seconds = parse_interval_seconds get(retry_policy_json, MAX_DELAY_JSON_KEY)
|
148
173
|
multiplier = get retry_policy_json, MULTIPLIER_JSON_KEY
|
149
|
-
status_codes = get retry_policy_json, STATUS_CODES_JSON_KEY
|
174
|
+
status_codes = convert_codes get retry_policy_json, STATUS_CODES_JSON_KEY
|
150
175
|
|
151
176
|
RetryPolicy.new initial_delay_seconds, max_delay_seconds, multiplier, status_codes
|
152
177
|
end
|
153
178
|
|
179
|
+
##
|
180
|
+
# Interpret input status codes. Convert strings to their associated integer codes.
|
181
|
+
#
|
182
|
+
def self.convert_codes input_codes
|
183
|
+
return nil if input_codes.nil?
|
184
|
+
Array(input_codes).map do |obj|
|
185
|
+
case obj
|
186
|
+
when String
|
187
|
+
ERROR_STRING_MAPPING[obj]
|
188
|
+
when Integer
|
189
|
+
obj
|
190
|
+
end
|
191
|
+
end.compact
|
192
|
+
end
|
193
|
+
|
154
194
|
##
|
155
195
|
# Parses time expressed in secondds from the GRPC service config json
|
156
196
|
# The time is encoded is a string as float or integer with a letter 's' afterwards
|
@@ -212,7 +252,7 @@ module Gapic
|
|
212
252
|
end
|
213
253
|
|
214
254
|
private_class_method :parse_service_names, :filter_service_method_names, :parse_config,
|
215
|
-
:parse_retry_policy, :parse_interval_seconds, :valid_float
|
255
|
+
:parse_retry_policy, :parse_interval_seconds, :valid_float?, :convert_codes
|
216
256
|
end
|
217
257
|
end
|
218
258
|
end
|
@@ -80,9 +80,25 @@ module Gapic
|
|
80
80
|
package_require + ".rb"
|
81
81
|
end
|
82
82
|
|
83
|
+
def package_directory_name
|
84
|
+
package_require.split("/").last
|
85
|
+
end
|
86
|
+
|
83
87
|
def empty?
|
84
88
|
services.empty?
|
85
89
|
end
|
90
|
+
|
91
|
+
def helpers_file_path
|
92
|
+
helpers_require + ".rb"
|
93
|
+
end
|
94
|
+
|
95
|
+
def helpers_file_name
|
96
|
+
"_helpers.rb"
|
97
|
+
end
|
98
|
+
|
99
|
+
def helpers_require
|
100
|
+
package_require + "/_helpers"
|
101
|
+
end
|
86
102
|
end
|
87
103
|
end
|
88
104
|
end
|
data/lib/gapic/schema/api.rb
CHANGED
@@ -44,14 +44,18 @@ module Gapic
|
|
44
44
|
#
|
45
45
|
# @param request [Google::Protobuf::Compiler::CodeGeneratorRequest]
|
46
46
|
# The request object.
|
47
|
-
|
47
|
+
# @param error_output [IO] An IO to write any errors/warnings to.
|
48
|
+
# @param configuration [Hash] Optional override of configuration.
|
49
|
+
def initialize request, error_output: STDERR, configuration: nil
|
48
50
|
@request = request
|
49
51
|
loader = Loader.new
|
50
52
|
@files = request.proto_file.map do |fd|
|
51
53
|
loader.load_file fd, request.file_to_generate.include?(fd.name)
|
52
54
|
end
|
53
55
|
@files.each { |f| f.parent = self }
|
56
|
+
@configuration = configuration
|
54
57
|
@resource_types = analyze_resources
|
58
|
+
sanity_checks error_output
|
55
59
|
end
|
56
60
|
|
57
61
|
def containing_api
|
@@ -295,6 +299,18 @@ module Gapic
|
|
295
299
|
|
296
300
|
private
|
297
301
|
|
302
|
+
# Perform a variety of sanity checks on the data, and prints errors to
|
303
|
+
# the given output as appropriate.
|
304
|
+
#
|
305
|
+
# @param output [IO] Stream to write outputs to.
|
306
|
+
def sanity_checks output
|
307
|
+
addrs = services.map { |service| service.address.join "." }
|
308
|
+
configuration[:common_services]&.each do |k, v|
|
309
|
+
output.puts "WARNING: configured common service #{k} is not present" unless addrs.include? k
|
310
|
+
output.puts "WARNING: configured common service delegate #{v} is not present" unless addrs.include? v
|
311
|
+
end
|
312
|
+
end
|
313
|
+
|
298
314
|
# Does a pre-analysis of all resources defined in the job. This has
|
299
315
|
# two effects:
|
300
316
|
# * Side effect: each resource has its parent_resources field set.
|
@@ -16,7 +16,7 @@ $ gem install <%= gem.name %>
|
|
16
16
|
|
17
17
|
```ruby
|
18
18
|
require "<%= gem.entrypoint_require %>"
|
19
|
-
<%- service = gem.
|
19
|
+
<%- service = gem.first_non_common_service -%>
|
20
20
|
<%- method = service&.methods.first -%>
|
21
21
|
<%- if service && method -%>
|
22
22
|
|
@@ -15,3 +15,7 @@ require "<%= package.gem.version_require %>"
|
|
15
15
|
<%- end -%>
|
16
16
|
module <%= package.module_name %>
|
17
17
|
end
|
18
|
+
<% @footer = capture do %>
|
19
|
+
helper_path = ::File.join __dir__, "<%= package.package_directory_name %>", "<%= package.helpers_file_name %>"
|
20
|
+
require "<%= package.helpers_require %>" if ::File.file? helper_path
|
21
|
+
<% end %>
|
@@ -1,3 +1,3 @@
|
|
1
1
|
<%- assert_locals service -%>
|
2
|
-
helper_path = ::File.join __dir__, "<%= service.service_directory_name%>", "
|
2
|
+
helper_path = ::File.join __dir__, "<%= service.service_directory_name %>", "<%= service.helpers_file_name %>"
|
3
3
|
require "<%= service.helpers_require %>" if ::File.file? helper_path
|
@@ -87,7 +87,7 @@ class Configuration
|
|
87
87
|
|
88
88
|
config_attr :endpoint, <%= service.client_endpoint.inspect %>, ::String
|
89
89
|
config_attr :credentials, nil do |value|
|
90
|
-
allowed = [::String, ::Hash, ::Proc, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
|
90
|
+
allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
|
91
91
|
allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
|
92
92
|
allowed.any? { |klass| klass === value }
|
93
93
|
end
|
@@ -87,13 +87,13 @@ def test_<%= method.name %>
|
|
87
87
|
assert_kind_of <%= method.request_type %>, r
|
88
88
|
<%- fields.each do |field| -%>
|
89
89
|
<%- if field.message? && field.repeated? && !field.map? -%>
|
90
|
-
assert_kind_of <%= field.type_name_full %>, r
|
90
|
+
assert_kind_of <%= field.type_name_full %>, r["<%= field.name %>"].first
|
91
91
|
<%- elsif field.map? -%>
|
92
|
-
assert_equal(<%= field.default_value %>, r
|
92
|
+
assert_equal(<%= field.default_value %>, r["<%= field.name %>"].to_h)
|
93
93
|
<%- elsif field.message? -%>
|
94
|
-
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), r
|
94
|
+
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), r["<%= field.name %>"]
|
95
95
|
<%- else -%>
|
96
|
-
assert_equal <%= field.default_value %>, r
|
96
|
+
assert_equal <%= field.default_value %>, r["<%= field.name %>"]
|
97
97
|
<%- end -%>
|
98
98
|
<%- if field.oneof? && !field.proto3_optional? -%>
|
99
99
|
assert_equal :<%= field.name %>, r.<%= field.oneof_name %>
|
@@ -71,13 +71,13 @@ def test_<%= method.name %>
|
|
71
71
|
assert_kind_of <%= method.request_type %>, r
|
72
72
|
<%- fields.each do |field| -%>
|
73
73
|
<%- if field.message? && field.repeated? && !field.map? -%>
|
74
|
-
assert_kind_of <%= field.type_name_full %>, r
|
74
|
+
assert_kind_of <%= field.type_name_full %>, r["<%= field.name %>"].first
|
75
75
|
<%- elsif field.map? -%>
|
76
|
-
assert_equal(<%= field.default_value %>, r
|
76
|
+
assert_equal(<%= field.default_value %>, r["<%= field.name %>"].to_h)
|
77
77
|
<%- elsif field.message? -%>
|
78
|
-
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), r
|
78
|
+
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), r["<%= field.name %>"]
|
79
79
|
<%- else -%>
|
80
|
-
assert_equal <%= field.default_value %>, r
|
80
|
+
assert_equal <%= field.default_value %>, r["<%= field.name %>"]
|
81
81
|
<%- end -%>
|
82
82
|
<%- if field.oneof? && !field.proto3_optional? -%>
|
83
83
|
assert_equal :<%= field.name %>, r.<%= field.oneof_name %>
|
@@ -18,13 +18,13 @@ def test_<%= method.name %>
|
|
18
18
|
assert_kind_of <%= method.request_type %>, request
|
19
19
|
<%- fields.each do |field| -%>
|
20
20
|
<%- if field.message? && field.repeated? && !field.map? -%>
|
21
|
-
assert_kind_of <%= field.type_name_full %>, request
|
21
|
+
assert_kind_of <%= field.type_name_full %>, request["<%= field.name %>"].first
|
22
22
|
<%- elsif field.map? -%>
|
23
|
-
assert_equal(<%= field.default_value %>, request
|
23
|
+
assert_equal(<%= field.default_value %>, request["<%= field.name %>"].to_h)
|
24
24
|
<%- elsif field.message? -%>
|
25
|
-
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), request
|
25
|
+
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), request["<%= field.name %>"]
|
26
26
|
<%- else -%>
|
27
|
-
assert_equal <%= field.default_value %>, request
|
27
|
+
assert_equal <%= field.default_value %>, request["<%= field.name %>"]
|
28
28
|
<%- end -%>
|
29
29
|
<%- if field.oneof? && !field.proto3_optional? -%>
|
30
30
|
assert_equal :<%= field.name %>, request.<%= field.oneof_name %>
|
@@ -18,13 +18,13 @@ def test_<%= method.name %>
|
|
18
18
|
assert_kind_of <%= method.request_type %>, request
|
19
19
|
<%- fields.each do |field| -%>
|
20
20
|
<%- if field.message? && field.repeated? && !field.map? -%>
|
21
|
-
assert_kind_of <%= field.type_name_full %>, request
|
21
|
+
assert_kind_of <%= field.type_name_full %>, request["<%= field.name %>"].first
|
22
22
|
<%- elsif field.map? -%>
|
23
|
-
assert_equal(<%= field.default_value %>, request
|
23
|
+
assert_equal(<%= field.default_value %>, request["<%= field.name %>"].to_h)
|
24
24
|
<%- elsif field.message? -%>
|
25
|
-
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), request
|
25
|
+
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), request["<%= field.name %>"]
|
26
26
|
<%- else -%>
|
27
|
-
assert_equal <%= field.default_value %>, request
|
27
|
+
assert_equal <%= field.default_value %>, request["<%= field.name %>"]
|
28
28
|
<%- end -%>
|
29
29
|
<%- if field.oneof? && !field.proto3_optional? -%>
|
30
30
|
assert_equal :<%= field.name %>, request.<%= field.oneof_name %>
|
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.6.
|
4
|
+
version: 0.6.9
|
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-07
|
13
|
+
date: 2020-12-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: actionpack
|