gapic-generator-cloud 0.3.3 → 0.6.0

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: 10c441fdc1fa39c04dd899ecdf54220aee63f9c37e612f7967f29fec9760370c
4
- data.tar.gz: c7946bf5da749801f61af89282bb581958efe12c891fe6288c827f9496298712
3
+ metadata.gz: '02926a88b55343003c21f8032beb370d1bbdb2ae37ebf88aefe0ddd4d40a69df'
4
+ data.tar.gz: ced33bd5a212b6bd52a31bb9a49eee2913423a0350bfea48f33d18ced6ca3a83
5
5
  SHA512:
6
- metadata.gz: 382a4df1000768f154070a62776dd9bf36d64326771addc29e5f7a904643657f6c0f68300e2e7d1f1b664afc7402dd0b68882f1023cb10eb9da534e544c21494
7
- data.tar.gz: c43058e550a06efffd832b7b7437d97da4f847824291bd738470850238a3bcbe9671ab1b15afe1f12280e19a3e4cfe0dc10cf3cd746aba70f5ea4c6e3fdec300
6
+ metadata.gz: 7ceca5878427fafb3b122924851298a99addaa2832ff45eb3219178cbb63e31545a91504909e54c1c05d945a75967c3f98680e4a2dbf0728270269ae5ba18bd1
7
+ data.tar.gz: 82e55f290ca429d499158c9f33342e3895b06c6de1e2d1d37eee88718561501444f713503279c04d4fb7bd13fbf41d42b98cae4293d6a3edb8940f014057e1a3
@@ -1,5 +1,45 @@
1
1
  # Release History for gapic-generator-cloud
2
2
 
3
+ ### 0.6.0 / 2020-06-02
4
+
5
+ * Includes changes from gapic-generator 0.6.0.
6
+ * Support for clients with generic endpoint and credentials.
7
+ * Support for adding extra dependencies.
8
+ * Fix the logic determining whether a wrapper needs a separate entrypoint file.
9
+ * Disable Metrics/BlockLength check for all sample tests.
10
+
11
+ ### 0.5.1 / 2020-05-21
12
+
13
+ * Includes changes from gapic-generator 0.5.1
14
+
15
+ ### 0.5.0 / 2020-05-19
16
+
17
+ * Includes changes from gapic-generator 0.5.0
18
+ * Wrappers now support partial-gapic helpers.
19
+ * Generated configs for wrappers now include endpoint and scope.
20
+
21
+ ### 0.4.3 / 2020-05-01
22
+
23
+ * Unpin minitest in the generated wrappers.
24
+
25
+ ### 0.4.2 / 2020-04-28
26
+
27
+ * Includes changes from gapic-generator 0.4.2
28
+ * Eliminate a circular require in generated wrappers.
29
+
30
+ ### 0.4.1 / 2020-04-23
31
+
32
+ * Wrapper templates honor overridden namespaces.
33
+ * Support setting the gem namespace from the docker interface.
34
+
35
+ ### 0.4.0 / 2020-04-20
36
+
37
+ * Includes changes from gapic-generator 0.4.0
38
+ * Apply overrides to client namespaces but not proto namespaces.
39
+ * Remove common resources proto from generated files.
40
+ * Multiple overrides can be specified in the docker interface.
41
+ * Fixed: The pre-migration versions in wrapper readmes were malformed if the migration version was still 0.x.
42
+
3
43
  ### 0.3.3 / 2020-04-13
4
44
 
5
45
  * Includes changes from gapic-generator 0.3.3
@@ -18,13 +18,18 @@
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
- ":gem.:yard_strict" => "ruby-cloud-yard-strict"
24
+ ":gem.:yard_strict" => "ruby-cloud-yard-strict",
25
+ ":gem.:generic_endpoint" => "ruby-cloud-generic-endpoint"
24
26
  }
