gapic-generator 0.6.10 → 0.6.15

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: 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!