Class: Gapic::Presenters::WrapperGemPresenter
Overview
A presenter for wrapper gems.
Constant Summary
CloudGemPresenter::NON_CLOUD_GEMS, CloudGemPresenter::PSEUDO_CLOUD_GEMS
Instance Method Summary
collapse
#cloud_env_prefix, #cloud_product?, #gemspec_description, #generator_args_for_metadata, #has_wrapper?, #library_documentation_url, #license_name, #wrapper_name
Instance Method Details
#default_version ⇒ Object
157
158
159
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 157
def default_version
version_dependencies.first&.first
end
|
#default_versioned_gem ⇒ Object
161
162
163
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 161
def default_versioned_gem
versioned_gems.first
end
|
#dependencies ⇒ Object
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 165
def dependencies
@dependencies ||= begin
deps = { "google-cloud-core" => "~> 1.6" }
version_dependencies.each do |version, requirement|
deps["#{renamed_from}-#{version}"] =
if requirement.start_with? "0."
[">= #{requirement}", "< 2.a"]
else
"~> #{requirement}"
end
end
= gem_config_dependencies
deps.merge! if
deps
end
end
|
#docs_link(version: nil, class_name: nil, text: nil, gem_name: nil) ⇒ Object
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 192
def docs_link version: nil, class_name: nil, text: nil, gem_name: nil
gem_name ||= version ? "#{renamed_from}-#{version}" : name
base_url =
if cloud_product?
"https://cloud.google.com/ruby/docs/reference/#{gem_name}/latest"
else
"https://rubydoc.info/gems/#{gem_name}"
end
if class_name
separator = cloud_product? ? "-" : "/"
path = namespace.gsub "::", separator
path = "#{path}#{separator}#{version.capitalize}" if version
class_path = class_name.gsub "::", separator
text ||= namespaced_class class_name, version: version
return "[#{text}](#{base_url}/#{path}#{separator}#{class_path})"
end
"[#{text || name}](#{base_url})"
end
|
#entrypoint_require ⇒ Object
27
28
29
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 27
def entrypoint_require
namespace_require
end
|
97
98
99
100
101
102
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 97
def
files = ["README.md", "LICENSE.md", ".yardopts"]
files.insert 1, "AUTHENTICATION.md" unless generic_endpoint?
files.append "MIGRATING.md" if migration?
files
end
|
#factory_method_suffix ⇒ Object
104
105
106
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 104
def factory_method_suffix
gem_config(:factory_method_suffix).to_s
end
|
#gem_namespace ⇒ Object
137
138
139
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 137
def gem_namespace
fix_namespace(@api, name.split("-").map(&:camelize).join("::"))
end
|
#google_cloud_short_name ⇒ Object
186
187
188
189
190
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 186
def google_cloud_short_name
m = /^google-cloud-(.*)$/.match renamed_from
return nil unless m
m[1].tr "-", "_"
end
|
#helpers_require ⇒ Object
49
50
51
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 49
def helpers_require
"#{namespace_require}/helpers"
end
|
#main_directory_name ⇒ Object
45
46
47
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 45
def main_directory_name
namespace_require.split("/").last
end
|
#migration? ⇒ Boolean
93
94
95
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 93
def migration?
migration_version ? true : false
end
|
#migration_version ⇒ Object
65
66
67
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 65
def migration_version
gem_config :migration_version
end
|
#namespace ⇒ Object
132
133
134
135
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 132
def namespace
gem_config(:namespace) ||
fix_namespace(@api, renamed_from.split("-").map(&:camelize).join("::"))
end
|
#namespace_file_path ⇒ Object
53
54
55
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 53
def namespace_file_path
"#{namespace_require}.rb"
end
|
#namespace_require ⇒ Object
41
42
43
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 41
def namespace_require
ruby_file_path @api, namespace
end
|
#namespaced_class(name, version: nil) ⇒ Object
211
212
213
214
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 211
def namespaced_class name, version: nil
base = version ? "#{namespace}::#{version.capitalize}" : namespace
"#{base}::#{name}"
end
|
#needs_default_config_block? ⇒ Boolean
61
62
63
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 61
def needs_default_config_block?
needs_entrypoint? && !google_cloud_short_name.nil?
end
|
#needs_entrypoint? ⇒ Boolean
57
58
59
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 57
def needs_entrypoint?
name != namespace_require
end
|
#pre_migration_version ⇒ Object
A description of the versions prior to the migration version.
Could be "a.x" if the migration version is 1.0 or later, otherwise
falls back to "pre-a.b".
84
85
86
87
88
89
90
91
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 84
def pre_migration_version
match = /^(\d)+\.0/.match migration_version.to_s
if match
major = match[1].to_i
return "#{major - 1}.x" if major.positive?
end
"pre-#{migration_version}"
end
|
#readme_description ⇒ Array<String>
Generates a description text for README files, accounting for markdown
rendering, properly escaping variables and disabling xrefs in the wrapper.
75
76
77
78
79
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 75
def readme_description
has_markdown = description.strip.start_with? "#"
desc = has_markdown ? description.split("\n") : [description.gsub(/\s+/, " ").strip]
Gapic::FormattingUtils.format_doc_lines @api, desc, disable_xrefs: true
end
|
#renamed_from ⇒ String
The canonical gem name prior to renaming.
In some cases, a wrapper gem cannot be published under its canonical
name because a conflicting gem already exists on RubyGems.org. For example:
- "google-cloud-run" was renamed to "google-cloud-run-client" because RubyGems
already had an existing gem named "google_cloud_run".
- "google-iam" was renamed to "google-iam-client" because RubyGems already had
an unrelated gem named "google-iam".
Even though the wrapper gem itself is renamed with a "-client" suffix, it
still wraps versioned client gems named after the canonical name (e.g.
"google-cloud-run-v2", "google-iam-v2") and defines classes in the canonical
namespace (e.g. "Google::Cloud::Run", "Google::Iam").
124
125
126
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 124
def renamed_from
gem_config(:renamed_from) || name
end
|
#renamed_gem? ⇒ Boolean
128
129
130
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 128
def renamed_gem?
renamed_from != name
end
|
#services ⇒ Object
31
32
33
34
35
36
37
38
39
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 31
def services
@services ||= begin
@api.generate_files
.map(&:services)
.flatten
.map { |s| WrapperServicePresenter.new self, @api, s }
.find_all { |s| !s.is_hosted_mixin? }
end
end
|
#version_dependencies ⇒ Object
149
150
151
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 149
def version_dependencies
gem_config(:version_dependencies).to_s.split(";").map { |str| str.split ":" }
end
|
#version_name_full ⇒ Object
141
142
143
144
145
146
147
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 141
def version_name_full
if renamed_gem?
"#{gem_namespace}::VERSION"
else
"#{namespace}::VERSION"
end
end
|
#versioned_gems ⇒ Object
153
154
155
|
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 153
def versioned_gems
version_dependencies.map { |version, _requirement| "#{renamed_from}-#{version}" }.sort
end
|