27
+
28
+ # Value options always take string values.
25
29
  value_option_map = {
26
30
  "configuration" => "ruby-cloud-config",
27
31
  ":gem.:name" => "ruby-cloud-gem-name",
32
+ ":gem.:namespace" => "ruby-cloud-gem-namespace",
28
33
  ":gem.:title" => "ruby-cloud-title",
29
34
  ":gem.:description" => "ruby-cloud-description",
30
35
  ":gem.:summary" => "ruby-cloud-summary",
@@ -36,15 +41,30 @@ value_option_map = {
36
41
  ":gem.:api_id" => "ruby-cloud-api-id",
37
42
  ":gem.:factory_method_suffix" => "ruby-cloud-factory-method-suffix"
38
43
  }
44
+
45
+ # Path options take one or more file paths delimited by semicolons.
39
46
  path_option_map = {
40
47
  "samples" => ["ruby-cloud-samples", "samples"],
41
48
  "grpc_service_config" => "ruby-cloud-grpc-service-config"
42
49
  }
50
+
51
+ # Map options take one or more mappings delimited by semicolons. Each mapping
52
+ # must be of the form "key=value". Note that periods in keys are treated as
53
+ # literal periods, not subkey delimiters.
43
54
  map_option_map = {
55
+ ":common_services" => "ruby-cloud-common-services",
44
56
  ":overrides.:file_path" => "ruby-cloud-path-override",
45
- ":overrides.:namespace" => "ruby-cloud-namespace-override"
57
+ ":overrides.:namespace" => "ruby-cloud-namespace-override",
58
+ ":overrides.:service" => "ruby-cloud-service-override",
59
+ ":gem.:extra_dependencies" => "ruby-cloud-extra-dependencies"
46
60
  }
47
61
 
62
+ # A set of files that, if generated, should be removed.
63
+ remove_paths = [
64
+ "lib/google/iam/v1/iam_policy_pb.rb",
65
+ "lib/google/cloud/common_resources_pb.rb"
66
+ ]
67
+
48
68
  parameters = {}
49
69
 
50
70
  OptionParser.new do |op|
@@ -72,8 +92,11 @@ OptionParser.new do |op|
72
92
  map_option_map.each do |key, flags|
73
93
  flags = Array(flags).map { |f| "--#{f} MAPPING" }
74
94
  op.on(*flags) do |mapping|
75
- mapping_key, mapping_val = mapping.split("=", 2)
76
- parameters["#{key}.#{mapping_key}"] = mapping_val if mapping_val
95
+ mapping.split(";").each do |mapping_kv|
96
+ mapping_key, mapping_val = mapping_kv.split("=", 2)
97
+ mapping_key.gsub!(".", "\\\\\\\\.")
98
+ parameters["#{key}.#{mapping_key}"] = mapping_val if mapping_val
99
+ end
77
100
  end
78
101
  end
79
102
  end.parse! ARGV
@@ -93,11 +116,18 @@ ruby_plugin_args =
93
116
 
94
117
  protoc_cmd = [
95
118
  "grpc_tools_ruby_protoc",
96
- "--proto_path=/protos/", "--proto_path=/in/"
119
+ # It is important for /in to come before /protos because all input files
120
+ # come from /in, and protoc will complain if any of those are also found
121
+ # earlier in the proto path.
122
+ "--proto_path=/in/", "--proto_path=/protos/"
97
123
  ] + ruby_plugin_args + [
98
124
  "--ruby_cloud_out=/out/",
99
125
  "--ruby_cloud_opt", parameter_strs.join(",")
100
126
  ] + ARGV + Dir.glob("/in/**/*.proto").sort
101
127
 
102
128
  FileUtils.mkdir_p "/out/lib"
103
- exec(*protoc_cmd)
129
+ system(*protoc_cmd)
130
+
131
+ remove_paths.each do |path|
132
+ FileUtils.rm_f Dir.glob "/out/#{path}"
133
+ 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.3"
21
+ VERSION = "0.6.0"
21
22
  end
22
23
  end
23
24
  end
@@ -16,6 +16,7 @@
16
16
 
17
17
  require "gapic/generators/default_generator"
18
18
  require "gapic/presenters"
19
+ require "gapic/presenters/cloud_gem_presenter"
19
20
  require "gapic/presenters/wrapper_gem_presenter"
20
21
 
21
22
  module Gapic
@@ -42,19 +43,19 @@ module Gapic
42
43
  # @return [Array<
43
44
  # Google::Protobuf::Compiler::CodeGeneratorResponse::File>]
44
45
  # The files that were generated for the API.
45
- def generate
46
+ def generate gem_presenter: nil
46
47
  gem_config = @api.configuration[:gem] ||= {}
47
48
  return generate_wrapper if gem_config[:version_dependencies]
48
49
 
49
- orig_files = super
50
-
51
- cloud_files = []
52
-
53
- gem = Gapic::Presenters.gem_presenter @api
50
+ gem = gem_presenter || Gapic::Presenters.cloud_gem_presenter(@api)
51
+ orig_files = super gem_presenter: gem
54
52
 
55
53
  # Additional Gem level files
56
- cloud_files << g("gem/repo-metadata.erb", ".repo-metadata.json", gem: gem)
57
- cloud_files << g("gem/authentication.erb", "AUTHENTICATION.md", gem: gem) unless gem.services.empty?
54
+ cloud_files = []
55
+ cloud_files << g("gem/repo-metadata.erb", ".repo-metadata.json", gem: gem)
56
+ unless gem.services.empty? || gem.generic_endpoint?
57
+ cloud_files << g("gem/authentication.erb", "AUTHENTICATION.md", gem: gem)
58
+ end
58
59
 
59
60
  format_files cloud_files
60
61
 
@@ -79,7 +80,7 @@ module Gapic
79
80
  files << g("gem/repo-metadata.erb", ".repo-metadata.json", gem: gem)
80
81
  files << g("wrapper_gem/rubocop.erb", ".rubocop.yml", gem: gem)
81
82
  files << g("wrapper_gem/yardopts.erb", ".yardopts", gem: gem)
82
- files << g("gem/authentication.erb", "AUTHENTICATION.md", gem: gem)
83
+ files << g("gem/authentication.erb", "AUTHENTICATION.md", gem: gem) unless gem.generic_endpoint?
83
84
  files << g("gem/changelog.erb", "CHANGELOG.md", gem: gem)
84
85
  files << g("wrapper_gem/gemfile.erb", "Gemfile", gem: gem)
85
86
  files << g("gem/license.erb", "LICENSE.md", gem: gem)
@@ -89,7 +90,7 @@ module Gapic
89
90
  files << g("wrapper_gem/entrypoint.erb", "lib/#{gem.name}.rb", gem: gem) if gem.needs_entrypoint?
90
91
  files << g("wrapper_gem/main.erb", "lib/#{gem.namespace_file_path}", gem: gem)
91
92
  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)
