gapic-generator-cloud 0.7.2 → 0.9.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: d4bffd3280586491e1757835aa38ca85b373970d5ecb88a0fda8d5ea6e259fdf
4
- data.tar.gz: 18bfa846048015823c294f296486862adf5a722c8a762d461b87c47f854ac83f
3
+ metadata.gz: f1eea0abf892b4a55303e5b4a2c34502221507204e9a20f5aa87f7a1e1965eb7
4
+ data.tar.gz: 1485bdadd75c11011b395cf3b025ef59772ec0e9fe410460dab4ee9d1fcdc14d
5
5
  SHA512:
6
- metadata.gz: 4a9824a7a6856ad8f21cb36548ac50c4336d9189c12a2e38e7f429459d6f480bc99d0fc8b721f4c23839c9d0c41ae95346d740eb3cddc91949ad30a1a8deadf7
7
- data.tar.gz: 5935a2546b5f8eaa34511f554ca5080a0b3cd7fca8a4caac8267f0f7c59c964e1089f38ffbda8a777d8803f4a9f12e1bfcf2ff22a755661c273effd0160ade97
6
+ metadata.gz: f58c889e346aa2ed848d01370f78ec7905342a3e55de9cedbec1f2fe40bc85a847c1782bcba731b537db0c9134ea0826877bf7916bf7c79e80c0e094c5e7ebf4
7
+ data.tar.gz: cb7fa4c07625fcd9ccdd85e2547abf6b13a2c691bce3dfcda86600c84e96f034c20b82d7790cccc661794e9a14f7fbc6e173b207f22580660990847346d0153f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Release History for gapic-generator-cloud
2
2
 
3
+ ### 0.9.1 / 2021-07-07
4
+
5
+ * Includes changes from gapic-generator 0.9.1
6
+ * Clarify some text in generated authentication docs
7
+
8
+ ### 0.9.0 / 2021-06-29
9
+
10
+ * Includes changes from gapic-generator 0.9.0
11
+
12
+ ### 0.8.0 / 2021-06-16
13
+
14
+ * Includes changes from gapic-generator 0.8.0
15
+
16
+ ### 0.7.5 / 2021-05-18
17
+
18
+ * Includes changes from gapic-generator 0.7.5
19
+
20
+ ### 0.7.4 / 2021-05-07
21
+
22
+ * Includes changes from gapic-generator 0.7.4
23
+
24
+ ### 0.7.3 / 2021-03-24
25
+
26
+ * Includes changes from gapic-generator 0.7.3
27
+ * Gapic metadata file generation is enabled by default for gapic-generator-cloud
28
+
3
29
  ### 0.7.2 / 2021-03-05
4
30
 
5
31
  * Disable metrics-related rubocop checks in generated wrapper libraries.
@@ -18,7 +18,7 @@
18
18
  module Gapic
19
19
  module Generator
20
20
  module Cloud
21
- VERSION = "0.7.2"
21
+ VERSION = "0.9.1"
22
22
  end
23
23
  end
24
24
  end
@@ -33,6 +33,11 @@ module Gapic
33
33
  gem_config = api.configuration[:gem] ||= {}
34
34
  gem_config[:homepage] ||= "https://github.com/googleapis/google-cloud-ruby"
35
35
 
36
+ # The gapic metadata generation is disabled by default as per spec.
37
+ # However it should be enabled by default for cloud libraries, otherwise we'll have to
38
+ # enable it in every synth/bazel file.
39
+ api.configuration[:generate_metadata] = true if api.configuration[:generate_metadata].nil?
40
+
36
41
  super
37
42
 
38
43
  # Configure to use prefer Google Cloud templates
@@ -21,9 +21,10 @@ module Gapic
21
21
  # Contains the cloud generator's parameters
22
22
  module CloudGeneratorParameters
