gapic-generator-cloud 0.3.1 → 0.5.1

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: 70fd9ffac64e2c0ea96cbf5a154ff35e7bdb5e65012668745ae66e4ce42013f3
4
- data.tar.gz: c54b2af52a759abbd2f44f86d1b28cd5777f7a49c7f5cc2a7aa810c8c398e68e
3
+ metadata.gz: '05991cbbec5b9595616970ff1f3a119df0630e2c42065946237a9066db8a6d7d'
4
+ data.tar.gz: 3bd49bf2a990e322ca5e751765ed6dec1654e5cf850a5367959d765d81471ffa
5
5
  SHA512:
6
- metadata.gz: fcc24a9bb44fbb2b9884a1a88e8957e6a43e477cd271b9d9e4e9ba0c67aeb581d9b0ededb0a83068fd378630a379d843cd43a8001a51d0a7a3cb5278ec63337e
7
- data.tar.gz: 10e176617a47bac0d1069a7353b26840763eb240ba960622c002f3547ee84e59e633d140d450f67352e51a35a16ae3d97359bcd2e93543b205cd6ec2aa408024
6
+ metadata.gz: d7cd78ff4fea33d1570025d27b5c7d95d85ef81305d6cd099a0269d7a6c55df9af8cf2f2ff8871a4e41a33fa2d6dd644e381272faf94e171c4803a6cf963cf97
7
+ data.tar.gz: 80b97974c461eca68e5126319dbfd47fac990c95c3f2f4a50e8e726d1226f1304541ab383f213a750bfd0bccd810b9aafd0614687152944d6c5a3d73163f73f1
@@ -1,5 +1,45 @@
1
1
  # Release History for gapic-generator-cloud
2
2
 
3
+ ### 0.5.1 / 2020-05-21
4
+
5
+ * Includes changes from gapic-generator 0.5.1
6
+
7
+ ### 0.5.0 / 2020-05-19
8
+
9
+ * Includes changes from gapic-generator 0.5.0
10
+ * Wrappers now support partial-gapic helpers.
11
+ * Generated configs for wrappers now include endpoint and scope.
12
+
13
+ ### 0.4.3 / 2020-05-01
14
+
15
+ * Unpin minitest in the generated wrappers.
16
+
17
+ ### 0.4.2 / 2020-04-28
18
+
19
+ * Includes changes from gapic-generator 0.4.2
20
+ * Eliminate a circular require in generated wrappers.
21
+
22
+ ### 0.4.1 / 2020-04-23
23
+
24
+ * Wrapper templates honor overridden namespaces.
25
+ * Support setting the gem namespace from the docker interface.
26
+
27
+ ### 0.4.0 / 2020-04-20
28
+
29
+ * Includes changes from gapic-generator 0.4.0
30
+ * Apply overrides to client namespaces but not proto namespaces.
31
+ * Remove common resources proto from generated files.
32
+ * Multiple overrides can be specified in the docker interface.
33
+ * Fixed: The pre-migration versions in wrapper readmes were malformed if the migration version was still 0.x.
34
+
35
+ ### 0.3.3 / 2020-04-13
36
+
37
+ * Includes changes from gapic-generator 0.3.3
38
+
39
+ ### 0.3.2 / 2020-04-12
40
+
41
+ * Includes changes from gapic-generator 0.3.2
42
+
3
43
  ### 0.3.1 / 2020-04-11
4
44
 
5
45
  * Includes changes from gapic-generator 0.3.1
@@ -18,13 +18,17 @@
18
18
  require "optparse"
19
19
  require "fileutils"
20
20
 
21
+ # Boolean options may have values "true" or "false" (as strings)
21
22
  bool_option_map = {
22
23
  ":gem.:free_tier" => "ruby-cloud-free-tier",
23
24
  ":gem.:yard_strict" => "ruby-cloud-yard-strict"
24
25
  }