93
+ files << g("gem/test_helper.erb", "test/helper.rb", gem: gem)
93
94
  files << g("wrapper_gem/client_test.erb", "test/#{gem.namespace_require}/client_test.rb", gem: gem)
94
95
  files << g("wrapper_gem/version_test.erb", "test/#{gem.namespace_require}/version_test.rb", gem: gem)
95
96
 
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require "gapic/presenters"
18
+ require "gapic/presenters/wrapper_service_presenter"
19
+
20
+ module Gapic
21
+ module Presenters
22
+ ##
23
+ # A presenter subclass for cloud gems.
24
+ #
25
+ class CloudGemPresenter < GemPresenter
26
+ def license_name
27
+ "Apache-2.0"
28
+ end
29
+
30
+ def extra_files
31
+ return ["README.md", "LICENSE.md", ".yardopts"] if generic_endpoint?
32
+ ["README.md", "LICENSE.md", "AUTHENTICATION.md", ".yardopts"]
33
+ end
34
+
35
+ def dependencies
36
+ deps = super
37
+ deps["google-cloud-errors"] = "~> 1.0"
38
+ deps
39
+ end
40
+ end
41
+
42
+ def self.cloud_gem_presenter api
43
+ CloudGemPresenter.new api
44
+ end
45
+ end
46
+ end
@@ -22,7 +22,7 @@ module Gapic
22
22
  ##