23
23
  BOOL_PARAMETERS_ALIASES = {
24
- "ruby-cloud-free-tier" => ":gem.:free_tier",
25
- "ruby-cloud-yard-strict" => ":gem.:yard_strict",
26
- "ruby-cloud-generic-endpoint" => ":gem.:generic_endpoint"
24
+ "ruby-cloud-free-tier" => ":gem.:free_tier",
25
+ "ruby-cloud-yard-strict" => ":gem.:yard_strict",
26
+ "ruby-cloud-generic-endpoint" => ":gem.:generic_endpoint",
27
+ "ruby-cloud-generate-metadata" => ":generate_metadata"
27
28
  }.freeze
28
29
 
29
30
  STRING_PARAMETERS_ALIASES = {
@@ -41,12 +42,16 @@ module Gapic
41
42
  "ruby-cloud-api-id" => ":gem.:api_id",
42
43
  "ruby-cloud-api-shortname" => ":gem.:api_shortname",
43
44
  "ruby-cloud-factory-method-suffix" => ":gem.:factory_method_suffix",
45
+ "ruby-cloud-quick-start-service" => ":gem.:quick_start_service",
46
+ "ruby-cloud-quick-start-method" => ":gem.:quick_start_method",
44
47
  "ruby-cloud-default-service-host" => ":defaults.:service.:default_host",
45
- "ruby-cloud-grpc-service-config" => "grpc_service_config"
48
+ "ruby-cloud-grpc-service-config" => "grpc_service_config",
49
+ "ruby-cloud-wrapper-gem-override" => ":overrides.:wrapper_gem_name"
46
50
  }.freeze
47
51
 
48
52
  ARRAY_PARAMETERS_ALIASES = {
49
- "ruby-cloud-default-oauth-scopes" => ":defaults.:service.:oauth_scopes"
53
+ "ruby-cloud-default-oauth-scopes" => ":defaults.:service.:oauth_scopes",
54
+ "ruby-cloud-generate-transports" => ":transports"
50
55
  }.freeze
51
56
 
