gapic-generator 0.6.10 → 0.6.15

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: 4fd38043485e7ffbb2e8edf375019429972c5ac01b8be85803c5f6f9518b06c5
4
- data.tar.gz: 23312fda7203a549f3e2f714df2ef73a0d71aea1aae369104de8ba079d4746c1
3
+ metadata.gz: 4b0b5fd921abe9618575956f3eaed4ea23ffbf578c29570934c29a76decdf6cd
4
+ data.tar.gz: cda02cc92c2249e60b7f1692c2b514ac672b49ff46fc52d543ba4d0e133f4308
5
5
  SHA512:
6
- metadata.gz: cef8f93df7ca8b3207815a9c8239eeea6fb783265943d6ec22b246945582df439ddad1419a1783df8c0c1a3e432194a8ddb204c08856ac67dce5abb030ede394
7
- data.tar.gz: 82df4fc573990154f629711aa9829d0c8aa6aacb2df34bcff9cff140dd5049de1f135325c5df089ca9b6b9188fae415e1bad351df8e6904bc1e071c0ae3ee63b
6
+ metadata.gz: 6c3c62bb7d3f29cff6ea57b9b959214ee81f79449d649ae87f95171aad06450f000fda15784d33231418d47729eecc4b4130a4bf16cad95b1d76bac48994fa89
7
+ data.tar.gz: c2500d8e7458361e6450cb661c5380075af7a24a3c5063cdc1e237bfeb7fc1c4083dcb5a6a7f7b8cef3b9242e5bc99089ba2d7a651ddd68cbf720ab91bb81478
data/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Release History for gapic-generator
2
2
 
3
+ ### 0.6.15 / 2021-02-22
4
+
5
+ * Really fixed encoding arguments in executable entrypoints
6
+
7
+ ### 0.6.14 / 2021-02-22
8
+
9
+ * Fixed encoding arguments in executable entrypoints
10
+
11
+ ### 0.6.13 / 2021-02-22
12
+
13
+ * Remove InputOnly and OutputOnly proto tags from docs to avoid confusing YARD.
14
+ * Generate drift manifest.
15
+ * Executable entrypoints set the default external locale to utf-8.
16
+
17
+ ### 0.6.12 / 2021-02-01
18
+
19
+ * No changes.
20
+
21
+ ### 0.6.11 / 2021-02-01
22
+
23
+ * Generated clients determine whether to use self-signed JWT credentials.
24
+
3
25
  ### 0.6.10 / 2021-01-13
4
26
 