23
23
  # A presenter for wrapper gems.
24
24
  #
25
- class WrapperGemPresenter < GemPresenter
25
+ class WrapperGemPresenter < CloudGemPresenter
26
26
  def entrypoint_require
27
27
  namespace_require
28
28
  end
@@ -30,7 +30,7 @@ module Gapic
30
30
  def services
31
31
  @services ||= begin
32
32
  files = @api.generate_files
33
- files.map(&:services).flatten.map { |s| WrapperServicePresenter.new @api, s }
33
+ files.map(&:services).flatten.map { |s| WrapperServicePresenter.new self, @api, s }
34
34
  end
35
35
  end
36
36
 
@@ -38,12 +38,20 @@ 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
44
52
 
45
53
  def needs_entrypoint?
46
- name != namespace_file_path
54
+ name != namespace_require
47
55
  end
48
56
 
49
57
  def needs_default_config_block?
@@ -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?
@@ -78,19 +92,24 @@ module Gapic
78
92
  gem_config(:version_dependencies).to_s.split(";").map { |str| str.split ":" }
79
93
  end
80
94
 
81
- def gem_version_dependencies
82
- version_dependencies.sort_by { |version, _requirement| version }
83
- .map { |version, requirement| ["#{name}-#{version}", requirement] }
84
- end
85
-
86
95
  def versioned_gems
87
- gem_version_dependencies.map { |name, _requirement| name }
96
+ version_dependencies.map { |version, _requirement| "#{name}-#{version}" }.sort
88
97
  end
89
98
 
90
99
  def default_version
91
100
  version_dependencies.first&.first
92
101
  end
93
102
 
103
+ def dependencies
104
+ deps = { "google-cloud-core" => "~> 1.5" }
105
+ version_dependencies.each do |version, requirement|
106
+ deps["#{name}-#{version}"] = "~> #{requirement}"
107
+ end
108
+ extra_deps = gem_config :extra_dependencies
109
+ deps.merge! extra_deps if extra_deps
110
+ deps
111
+ end
112
+
94
113
  def google_cloud_short_name
95
114
  m = /^google-cloud-(.*)$/.match name
96
115
  return nil unless m
@@ -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
@@ -22,15 +23,14 @@ module Gapic
22
23
  # A presenter for wrapper services.
23
24
  #
24
25
  class WrapperServicePresenter < ServicePresenter
25
- def gem
26
- WrapperGemPresenter.new @api
27
- end
28
-
29
26
  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
27
+ @factory_method_name ||= begin
28
+ method_name = ActiveSupport::Inflector.underscore name
29
+ suffix = gem.factory_method_suffix
30
+ method_name = "#{method_name}#{suffix}" unless method_name.end_with? suffix
31
+ method_name = "#{method_name}_client" if Gapic::RubyInfo.excluded_method_names.include? method_name
32
+ method_name
33
+ end
34
34
  end
35
35
 
36
36
  def create_client_call
@@ -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
@@ -52,7 +53,7 @@ end
52
53
  # Acceptance tests
53
54
  desc "Run the <%= gem.name %> acceptance tests."
54
55
  task :acceptance, :project, :keyfile do |t, args|
55
- <%- if service -%>
56
+ <%- if service && !gem.generic_endpoint? -%>
56
57
  project = args[:project]
57
58
  project ||=
58
59
  ENV["<%= gem.env_prefix %>_TEST_PROJECT"] ||
@@ -78,8 +79,8 @@ task :acceptance, :project, :keyfile do |t, args|
78
79
  ENV["<%= gem.env_prefix %>_PROJECT"] = project
79
80
  ENV["<%= gem.env_prefix %>_TEST_PROJECT"] = project
