Class: Gapic::Presenters::GemPresenter
Overview
Instance Method Summary
collapse
#ensure_absolute_namespace, #fix_namespace, #ruby_namespace, #ruby_namespace_for_address
#fix_file_path, #ruby_file_path, #ruby_file_path_for_namespace
Constructor Details
Returns a new instance of GemPresenter.
31
32
33
34
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 31
def initialize api
@api = api
@mixins_model = Gapic::Model::Mixins.new api.services.map(&:full_name), api.service_config
end
|
Instance Method Details
#address ⇒ Object
73
74
75
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 73
def address
name.split("-").map(&:camelize)
end
|
#api_id ⇒ Object
149
150
151
152
153
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 149
def api_id
raw_id = gem_config :api_id
return nil unless raw_id
raw_id.include?(".") ? raw_id : "#{raw_id}.googleapis.com"
end
|
#api_shortname ⇒ Object
155
156
157
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 155
def api_shortname
gem_config :api_shortname
end
|
#authors ⇒ Object
108
109
110
111
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 108
def authors
gem_config(:authors) ||
["Google LLC"]
end
|
#dependencies ⇒ Object
205
206
207
208
209
210
211
212
213
214
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 205
def dependencies
@dependencies ||= begin
deps = { "gapic-common" => [">= 0.7", "< 2.a"] }
deps["grpc-google-iam-v1"] = [">= 0.6.10", "< 2.a"] if iam_dependency?
= gem_config_dependencies
deps.merge! if
deps.merge! mixins_model.dependencies if mixins_model.mixins?
deps
end
end
|
#dependency_list ⇒ Object
216
217
218
219
220
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 216
def dependency_list
dependencies.to_a
.map { |name, requirements| [name, Array(requirements)] }
.sort_by { |name, _requirements| name }
end
|
#description ⇒ Object
118
119
120
121
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 118
def description
gem_config(:description) ||
"#{name} is the official client library for the #{title} API."
end
|
#email ⇒ Object
113
114
115
116
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 113
def email
gem_config(:email) ||
"googleapis-packages@google.com"
end
|
#entrypoint_require ⇒ Object
192
193
194
195
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 192
def entrypoint_require
return "" unless packages?
packages.first.package_require
end
|
#env_prefix ⇒ Object
133
134
135
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 133
def env_prefix
gem_config(:env_prefix)&.upcase
end
|
201
202
203
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 201
def
["README.md", "LICENSE.md", ".yardopts"]
end
|
#first_non_common_service ⇒ Object
60
61
62
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 60
def first_non_common_service
services.find { |service| service.common_service_delegate.nil? }
end
|
#first_package_drift_json ⇒ String
Returns a drift manifest of the first package in
a pretty JSON string form
239
240
241
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 239
def first_package_drift_json
JSON.pretty_generate first_package_drift_manifest
end
|
#first_package_drift_manifest ⇒ Hash
229
230
231
232
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 229
def first_package_drift_manifest
return {} unless packages?
packages.first.drift_manifest
end
|
#free_tier? ⇒ Boolean
166
167
168
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 166
def free_tier?
gem_config(:free_tier) || false
end
|
#generate_rest_clients? ⇒ Boolean
188
189
190
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 188
def generate_rest_clients?
@api.generate_rest_clients?
end
|
#generic_endpoint? ⇒ Boolean
181
182
183
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 181
def generic_endpoint?
gem_config(:generic_endpoint) || false
end
|
#homepage ⇒ Object
128
129
130
131
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 128
def homepage
gem_config(:homepage) ||
"https://github.com/googleapis/googleapis"
end
|
#iam_dependency? ⇒ Boolean
137
138
139
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 137
def iam_dependency?
@api.files.map(&:name).any? { |f| f.start_with? "google/iam/v1/" }
end
|
#issue_tracker_url ⇒ Object
159
160
161
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 159
def issue_tracker_url
gem_config :issue_tracker_url
end
|
#library_documentation_url ⇒ Object
141
142
143
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 141
def library_documentation_url
gem_config(:library_documentation_url) || "https://rubydoc.info/gems/#{name}"
end
|
#license_name ⇒ Object
197
198
199
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 197
def license_name
"MIT"
end
|
#mixins? ⇒ Boolean
Whether there are mixin services that should be referenced
in the services for this gem
272
273
274
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 272
def mixins?
@mixins_model.mixins?
end
|
The model for the mixin services
281
282
283
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 281
def mixins_model
@mixins_model
end
|
#name ⇒ Object
77
78
79
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 77
def name
gem_config :name
end
|
#namespace ⇒ Object
81
82
83
84
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 81
def namespace
gem_config(:namespace) ||
fix_namespace(@api, name.split("-").map(&:camelize).join("::"))
end
|
39
40
41
42
43
44
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 39
def packages
@packages ||= begin
packages = @api.generate_files.map(&:package).uniq.sort
packages.map { |p| PackagePresenter.new self, @api, p }.delete_if(&:empty?)
end
end
|
#packages? ⇒ Boolean
46
47
48
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 46
def packages?
!packages.empty?
end
|
#product_documentation_url ⇒ Object
145
146
147
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 145
def product_documentation_url
gem_config :product_documentation_url
end
|
#proto_files ⇒ Object
64
65
66
67
68
69
70
71
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 64
def proto_files
@proto_files ||= begin
files = @api.files
files = files.reject { |f| blacklist_protos.include? f.name }
files = files.reject { |f| f.messages.empty? && f.enums.empty? }
files.map { |f| FilePresenter.new @api, f }
end
end
|
The service to use for quick start samples. Normally this is simply the
#first_non_common_service, but it can be overridden via a gem config.
249
250
251
252
253
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 249
def quick_start_service
preferred_service = gem_config :quick_start_service
result = services.find { |svc| svc.name == preferred_service } if preferred_service
result || first_non_common_service
end
|
53
54
55
56
57
58
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 53
def services
@services ||= begin
files = @api.generate_files
files.map(&:services).flatten.map { |s| ServicePresenter.new self, @api, s }
end
end
|
#show_grpc_logging_docs? ⇒ Boolean
Whether the "Enabling (gRPC) Logging" section of the readme should
appear. This is true if there is a quick-start service displayed in the
readme, AND it uses gRPC.
262
263
264
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 262
def show_grpc_logging_docs?
packages? && quick_start_service.usable_service_presenter.is_a?(ServicePresenter)
end
|
#summary ⇒ Object
123
124
125
126
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 123
def summary
gem_config(:summary) ||
"API Client library for the #{title} API"
end
|
#title ⇒ Object
86
87
88
89
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 86
def title
gem_config(:title) ||
namespace.split("::").join(" ")
end
|
#version ⇒ Object
91
92
93
94
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 91
def version
gem_config(:version) ||
"0.0.1"
end
|
#version_file_path ⇒ Object
100
101
102
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 100
def version_file_path
"#{version_require}.rb"
end
|
#version_name_full ⇒ Object
104
105
106
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 104
def version_name_full
"#{namespace}::VERSION"
end
|
#version_require ⇒ Object
96
97
98
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 96
def version_require
ruby_file_path @api, version_name_full
end
|
#yard_strict? ⇒ Boolean
173
174
175
176
|
# File 'lib/gapic/presenters/gem_presenter.rb', line 173
def yard_strict?
gem_config(:yard_strict).nil? || gem_config(:yard_strict)
end
|