5
27
  * A set of human-readable command-line parameters can now be specified for the gapic-generator, e.g. `gem-name`. These parameters strictly duplicate the existing behaviour of old command-line parameters, e.g. `:gem.:name`.
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env -S ruby -EUTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # Copyright 2018 Google LLC
@@ -24,6 +24,7 @@ module Gapic
24
24
  @brace_detector = /\A(?<pre>[^`]*(`[^`]*`[^`]*)*[^`\\])?\{(?<inside>[^\s][^}]*)\}(?<post>.*)\z/m
25
25
  @xref_detector = /\A(?<pre>[^`]*(`[^`]*`[^`]*)*)?\[(?<text>[\w\. `-]+)\]\[(?<addr>[\w\.]+)\](?<post>.*)\z/m
26
26
  @list_element_detector = /\A\s*(\*|\+|-|[0-9a-zA-Z]+\.)\s/
27
+ @omit_lines = ["@InputOnly\n", "@OutputOnly\n"]
27
28
 
28
29
  class << self
29
30
  ##
@@ -49,7 +50,7 @@ module Gapic
49
50
  # preformatted.
50
51
  in_block = nil
51
52
  base_indent = 0
52
- lines.map do |line|
53
+ (lines - @omit_lines).map do |line|
53
54
  indent = line_indent line
54
55
  if indent.nil?
55
56
  in_block = nil
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Gapic
18
18
  module Generator
19
- VERSION = "0.6.10"
19
+ VERSION = "0.6.15"
20
20
  end
21
21
  end
@@ -65,18 +65,19 @@ module Gapic
65
65
  end
66
66
 
67
67
  # Gem level files
68
- files << g("gem/gitignore.erb", ".gitignore", gem: gem)
69
- files << g("gem/version.erb", "lib/#{gem.version_file_path}", gem: gem)
70
- files << g("gem/test_helper.erb", "test/helper.rb", gem: gem)
71
- files << g("gem/gemspec.erb", "#{gem.name}.gemspec", gem: gem)
72
- files << g("gem/gemfile.erb", "Gemfile", gem: gem)
73
- files << g("gem/rakefile.erb", "Rakefile", gem: gem)
74
- files << g("gem/readme.erb", "README.md", gem: gem)
75
- files << g("gem/changelog.erb", "CHANGELOG.md", gem: gem)
76
- files << g("gem/rubocop.erb", ".rubocop.yml", gem: gem)
77
- files << g("gem/yardopts.erb", ".yardopts", gem: gem)
78
- files << g("gem/license.erb", "LICENSE.md", gem: gem)
79
- files << g("gem/entrypoint.erb", "lib/#{gem.name}.rb", gem: gem)
68
+ files << g("gem/gitignore.erb", ".gitignore", gem: gem)
69
+ files << g("gem/version.erb", "lib/#{gem.version_file_path}", gem: gem)
70
+ files << g("gem/test_helper.erb", "test/helper.rb", gem: gem)
71
+ files << g("gem/gemspec.erb", "#{gem.name}.gemspec", gem: gem)
72
+ files << g("gem/gemfile.erb", "Gemfile", gem: gem)
73
+ files << g("gem/rakefile.erb", "Rakefile", gem: gem)
74
+ files << g("gem/readme.erb", "README.md", gem: gem)
75
+ files << g("gem/changelog.erb", "CHANGELOG.md", gem: gem)
76
+ files << g("gem/rubocop.erb", ".rubocop.yml", gem: gem)
77
+ files << g("gem/yardopts.erb", ".yardopts", gem: gem)
78
+ files << g("gem/license.erb", "LICENSE.md", gem: gem)
79
+ files << g("gem/entrypoint.erb", "lib/#{gem.name}.rb", gem: gem)
80
+ files << g("gem/gapic_metadata_json.erb", "gapic_metadata.json", gem: gem)
80
81
 
81
82
  gem.proto_files.each do |proto_file|
82
83
  files << g("proto_docs/proto_file.erb", "proto_docs/#{proto_file.docs_file_path}", file: proto_file)
@@ -17,6 +17,8 @@
17
17
  require "gapic/helpers/filepath_helper"
18
18
  require "gapic/helpers/namespace_helper"
19
19
 
20
+ require "json"
21
+
20
22
  module Gapic
21
23
  module Presenters
22
24
  ##
@@ -191,6 +193,27 @@ module Gapic
191
193
  .sort_by { |name, _requirements| name }
192
194
  end
193
195
 
196
+ ##
197
+ # Returns a hash with a drift_manifest of
198
+ # a first package in this gem
199
+ # (while the behaviour in case of multiple packages is clarified).
200
+ # See https://github.com/googleapis/googleapis/blob/master/gapic/metadata/gapic_metadata.proto
201
+ #
202
+ # @return [Hash]
203
+ def first_package_drift_manifest
204
+ return {} unless packages?
205
+ packages[0].drift_manifest
206
+ end
207
+
208
+ ##
209
+ # Returns a drift manifest of the first package in
210
+ # a pretty JSON string form
211
+ #
212
+ # @return [String]
213
+ def first_package_drift_json
214
+ JSON.pretty_generate first_package_drift_manifest
215
+ end
216
+
194
217
  private
195
218
 
196
219
  def gem_config key
@@ -99,6 +99,24 @@ module Gapic
99
99
  def helpers_require
100
100
  package_require + "/_helpers"
101
101
  end
102
+
103
+ ##
104
+ # Returns a hash with a drift_manifest of this package
105
+ # describing correspondence between the proto description
106
+ # of the package with the generated code for the package.
107
+ # See https://github.com/googleapis/googleapis/blob/master/gapic/metadata/gapic_metadata.proto
108
+ #
109
+ # @return [Hash]
110
+ def drift_manifest
111
+ {
112
+ schema: "1.0",
113
+ comment: "This file maps proto services/RPCs to the corresponding library clients/methods",
114
+ language: "ruby",
115
+ protoPackage: name,
116
+ libraryPackage: namespace,
117
+ services: services.map { |s| [s.grpc_service_name, s.drift_manifest] }.to_h
118
+ }
119
+ end
102
120
  end
103
121
  end
104
122
  end
@@ -333,10 +333,40 @@ module Gapic
333
333
  @api.grpc_service_config.service_level_configs[grpc_full_name]
334
334
  end
335
335
 
336
+ ##
337
+ # The short proto name for this service
338
+ #
339
+ # @return [String]
340
+ def grpc_service_name
341
+ @service.name
342
+ end
343
+
336
344
  def grpc_full_name
337
345
  @service.address.join "."
338
346
  end
339
347
 
348
+ ##
349
+ # Returns a hash with a drift_manifest of this service,
350
+ # describing correspondence between the proto description
351
+ # of the service with the generated code for the service.
352
+ # See https://github.com/googleapis/googleapis/blob/master/gapic/metadata/gapic_metadata.proto
353
+ #
354
+ # @return [Hash]
355
+ def drift_manifest
356
+ {
357
+ clients: {
358
+ grpc: {
359
+ libraryClient: client_name_full,
360
+ # The methods should grouped by grpc_method_name and then
361
+ # their names are returned together in an array.
362
+ # For Ruby currently we have 1:1 proto to code
363
+ # correspondence for methods, so our generation is easier
364
+ methods: methods.map { |m| [m.grpc_method_name, [m.name]] }.to_h
365
+ }
366
+ }
367
+ }
368
+ end
369
+
340
370
  private
341
371
 
342
372
  def default_config key
@@ -0,0 +1,2 @@
1
+ <%- assert_locals gem -%>
2
+ <%= gem.first_package_drift_json %>
@@ -97,7 +97,13 @@ class <%= service.client_name %>
97
97
  # Create credentials
98
98
  credentials = @config.credentials
99
99
  <%- unless service.generic_endpoint? -%>
100
- credentials ||= Credentials.default scope: @config.scope
100
+ # Use self-signed JWT if the scope and endpoint are unchanged from default,
101
+ # but only if the default endpoint does not have a region prefix.
102
+ enable_self_signed_jwt = @config.scope == <%= service.client_name %>.configure.scope &&
103
+ @config.endpoint == <%= service.client_name %>.configure.endpoint &&
104
+ !@config.endpoint.split(".").first.include?("-")
105
+ credentials ||= Credentials.default scope: @config.scope,
106
+ enable_self_signed_jwt: enable_self_signed_jwt
101
107
  if credentials.is_a?(String) || credentials.is_a?(Hash)
102
108
  credentials = Credentials.new credentials, scope: @config.scope
103
109
  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.6.10
4
+ version: 0.6.15
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-01-14 00:00:00.000000000 Z
13
+ date: 2021-02-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -246,6 +246,7 @@ files:
246
246
  - templates/default/gem/_version.erb
247
247
  - templates/default/gem/changelog.erb
248
248
  - templates/default/gem/entrypoint.erb
249
+ - templates/default/gem/gapic_metadata_json.erb
249
250
  - templates/default/gem/gemfile.erb
250
251
  - templates/default/gem/gemspec.erb
251
252
  - templates/default/gem/gitignore.erb
@@ -347,7 +348,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
347
348
  - !ruby/object:Gem::Version
348
349
  version: '0'
349
350
  requirements: []
350
- rubygems_version: 3.1.2
351
+ rubygems_version: 3.1.4
351
352
  signing_key:
352
353
  specification_version: 4
353
354
  summary: An API Client Generator for Ruby in Ruby!