80
81
  ENV["<%= gem.env_prefix %>_KEYFILE_JSON"] = keyfile
81
- <%- end -%>
82
82
 
83
+ <%- end -%>
83
84
  Rake::Task["acceptance:run"].invoke
84
85
  end
85
86
 
@@ -12,6 +12,7 @@
12
12
  $ gem install <%= gem.name %>
13
13
  ```
14
14
 
15
+ <%- unless gem.generic_endpoint? -%>
15
16
  ## Before You Begin
16
17
 
17
18
  In order to use this library, you first need to go through the following steps:
@@ -29,6 +30,7 @@ In order to use this library, you first need to go through the following steps:
29
30
  <%- end -%>
30
31
  1. {file:AUTHENTICATION.md Set up authentication.}
31
32
 
33
+ <%- end -%>
32
34
  ## Quick Start
33
35
 
34
36
  <%- if gem.packages? -%>
@@ -10,4 +10,6 @@
10
10
  -
11
11
  README.md
12
12
  LICENSE.md
13
+ <%- unless gem.generic_endpoint? -%>
13
14
  AUTHENTICATION.md
15
+ <%- 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
@@ -3,15 +3,9 @@ source "https://rubygems.org"
3
3
 
4
4
  gemspec
5
5
 
6
- gem "google-cloud-core", path: "../google-cloud-core"
7
- gem "google-cloud-env", path: "../google-cloud-env"
8
- gem "google-cloud-errors", path: "../google-cloud-errors"
9
- <%- gem.gem_version_dependencies.each do |name, _requirement| -%>
6
+ <%- gem.versioned_gems.each do |name| -%>
10
7
  gem "<%= name %>", path: "../<%= name %>"
11
8
  <%- end -%>
12
9
 
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"
10
+ # google-protobuf 3.12.0 requires Ruby 2.5 or later, so pin to 3.11 on older Rubies
11
+ gem "google-protobuf", (RUBY_VERSION < "2.5" ? "~> 3.11.4" : "~> 3.12")
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
13
13
  gem.description = <%= gem.description.inspect %>
14
14
  gem.summary = <%= gem.summary.inspect %>
15
15
  gem.homepage = <%= gem.homepage.inspect %>
16
- gem.license = "Apache-2.0"
16
+ gem.license = <%= gem.license_name.inspect %>
17
17
 
18
18
  gem.platform = Gem::Platform::RUBY
19
19
 
@@ -23,17 +23,15 @@ Gem::Specification.new do |gem|
23
23
 
24
24
  gem.required_ruby_version = ">= 2.4"
25
25
 
26
- gem.add_dependency "google-cloud-core", "~> 1.5"
27
- <%- gem.gem_version_dependencies.each do |name, requirement| -%>
28
- gem.add_dependency "<%= name %>", "~> <%= requirement %>"
26
+ <%- gem.dependency_list.each do |name, requirements| -%>
27
+ gem.add_dependency <%= name.inspect %>, <%= requirements.map { |v| v.inspect }.join ", " %>
29
28
  <%- end -%>
30
29
 
31
- gem.add_development_dependency "autotest-suffix", "~> 1.1"
32
30
  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"
31
+ gem.add_development_dependency "minitest", "~> 5.14"
35
32
  gem.add_development_dependency "minitest-focus", "~> 1.1"
36
33
  gem.add_development_dependency "minitest-rg", "~> 5.2"
34
+ gem.add_development_dependency "rake", ">= 12.0"
37
35
  gem.add_development_dependency "redcarpet", "~> 3.0"
38
36
  gem.add_development_dependency "simplecov", "~> 0.9"
39
37
  gem.add_development_dependency "yard", "~> 0.9"
@@ -32,6 +32,7 @@ for more usage information.
32
32
  $ gem install <%= gem.name %>
33
33
  ```
34
34
 
35
+ <%- unless gem.generic_endpoint? -%>
35
36
  In order to use this library, you first need to go through the following steps:
36
37
 
37
38
  1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