52
57
  MAP_PARAMETERS_ALIASES = {
@@ -38,11 +38,20 @@ module Gapic
38
38
  deps
39
39
  end
40
40
 
41
+ ##
42
+ # Whether this gem has a wrapper
43
+ # @return [Boolean]
44
+ def has_wrapper?
45
+ !wrapper_name.nil?
46
+ end
47
+
41
48
  ##
42
49
  # The name of the wrapper gem corresponding to this versioned gem
43
- # @return [String]
50
+ # @return [String, Nil]
44
51
  #
45
52
  def wrapper_name
53
+ return @api.wrapper_gem_name_override if @api.wrapper_gem_name_override?
54
+
46
55
  minfo = /^(.+)-v\d\w*$/.match name
47
56
  minfo ? minfo[1] : nil
48
57
  end
@@ -60,13 +69,35 @@ module Gapic
60
69
  #
61
70
  def description
62
71
  desc = readme_description
63
- if wrapper_name
72
+ if has_wrapper?
64
73
  desc += " Note that #{name} is a version-specific client library." \
65
74
  " For most uses, we recommend installing the main client library" \
66
75
  " #{wrapper_name} instead. See the readme for more details."
67
76
  end
68
77
  desc
69
78
  end
79
+
80
+ def cloud_env_prefix
81
+ env_prefix || "GOOGLE_CLOUD"
82
+ end
83
+
84
+ ##
85
+ # Returns a hash of extra generator arguments to be rendered into the
86
+ # repo-metadata.json file.
87
+ #
88
+ def generator_args_for_metadata
89
+ result = {}
90
+ result["ruby-cloud-description"] = description
91
+ result["ruby-cloud-env-prefix"] = env_prefix if env_prefix
92
+ result["ruby-cloud-product-url"] = product_documentation_url if product_documentation_url
93
+ path_overrides = @api.overrides_of(:file_path).map { |k, v| "#{k}=#{v}" }.join ";"
94
+ result["ruby-cloud-path-override"] = path_overrides unless path_overrides.empty?
95
+ namespace_overrides = @api.overrides_of(:namespace).map { |k, v| "#{k}=#{v}" }.join ";"
96
+ result["ruby-cloud-namespace-override"] = namespace_overrides unless namespace_overrides.empty?
97
+ service_overrides = @api.overrides_of(:service).map { |k, v| "#{k}=#{v}" }.join ";"
98
+ result["ruby-cloud-service-override"] = service_overrides unless service_overrides.empty?
99
+ result
100
+ end
70
101
  end
71
102
 
72
103
  def self.cloud_gem_presenter api
@@ -106,13 +106,24 @@ module Gapic
106
106
  end
107
107
 
108
108
  def dependencies
109
- deps = { "google-cloud-core" => "~> 1.5" }
110
- version_dependencies.each do |version, requirement|
111
- deps["#{name}-#{version}"] = "~> #{requirement}"
109
+ @dependencies ||= begin
110
+ deps = { "google-cloud-core" => "~> 1.6" }
111
+ version_dependencies.each do |version, requirement|
112
+ # For pre-release dependencies on versioned clients, support both
113
+ # 0.x and 1.x versions to ease the transition to 1.0 (GA) releases
114
+ # for those dependencies. (Note the 0.x->1.0 transition is
115
+ # generally not breaking.)
116
+ deps["#{name}-#{version}"] =
117
+ if requirement.start_with? "0."
118
+ [">= #{requirement}", "< 2.a"]
119
+ else
120
+ "~> #{requirement}"
121
+ end
122
+ end
123
+ extra_deps = gem_config_dependencies
124
+ deps.merge! extra_deps if extra_deps
125
+ deps
112
126
  end
113
- extra_deps = gem_config :extra_dependencies
114
- deps.merge! extra_deps if extra_deps
115
- deps
116
127
  end
117
128
 
118
129
  def google_cloud_short_name
@@ -22,7 +22,7 @@ during development.
22
22
  2. Set the [environment variable](#environment-variables).
23
23
 
24
24
  ```sh
25
- export <%= gem.env_prefix %>_CREDENTIALS=path/to/keyfile.json
25
+ export <%= gem.cloud_env_prefix %>_CREDENTIALS=path/to/keyfile.json
26
26
  ```
27
27
 
28
28
  3. Initialize the client.
@@ -69,24 +69,26 @@ The environment variables that <%= gem.name %>
69
69
  checks for credentials are configured on the service Credentials class (such as
70
70
  <%= service.credentials_class_xref %>):
71
71
 
72
- 1. `<%= gem.env_prefix %>_CREDENTIALS` - Path to JSON file, or JSON contents
73
- 2. `<%= gem.env_prefix %>_KEYFILE` - Path to JSON file, or JSON contents
74
- 3. `GOOGLE_CLOUD_CREDENTIALS` - Path to JSON file, or JSON contents
75
- 4. `GOOGLE_CLOUD_KEYFILE` - Path to JSON file, or JSON contents
76
- 5. `GOOGLE_APPLICATION_CREDENTIALS` - Path to JSON file
72
+ <%- if gem.env_prefix -%>
73
+ * `<%= gem.env_prefix %>_CREDENTIALS` - Path to JSON file, or JSON contents
74
+ * `<%= gem.env_prefix %>_KEYFILE` - Path to JSON file, or JSON contents
75
+ <%- end -%>
76
+ * `GOOGLE_CLOUD_CREDENTIALS` - Path to JSON file, or JSON contents
77
+ * `GOOGLE_CLOUD_KEYFILE` - Path to JSON file, or JSON contents
78
+ * `GOOGLE_APPLICATION_CREDENTIALS` - Path to JSON file
77
79
 
78
80
  ```ruby
79
81
  require "<%= gem.entrypoint_require %>"
80
82
 
81
- ENV["<%= gem.env_prefix %>_CREDENTIALS"] = "path/to/keyfile.json"
83
+ ENV["<%= gem.cloud_env_prefix %>_CREDENTIALS"] = "path/to/keyfile.json"
82
84
 
83
85
  client = <%= service.create_client_call %>
84
86
  ```
85
87
 
86
88
  ### Configuration
87
89
 
88
- The **Credentials JSON** can be configured instead of placing them in
89
- environment variables. Either on an individual client initialization:
90
+ The path to the **Credentials JSON** file can be configured instead of storing
91
+ it in an environment variable. Either on an individual client initialization:
90
92
 
91
93
  ```ruby
92
94
  require "<%= gem.entrypoint_require %>"
@@ -96,7 +98,7 @@ client = <%= service.create_client_call %> do |config|
96
98
  end
97
99
  ```
98
100
 
99
- Or configured globally for all clients:
101
+ Or globally for all clients:
100
102
 
101
103
  ```ruby
102
104
  require "<%= gem.entrypoint_require %>"
@@ -56,29 +56,29 @@ task :acceptance, :project, :keyfile do |t, args|
56
56
  <%- if service && !gem.generic_endpoint? -%>
57
57
  project = args[:project]
58
58
  project ||=
59
- ENV["<%= gem.env_prefix %>_TEST_PROJECT"] ||
59
+ ENV["<%= gem.cloud_env_prefix %>_TEST_PROJECT"] ||
60
60
  ENV["GCLOUD_TEST_PROJECT"]
61
61
  keyfile = args[:keyfile]
62
62
  keyfile ||=
63
- ENV["<%= gem.env_prefix %>_TEST_KEYFILE"] ||
63
+ ENV["<%= gem.cloud_env_prefix %>_TEST_KEYFILE"] ||
64
64
  ENV["GCLOUD_TEST_KEYFILE"]
65
65
  if keyfile
66
66
  keyfile = File.read keyfile
67
67
  else
68
68
  keyfile ||=
69
- ENV["<%= gem.env_prefix %>_TEST_KEYFILE_JSON"] ||
69
+ ENV["<%= gem.cloud_env_prefix %>_TEST_KEYFILE_JSON"] ||
70
70
  ENV["GCLOUD_TEST_KEYFILE_JSON"]
71
71
  end
72
72
  if project.nil? || keyfile.nil?
73
- fail "You must provide a project and keyfile. e.g. rake acceptance[test123, /path/to/keyfile.json] or <%= gem.env_prefix %>_TEST_PROJECT=test123 <%= gem.env_prefix %>_TEST_KEYFILE=/path/to/keyfile.json rake acceptance"
73
+ fail "You must provide a project and keyfile. e.g. rake acceptance[test123, /path/to/keyfile.json] or <%= gem.cloud_env_prefix %>_TEST_PROJECT=test123 <%= gem.cloud_env_prefix %>_TEST_KEYFILE=/path/to/keyfile.json rake acceptance"
74
74
  end
75
75
  require "<%= service.credentials_require %>"
76
76
  <%= service.credentials_name_full %>.env_vars.each do |path|
77
77
  ENV[path] = nil
78
78
  end
79
- ENV["<%= gem.env_prefix %>_PROJECT"] = project
80
- ENV["<%= gem.env_prefix %>_TEST_PROJECT"] = project
81
- ENV["<%= gem.env_prefix %>_KEYFILE_JSON"] = keyfile
79
+ ENV["<%= gem.cloud_env_prefix %>_PROJECT"] = project
80
+ ENV["<%= gem.cloud_env_prefix %>_TEST_PROJECT"] = project
81
+ ENV["<%= gem.cloud_env_prefix %>_KEYFILE_JSON"] = keyfile
82
82
 
83
83
  <%- end -%>
84
84
  Rake::Task["acceptance:run"].invoke
@@ -6,7 +6,7 @@
6
6
 
7
7
  <%= gem.homepage %>
8
8
 
9
- <%- if gem.wrapper_name -%>
9
+ <%- if gem.has_wrapper? -%>
10
10
  This gem is a _versioned_ client. It provides basic client classes for a
11
11
  specific version of the <%= gem.title %> API. Most users should consider using
12
12
  the main client gem,
@@ -36,7 +36,7 @@ In order to use this library, you first need to go through the following steps:
36
36
  <%- if gem.api_id -%>
37
37
  1. [Enable the API.](https://console.cloud.google.com/apis/library/<%= gem.api_id %>)
38
38
  <%- end -%>
39
- 1. {file:AUTHENTICATION.md Set up authentication.}
39
+ 1. [Set up authentication.](AUTHENTICATION.md)
40
40
 
41
41
  <%- end -%>
42
42
  ## Quick Start
@@ -44,12 +44,12 @@ In order to use this library, you first need to go through the following steps:
44
44
  <%- if gem.packages? -%>
45
45
  ```ruby
46
46
  require "<%= gem.entrypoint_require %>"
47
- <%- service = gem.first_non_common_service -%>
48
- <%- method = service&.methods.first -%>
47
+ <%- service = gem.quick_start_service -%>
48
+ <%- method = service&.quick_start_method -%>
49
49
  <%- if service && method -%>
50
50
 
51
51
  client = <%= service.create_client_call %>
52
- request = my_create_request
52
+ request = <%= method.request_type %>.new # (request fields as keyword arguments...)
53
53
  response = client.<%= method.name %> request
54
54
  <%- end -%>
55
55
  ```
@@ -17,5 +17,9 @@
17
17
  "product_documentation": "<%= gem.product_documentation_url %>",
18
18
  <%- end -%>
19
19
  "repo": "googleapis/google-cloud-ruby",
20
- "requires_billing": <%= !gem.free_tier? %>
20
+ "requires_billing": <%= !gem.free_tier? %>,
21
+ <%- gem.generator_args_for_metadata.each do |key, val| -%>
22
+ <%= key.inspect %>: <%= val.inspect %>,
23
+ <%- end -%>
24
+ "library_type": "GAPIC_AUTO"
21
25
  }
@@ -13,13 +13,17 @@ class <%= service.credentials_name %> < ::Google::Auth::Credentials
13
13
  ]
14
14
  <%- end -%>
15
15
  self.env_vars = [
16
+ <%- if service.gem.env_prefix -%>
16
17
  "<%= service.gem.env_prefix %>_CREDENTIALS",
17
18
  "<%= service.gem.env_prefix %>_KEYFILE",
19
+ <%- end -%>
18
20
  "GOOGLE_CLOUD_CREDENTIALS",
19
21
  "GOOGLE_CLOUD_KEYFILE",
20
22
  "GCLOUD_KEYFILE",
23
+ <%- if service.gem.env_prefix -%>
21
24
  "<%= service.gem.env_prefix %>_CREDENTIALS_JSON",
22
25
  "<%= service.gem.env_prefix %>_KEYFILE_JSON",
26
+ <%- end -%>
23
27
  "GOOGLE_CLOUD_CREDENTIALS_JSON",
24
28
  "GOOGLE_CLOUD_KEYFILE_JSON",
25
29
  "GCLOUD_KEYFILE_JSON"
@@ -0,0 +1,4 @@
1
+ <%- assert_locals method -%>
2
+ rescue ::Faraday::Error => e
3
+ gapic_error = ::Gapic::Rest::Error.wrap_faraday_error e
4
+ raise ::Google::Cloud::Error.from_error(gapic_error)
@@ -0,0 +1,2 @@
1
+ <%- assert_locals method -%>
2
+ # @raise [::Google::Cloud::Error] if the REST call is aborted.
@@ -56,29 +56,29 @@ desc "Run the <%= gem.name %> acceptance tests."
56
56
  task :acceptance, :project, :keyfile do |t, args|
57
57
  project = args[:project]
58
58
  project ||=
59
- ENV["<%= gem.env_prefix %>_TEST_PROJECT"] ||
59
+ ENV["<%= gem.cloud_env_prefix %>_TEST_PROJECT"] ||
60
60
  ENV["GCLOUD_TEST_PROJECT"]
61
61
  keyfile = args[:keyfile]
62
62
  keyfile ||=
63
- ENV["<%= gem.env_prefix %>_TEST_KEYFILE"] ||
63
+ ENV["<%= gem.cloud_env_prefix %>_TEST_KEYFILE"] ||
64
64
  ENV["GCLOUD_TEST_KEYFILE"]
65
65
  if keyfile
66
66
  keyfile = File.read keyfile
67
67
  else
68
68
  keyfile ||=
69
- ENV["<%= gem.env_prefix %>_TEST_KEYFILE_JSON"] ||
69
+ ENV["<%= gem.cloud_env_prefix %>_TEST_KEYFILE_JSON"] ||
70
70
  ENV["GCLOUD_TEST_KEYFILE_JSON"]
71
71
  end
72
72
  if project.nil? || keyfile.nil?
73
- fail "You must provide a project and keyfile. e.g. rake acceptance[test123, /path/to/keyfile.json] or <%= gem.env_prefix %>_TEST_PROJECT=test123 <%= gem.env_prefix %>_TEST_KEYFILE=/path/to/keyfile.json rake acceptance"
73
+ fail "You must provide a project and keyfile. e.g. rake acceptance[test123, /path/to/keyfile.json] or <%= gem.cloud_env_prefix %>_TEST_PROJECT=test123 <%= gem.cloud_env_prefix %>_TEST_KEYFILE=/path/to/keyfile.json rake acceptance"
74
74
  end
75
75
  require "<%= service.credentials_require %>"
76
76
  <%= service.credentials_name_full %>.env_vars.each do |path|
77
77
  ENV[path] = nil
78
78
  end
79
- ENV["<%= gem.env_prefix %>_PROJECT"] = project
80
- ENV["<%= gem.env_prefix %>_TEST_PROJECT"] = project
81
- ENV["<%= gem.env_prefix %>_KEYFILE_JSON"] = keyfile
79
+ ENV["<%= gem.cloud_env_prefix %>_PROJECT"] = project
80
+ ENV["<%= gem.cloud_env_prefix %>_TEST_PROJECT"] = project
81
+ ENV["<%= gem.cloud_env_prefix %>_KEYFILE_JSON"] = keyfile
82
82
 
83
83
  Rake::Task["acceptance:run"].invoke
84
84
  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.7.2
4
+ version: 0.9.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: 2021-03-06 00:00:00.000000000 Z
13
+ date: 2021-07-08 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.7.2
35
+ version: 0.9.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.7.2
42
+ version: 0.9.1
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: google-style
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -177,6 +177,8 @@ files:
177
177
  - templates/cloud/service/client/_self_configure.erb
178
178
  - templates/cloud/service/client/method/def/_rescue.erb
179
179
  - templates/cloud/service/client/method/docs/_error.erb
180
+ - templates/cloud/service/rest/client/method/def/_rescue.erb
181
+ - templates/cloud/service/rest/client/method/docs/_error.erb
180
182
  - templates/cloud/shared/_license.erb
181
183
  - templates/cloud/wrapper_gem/_main.erb
182
184
  - templates/cloud/wrapper_gem/client_test.erb
@@ -209,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
211
  - !ruby/object:Gem::Version
210
212
  version: '0'
211
213
  requirements: []
212
- rubygems_version: 3.2.11
214
+ rubygems_version: 3.1.6
213
215
  signing_key:
214
216
  specification_version: 4
215
217
  summary: An API Client Generator for Ruby in Ruby!