gapic-generator-cloud 0.3.3 → 0.6.0

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