@@ -47,6 +48,7 @@ In order to use this library, you first need to go through the following steps:
47
48
  <%- end -%>
48
49
  1. {file:AUTHENTICATION.md Set up authentication.}
49
50
 
51
+ <%- end -%>
50
52
  <%- if gem.migration? %>
51
53
  ## Migrating from <%= gem.pre_migration_version %> versions
52
54
 
@@ -16,7 +16,7 @@ Documentation:
16
16
 
17
17
  Metrics/BlockLength:
18
18
  Exclude:
19
- - "samples/acceptance/*.rb"
19
+ - "samples/**/acceptance/*.rb"
20
20
 
21
21
  Naming/FileName:
22
22
  Exclude:
@@ -8,7 +8,9 @@
8
8
  ./lib/**/*.rb
9
9
  -
10
10
  README.md
11
+ <%- unless gem.generic_endpoint? -%>
11
12
  AUTHENTICATION.md
13
+ <%- end -%>
12
14
  <%- if gem.migration? -%>
13
15
  MIGRATING.md
14
16
  <%- end -%>
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.3
4
+ version: 0.6.0
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-13 00:00:00.000000000 Z
13
+ date: 2020-06-02 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.3
35
+ version: 0.6.0
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.3
42
+ version: 0.6.0
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: google-style
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -172,10 +172,10 @@ files:
172
172
  - cloud-rubocop.yml
173
173
  - lib/gapic/generator/cloud/version.rb
174
174
  - lib/gapic/generators/cloud_generator.rb
175
+ - lib/gapic/presenters/cloud_gem_presenter.rb
175
176
  - lib/gapic/presenters/wrapper_gem_presenter.rb
176
177
  - lib/gapic/presenters/wrapper_service_presenter.rb
177
178
  - templates/cloud/gem/authentication.erb
178
- - templates/cloud/gem/gemspec.erb
179
179
  - templates/cloud/gem/gitignore.erb
180
180
  - templates/cloud/gem/license.erb
181
181
  - templates/cloud/gem/rakefile.erb
@@ -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,38 +0,0 @@
1
- <%- assert_locals gem -%>
2
- # -*- ruby -*-
3
- # encoding: utf-8
4
- require File.expand_path("lib/<%= gem.version_require %>", __dir__)
5
-
6
- Gem::Specification.new do |gem|
7
- gem.name = "<%= gem.name %>"
8
- gem.version = <%= gem.version_name_full %>
9
-
10
- gem.authors = <%= gem.authors.inspect %>
11
- gem.email = <%= gem.email.inspect %>
12
- gem.description = <%= gem.description.inspect %>
13
- gem.summary = <%= gem.summary.inspect %>
14
- gem.homepage = <%= gem.homepage.inspect %>
15
- gem.license = "Apache-2.0"
16
-
17
- gem.platform = Gem::Platform::RUBY
18
-
19
- gem.files = `git ls-files -- lib/*`.split("\n") +
20
- `git ls-files -- proto_docs/*`.split("\n") +
21
- ["README.md", "LICENSE.md", "AUTHENTICATION.md", ".yardopts"]
22
- gem.require_paths = ["lib"]
23
-
24
- gem.required_ruby_version = ">= 2.4"
25
-
26
- gem.add_dependency "gapic-common", "~> 0.2"
27
- gem.add_dependency "google-cloud-errors", "~> 1.0"
28
- <%- if gem.iam_dependency? -%>
29
- gem.add_dependency "grpc-google-iam-v1", ">= 0.6.10", "< 2.0"
30
- <%- end -%>
31
-
32
- gem.add_development_dependency "google-style", "~> 1.24.0"
33
- gem.add_development_dependency "minitest", "~> 5.10"
34
- gem.add_development_dependency "rake", ">= 12.0"
35
- gem.add_development_dependency "redcarpet", "~> 3.0"
36
- gem.add_development_dependency "simplecov", "~> 0.18"
37
- gem.add_development_dependency "yard", "~> 0.9"
38
- end
@@ -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"