26
+
27
+ # Value options always take string values.
25
28
  value_option_map = {
26
29
  "configuration" => "ruby-cloud-config",
27
30
  ":gem.:name" => "ruby-cloud-gem-name",
31
+ ":gem.:namespace" => "ruby-cloud-gem-namespace",
28
32
  ":gem.:title" => "ruby-cloud-title",
29
33
  ":gem.:description" => "ruby-cloud-description",
30
34
  ":gem.:summary" => "ruby-cloud-summary",
@@ -36,15 +40,29 @@ value_option_map = {
36
40
  ":gem.:api_id" => "ruby-cloud-api-id",
37
41
  ":gem.:factory_method_suffix" => "ruby-cloud-factory-method-suffix"
38
42
  }
43
+
44
+ # Path options take one or more file paths delimited by semicolons.
39
45
  path_option_map = {
40
46
  "samples" => ["ruby-cloud-samples", "samples"],
41
47
  "grpc_service_config" => "ruby-cloud-grpc-service-config"
42
48
  }
49
+
50
+ # Map options take one or more mappings delimited by semicolons. Each mapping
51
+ # must be of the form "key=value". Note that periods in keys are treated as
52
+ # literal periods, not subkey delimiters.
43
53
  map_option_map = {
54
+ ":common_services" => "ruby-cloud-common-services",
44
55
  ":overrides.:file_path" => "ruby-cloud-path-override",
45
- ":overrides.:namespace" => "ruby-cloud-namespace-override"
56
+ ":overrides.:namespace" => "ruby-cloud-namespace-override",
57
+ ":overrides.:service" => "ruby-cloud-service-override"
46
58
  }
47
59
 
60
+ # A set of files that, if generated, should be removed.
61
+ remove_paths = [
62
+ "lib/google/iam/v1/iam_policy_pb.rb",
63
+ "lib/google/cloud/common_resources_pb.rb"
64
+ ]
65
+
48
66
  parameters = {}
49
67
 
50
68
  OptionParser.new do |op|
@@ -72,8 +90,11 @@ OptionParser.new do |op|
72
90
  map_option_map.each do |key, flags|
73
91
  flags = Array(flags).map { |f| "--#{f} MAPPING" }
74
92
  op.on(*flags) do |mapping|
75
- mapping_key, mapping_val = mapping.split("=", 2)
76
- parameters["#{key}.#{mapping_key}"] = mapping_val if mapping_val
93
+ mapping.split(";").each do |mapping_kv|
94
+ mapping_key, mapping_val = mapping_kv.split("=", 2)
95
+ mapping_key.gsub!(".", "\\\\\\\\.")
96
+ parameters["#{key}.#{mapping_key}"] = mapping_val if mapping_val
97
+ end
77
98
  end
78
99
  end
79
100
  end.parse! ARGV
@@ -93,11 +114,18 @@ ruby_plugin_args =
93
114
 
94
115
  protoc_cmd = [
95
116
  "grpc_tools_ruby_protoc",
96
- "--proto_path=/protos/", "--proto_path=/in/"
117
+ # It is important for /in to come before /protos because all input files
118
+ # come from /in, and protoc will complain if any of those are also found
119
+ # earlier in the proto path.
120
+ "--proto_path=/in/", "--proto_path=/protos/"
97
121
  ] + ruby_plugin_args + [
98
122
  "--ruby_cloud_out=/out/",
99
123
  "--ruby_cloud_opt", parameter_strs.join(",")
100
124
  ] + ARGV + Dir.glob("/in/**/*.proto").sort
101
125
 
102
126
  FileUtils.mkdir_p "/out/lib"
103
- exec(*protoc_cmd)
127
+ system(*protoc_cmd)
128
+
129
+ remove_paths.each do |path|
130
+ FileUtils.rm_f Dir.glob "/out/#{path}"
131
+ end
@@ -14,10 +14,11 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
+
17
18
  module Gapic
18
19
  module Generator
19
20
  module Cloud
20
- VERSION = "0.3.1"
21
+ VERSION = "0.5.1"
21
22
  end
22
23
  end
23
24
  end
@@ -89,7 +89,7 @@ module Gapic
89
89
  files << g("wrapper_gem/entrypoint.erb", "lib/#{gem.name}.rb", gem: gem) if gem.needs_entrypoint?
90
90
  files << g("wrapper_gem/main.erb", "lib/#{gem.namespace_file_path}", gem: gem)
91
91
  files << g("gem/version.erb", "lib/#{gem.version_file_path}", gem: gem)
92
- files << g("wrapper_gem/test_helper.erb", "test/helper.rb", gem: gem)
92
+ files << g("gem/test_helper.erb", "test/helper.rb", gem: gem)
93
93
  files << g("wrapper_gem/client_test.erb", "test/#{gem.namespace_require}/client_test.rb", gem: gem)
94
94
  files << g("wrapper_gem/version_test.erb", "test/#{gem.namespace_require}/version_test.rb", gem: gem)
95
95
 
@@ -38,6 +38,14 @@ module Gapic
38
38
  ruby_file_path @api, namespace
39
39
  end
40
40
 
41
+ def main_directory_name
42
+ namespace_require.split("/").last
43
+ end
44
+
45
+ def helpers_require
46
+ "#{namespace_require}/helpers"
47
+ end
48
+
41
49
  def namespace_file_path
42
50
  "#{namespace_require}.rb"
43
51
  end
@@ -54,10 +62,16 @@ module Gapic
54
62
  gem_config :migration_version
55
63
  end
56
64
 
65
+ # A description of the versions prior to the migration version.
66
+ # Could be "a.x" if the migration version is 1.0 or later, otherwise
67
+ # falls back to "pre-a.b".
57
68
  def pre_migration_version
58
- m = /^(\d)+\./.match migration_version.to_s
59
- return nil unless m
60
- "#{m[1].to_i - 1}.x"
69
+ match = /^(\d)+\.0/.match migration_version.to_s
70
+ if match
71
+ major = match[1].to_i
72
+ return "#{major - 1}.x" if major.positive?
73
+ end
74
+ "pre-#{migration_version}"
61
75
  end
62
76
 
63
77
  def migration?
@@ -15,6 +15,7 @@
15
15
  # limitations under the License.
16
16
 
17
17
  require "gapic/presenters"
18
+ require "gapic/ruby_info"
18
19
 
19
20
  module Gapic
20
21
  module Presenters
@@ -27,10 +28,13 @@ module Gapic
27
28
  end
28
29
 
29
30
  def factory_method_name
30
- method_name = ActiveSupport::Inflector.underscore name
31
- suffix = gem.factory_method_suffix
32
- method_name = "#{method_name}#{suffix}" unless method_name.end_with? suffix
33
- method_name
31
+ @factory_method_name ||= begin
32
+ method_name = ActiveSupport::Inflector.underscore name
33
+ suffix = gem.factory_method_suffix
34
+ method_name = "#{method_name}#{suffix}" unless method_name.end_with? suffix
35
+ method_name = "#{method_name}_client" if Gapic::RubyInfo.excluded_method_names.include? method_name
36
+ method_name
37
+ end
34
38
  end
35
39
 
36
40
  def create_client_call
@@ -30,7 +30,9 @@ Gem::Specification.new do |gem|
30
30
  <%- end -%>
31
31
 
32
32
  gem.add_development_dependency "google-style", "~> 1.24.0"
33
- gem.add_development_dependency "minitest", "~> 5.10"
33
+ gem.add_development_dependency "minitest", "~> 5.14"
34
+ gem.add_development_dependency "minitest-focus", "~> 1.1"
35
+ gem.add_development_dependency "minitest-rg", "~> 5.2"
34
36
  gem.add_development_dependency "rake", ">= 12.0"
35
37
  gem.add_development_dependency "redcarpet", "~> 3.0"
36
38
  gem.add_development_dependency "simplecov", "~> 0.18"
@@ -11,6 +11,7 @@ RuboCop::RakeTask.new
11
11
  require "rake/testtask"
12
12
  desc "Run tests."
13
13
  Rake::TestTask.new do |t|
14
+ t.libs << "test"
14
15
  t.test_files = FileList["test/**/*_test.rb"]
15
16
  t.warning = false
16
17
  end
@@ -3,7 +3,7 @@
3
3
  require "googleauth"
4
4
  <% end %>
5
5
  # Credentials for the <%= service.name %> API.
6
- class <%= service.credentials_name %> < Google::Auth::Credentials
6
+ class <%= service.credentials_name %> < ::Google::Auth::Credentials
7
7
  <%- if service.client_scopes.any? -%>
8
8
  self.scope = [
9
9
  <%- service.client_scopes.each_with_index do |client_scope, index| -%>
@@ -1,6 +1,6 @@
1
1
  <%- assert_locals service -%>
2
2
  @configure ||= begin
3
- namespace = <%= service.namespace.split("::").inspect %>
3
+ namespace = <%= service.namespace.split("::").reject(&:empty?).inspect %>
4
4
  parent_config = while namespace.any?
5
5
  parent_name = namespace.join "::"
6
6
  parent_const = const_get parent_name
@@ -1,3 +1,3 @@
1
1
  <%- assert_locals method -%>
2
- rescue GRPC::BadStatus => e
3
- raise Google::Cloud::Error.from_error(e)
2
+ rescue ::GRPC::BadStatus => e
3
+ raise ::Google::Cloud::Error.from_error(e)
@@ -1,2 +1,2 @@
1
1
  <%- assert_locals method -%>
2
- # @raise [Google::Cloud::Error] if the RPC is aborted.
2
+ # @raise [::Google::Cloud::Error] if the RPC is aborted.
@@ -1,45 +1,53 @@
1
1
  <%- assert_locals gem -%>
2
2
  <% @requires = capture do %>
3
+ # Require this file early so that the version constant gets defined before
4
+ # requiring "google/cloud". This is because google-cloud-core will load the
5
+ # entrypoint (gem name) file, which in turn re-requires this file (hence
6
+ # causing a require cycle) unless the version constant is already defined.
3
7
  require "<%= gem.version_require %>"
8
+
4
9
  require "googleauth"
5
10
  <%- if gem.needs_default_config_block? -%>
6
11
  gem "google-cloud-core"
7
- require "google/cloud" unless defined? Google::Cloud.new
12
+ require "google/cloud" unless defined? ::Google::Cloud.new
8
13
  require "google/cloud/config"
9
14
 
10
15
  # Set the default configuration
11
- Google::Cloud.configure.add_config! :<%= gem.google_cloud_short_name %> do |config|
12
- config.add_field! :credentials, nil, match: [String, Hash, Google::Auth::Credentials]
13
- config.add_field! :lib_name, nil, match: String
14
- config.add_field! :lib_version, nil, match: String
15
- config.add_field! :interceptors, nil, match: Array
16
- config.add_field! :timeout, nil, match: Numeric
17
- config.add_field! :metadata, nil, match: Hash
18
- config.add_field! :retry_policy, nil, match: [Hash, Proc]
16
+ ::Google::Cloud.configure.add_config! :<%= gem.google_cloud_short_name %> do |config|
17
+ config.add_field! :endpoint, <%= gem.services.first&.client_endpoint.inspect %>, match: ::String
18
+ config.add_field! :credentials, nil, match: [::String, ::Hash, ::Google::Auth::Credentials]
19
+ config.add_field! :scope, nil, match: [::Array, ::String]
20
+ config.add_field! :lib_name, nil, match: ::String
21
+ config.add_field! :lib_version, nil, match: ::String
22
+ config.add_field! :interceptors, nil, match: ::Array
23
+ config.add_field! :timeout, nil, match: ::Numeric
24
+ config.add_field! :metadata, nil, match: ::Hash
25
+ config.add_field! :retry_policy, nil, match: [::Hash, ::Proc]
26
+ config.add_field! :quota_project, nil, match: ::String
19
27
  end
20
28
  <%- end -%>
21
29
  <% end %>
22
30
  <%- gem.services.each do |service| -%>
23
31
  ##
24
- # Create a new client object for <%= service.name %>.
32
+ # Create a new client object for <%= service.module_name %>.
25
33
  #
26
34
  # By default, this returns an instance of
27
- # <%= gem.docs_link version: gem.default_version, class_name: "#{service.name}::Client" %>
35
+ # <%= gem.docs_link version: gem.default_version, class_name: "#{service.module_name}::Client" %>
28
36
  # for version <%= gem.default_version.capitalize %> of the API.
29
37
  # However, you can specify specify a different API version by passing it in the
30
- # `version` parameter. If the <%= service.name %> service is
38
+ # `version` parameter. If the <%= service.module_name %> service is
31
39
  # supported by that API version, and the corresponding gem is available, the
32
40
  # appropriate versioned client will be returned.
33
41
  #
34
42
  <%- if service.doc_description -%>
35
- # ## About <%= service.name %>
43
+ # ## About <%= service.module_name %>
36
44
  #
37
45
  <%= indent service.doc_description(disable_xrefs: true), "# " %>
38
46
  #
39
47
  <%- end -%>
40
- # @param version [String, Symbol] The API version to connect to. Optional.
48
+ # @param version [::String, ::Symbol] The API version to connect to. Optional.
41
49
  # Defaults to `:<%= gem.default_version %>`.
42
- # @return [<%= service.name %>::Client] A client object for the specified version.
50
+ # @return [<%= service.module_name %>::Client] A client object for the specified version.
43
51
  #
44
52
  def self.<%= service.factory_method_name %> version: :<%= gem.default_version %>, &block
45
53
  require "<%= gem.namespace_require %>/#{version.to_s.downcase}"
@@ -49,7 +57,7 @@ def self.<%= service.factory_method_name %> version: :<%= gem.default_version %>
49
57
  .select { |sym| sym.to_s.downcase == version.to_s.downcase.tr("_", "") }
50
58
  .first
51
59
  package_module = <%= gem.namespace %>.const_get package_name
52
- package_module.const_get(:<%= service.name %>).const_get(:Client).new(&block)
60
+ package_module.const_get(:<%= service.module_name %>).const_get(:Client).new(&block)
53
61
  end
54
62
 
55
63
  <%- end -%>
@@ -80,11 +88,15 @@ end
80
88
  # * `:retry_codes` (*type:* `Array<String>`) -
81
89
  # The error codes that should trigger a retry.
82
90
  #
83
- # @return [Google::Cloud::Config] The default configuration used by this library
91
+ # @return [::Google::Cloud::Config] The default configuration used by this library
84
92
  #
85
93
  def self.configure
86
- yield Google::Cloud.configure.<%= gem.google_cloud_short_name %> if block_given?
94
+ yield ::Google::Cloud.configure.<%= gem.google_cloud_short_name %> if block_given?
87
95
 
88
- Google::Cloud.configure.<%= gem.google_cloud_short_name %>
96
+ ::Google::Cloud.configure.<%= gem.google_cloud_short_name %>
89
97
  end
90
98
  <%- end -%>
99
+ <% @footer = capture do %>
100
+ helper_path = ::File.join __dir__, "<%= gem.main_directory_name %>", "helpers.rb"
101
+ require "<%= gem.helpers_require %>" if ::File.file? helper_path
102
+ <% end %>
@@ -14,7 +14,7 @@ class <%= gem.namespace %>::ClientConstructionMinitest < Minitest::Test
14
14
  client = <%= gem.namespace %>.<%= service.factory_method_name %> do |config|
15
15
  config.credentials = grpc_channel
16
16
  end
17
- assert_kind_of <%= gem.namespaced_class "#{service.name}::Client", version: gem.default_version %>, client
17
+ assert_kind_of <%= gem.namespaced_class "#{service.module_name}::Client", version: gem.default_version %>, client
18
18
  end
19
19
  end
20
20
 
@@ -1,4 +1,4 @@
1
1
  <%- assert_locals gem -%>
2
2
  <%= render partial: "shared/header" -%>
3
3
 
4
- require "<%= gem.namespace_require %>"
4
+ require "<%= gem.namespace_require %>" unless defined? <%= gem.namespace %>::VERSION
@@ -10,8 +10,5 @@ gem "google-cloud-errors", path: "../google-cloud-errors"
10
10
  gem "<%= name %>", path: "../<%= name %>"
11
11
  <%- end -%>
12
12
 
13
- gem "rake"
14
-
15
- # Pin minitest to 5.11.x to avoid warnings emitted by 5.12.
16
- # See https://github.com/googleapis/google-cloud-ruby/issues/4110
17
- gem "minitest", "~> 5.11.3"
13
+ # google-protobuf 3.12.0 requires Ruby 2.5 or later, so pin to 3.11 on older Rubies
14
+ gem "google-protobuf", (RUBY_VERSION < "2.5" ? "~> 3.11.4" : "~> 3.12")
@@ -28,12 +28,11 @@ Gem::Specification.new do |gem|
28
28
  gem.add_dependency "<%= name %>", "~> <%= requirement %>"
29
29
  <%- end -%>
30
30
 
31
- gem.add_development_dependency "autotest-suffix", "~> 1.1"
32
31
  gem.add_development_dependency "google-style", "~> 1.24.0"
33
- gem.add_development_dependency "minitest", "~> 5.10"
34
- gem.add_development_dependency "minitest-autotest", "~> 1.0"
32
+ gem.add_development_dependency "minitest", "~> 5.14"
35
33
  gem.add_development_dependency "minitest-focus", "~> 1.1"
36
34
  gem.add_development_dependency "minitest-rg", "~> 5.2"
35
+ gem.add_development_dependency "rake", ">= 12.0"
37
36
  gem.add_development_dependency "redcarpet", "~> 3.0"
38
37
  gem.add_development_dependency "simplecov", "~> 0.9"
39
38
  gem.add_development_dependency "yard", "~> 0.9"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gapic-generator-cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.5.1
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-04-11 00:00:00.000000000 Z
13
+ date: 2020-05-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -32,14 +32,14 @@ dependencies:
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.3.1
35
+ version: 0.5.1
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.3.1
42
+ version: 0.5.1
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: google-style
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -198,7 +198,6 @@ files:
198
198
  - templates/cloud/wrapper_gem/rakefile.erb
199
199
  - templates/cloud/wrapper_gem/readme.erb
200
200
  - templates/cloud/wrapper_gem/rubocop.erb
201
- - templates/cloud/wrapper_gem/test_helper.erb
202
201
  - templates/cloud/wrapper_gem/version_test.erb
203
202
  - templates/cloud/wrapper_gem/yardopts.erb
204
203
  homepage: https://github.com/googleapis/gapic-generator-ruby
@@ -220,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
219
  - !ruby/object:Gem::Version
221
220
  version: '0'
222
221
  requirements: []
223
- rubygems_version: 3.1.2
222
+ rubygems_version: 3.0.3
224
223
  signing_key:
225
224
  specification_version: 4
226
225
  summary: An API Client Generator for Ruby in Ruby!
@@ -1,9 +0,0 @@
1
- <%- assert_locals gem -%>
2
- <%= render partial: "shared/header" -%>
3
-
4
- require "simplecov"
5
-
6
- gem "minitest"
7
- require "minitest/autorun"
8
- require "minitest/focus"
9
- require "minitest/rg"