gapic-generator-cloud 0.7.1 → 0.9.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: 723351c2732633c399750f01e0897efb8a175f3647d82187eb0b5db7f34d560b
4
- data.tar.gz: 4ceb12699aecad1432615e4ca7899d883c77f760636b931faca2cf83cd7c0896
3
+ metadata.gz: 417ab2b02d4393ee7aa32224d20f1b8d6bf9408bd9c3e54bb834e98de4e66f5d
4
+ data.tar.gz: b5059c5c751d1c0b2628879a8c91503fa2a468c75e5df5224d361657dca7956c
5
5
  SHA512:
6
- metadata.gz: 349ec8c227062a8bb4008e09ddf21d1cd237bfa14869d1a29cc068916970b34d8ccb52c69a2548666ff67863241f0191db0427db7b9d6670dbe022a5eb388617
7
- data.tar.gz: db5fcad0b368af97ad76e7325c919037dc0c5b1a2b9e3826f050810de1b3e71a7bea95fabae1a8308a6b8969740a578f25341c5d015aaea143cc5c07e4a647a2
6
+ metadata.gz: 7948811d0ae712c0020828aa4609db23891c7d99d1c5f84c6e5c956f2b432920d49c75c790824014e49318a026bf90a70e5ad5fe667cad89902e1b0387e3be29
7
+ data.tar.gz: 00a19859f19ae6688ec50aacd1bd0991fbfec3f2e59858c4513e73ed35d911db4a649ad36a9bf021599d20130f1b9f006e4d0a4c085f33586dcd84827c676c8a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Release History for gapic-generator-cloud
2
2
 
3
+ ### 0.9.0 / 2021-06-29
4
+
5
+ * Includes changes from gapic-generator 0.9.0
6
+
7
+ ### 0.8.0 / 2021-06-16
8
+
9
+ * Includes changes from gapic-generator 0.8.0
10
+
11
+ ### 0.7.5 / 2021-05-18
12
+
13
+ * Includes changes from gapic-generator 0.7.5
14
+
15
+ ### 0.7.4 / 2021-05-07
16
+
17
+ * Includes changes from gapic-generator 0.7.4
18
+
19
+ ### 0.7.3 / 2021-03-24
20
+
21
+ * Includes changes from gapic-generator 0.7.3
22
+ * Gapic metadata file generation is enabled by default for gapic-generator-cloud
23
+
24
+ ### 0.7.2 / 2021-03-05
25
+
26
+ * Disable metrics-related rubocop checks in generated wrapper libraries.
27
+
3
28
  ### 0.7.1 / 2021-02-27
4
29
 
5
30
  * Update generated readmes to reflect that Ruby 2.5 or later is now required.
@@ -18,7 +18,7 @@
18
18
  module Gapic
19
19
  module Generator
20
20
  module Cloud
21
- VERSION = "0.7.1"
21
+ VERSION = "0.9.0"
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,16 +69,18 @@ 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
  ```
@@ -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
@@ -13,10 +13,23 @@ Bundler/OrderedGems:
13
13
  Enabled: false
14
14
  Documentation:
15
15
  Enabled: false
16
-
16
+ Layout/LineLength:
17
+ Enabled: false
17
18
  Metrics/BlockLength:
18
19
  Exclude:
19
20
  - "samples/**/acceptance/*.rb"
21
+ Metrics/AbcSize:
22
+ Enabled: false
23
+ Metrics/ClassLength:
24
+ Enabled: false
25
+ Metrics/CyclomaticComplexity:
26
+ Enabled: false
27
+ Metrics/MethodLength:
28
+ Enabled: false
29
+ Metrics/ModuleLength:
30
+ Enabled: false
31
+ Metrics/PerceivedComplexity:
32
+ Enabled: false
20
33
 
21
34
  Naming/FileName:
22
35
  Exclude:
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.1
4
+ version: 0.9.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: 2021-02-27 00:00:00.000000000 Z
13
+ date: 2021-06-30 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.1
35
+ version: 0.9.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.7.1
42
+ version: 0.9.0
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!