gapic-generator-cloud 0.3.1 → 0.5.1

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