Class: Gapic::Presenters::CloudGemPresenter
- Inherits:
-
GemPresenter
- Object
- GemPresenter
- Gapic::Presenters::CloudGemPresenter
- Defined in:
- lib/gapic/presenters/cloud_gem_presenter.rb
Overview
A presenter subclass for cloud gems.
Direct Known Subclasses
Constant Summary collapse
- PSEUDO_CLOUD_GEMS =
A list of gem name patterns for gems that don’t look like cloud but are
[ /^google-iam-credentials/, /^google-identity-access_context_manager/, /^grafeas/, /^stackdriver/ ].freeze
- NON_CLOUD_GEMS =
A list of gem name patterns for gems that look like cloud but aren’t
[].freeze
Instance Method Summary collapse
- #cloud_env_prefix ⇒ Object
-
#cloud_product? ⇒ boolean
Whether this gem is for a cloud platform product.
- #dependencies ⇒ Object
- #extra_files ⇒ Object
-
#gemspec_description ⇒ String
Increments the original gemspec description for versioned gems, including a note that users should consider installing the wrapper gem instead.
-
#generator_args_for_metadata ⇒ Object
Returns a hash of extra generator arguments to be rendered into the repo-metadata.json file.
-
#has_wrapper? ⇒ Boolean
Whether this gem has a wrapper.
-
#library_documentation_url ⇒ String
Overrides the reference doc URL to point to either the cloud-rad page or the rubydoc.info page depending on whether it is a cloud product.
- #license_name ⇒ Object
-
#wrapper_name ⇒ String?
The name of the wrapper gem corresponding to this versioned gem.
Instance Method Details
#cloud_env_prefix ⇒ Object
90 91 92 |
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 90 def cloud_env_prefix env_prefix || "GOOGLE_CLOUD" end |
#cloud_product? ⇒ boolean
Whether this gem is for a cloud platform product. This controls, for example, whether the reference documentation appears under the cloud.google.com website.
This first uses the ‘is_cloud_product` config. If that isn’t set, it tries the overrides in the ‘PSEUDO_CLOUD_GEMS` and `NON_CLOUD_GEMS` constants. Finally, it looks for whether any services populate the `Google::Cloud` namespace.
140 141 142 143 144 145 146 147 148 149 |
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 140 def cloud_product? configured = gem_config :is_cloud_product return configured unless configured.nil? return @api..organization == "CLOUD" if @api..organization return true if PSEUDO_CLOUD_GEMS.any? { |pattern| pattern === name } return false if NON_CLOUD_GEMS.any? { |pattern| pattern === name } services.any? do |service| service.namespace =~ /^(::)?Google::Cloud::/ end end |
#dependencies ⇒ Object
48 49 50 51 52 |
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 48 def dependencies deps = super deps["google-cloud-errors"] = "~> 1.0" deps end |
#extra_files ⇒ Object
43 44 45 46 |
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 43 def extra_files return ["README.md", "LICENSE.md", ".yardopts"] if generic_endpoint? ["README.md", "LICENSE.md", "AUTHENTICATION.md", ".yardopts"] end |
#gemspec_description ⇒ String
Increments the original gemspec description for versioned gems, including a note that users should consider installing the wrapper gem instead.
80 81 82 83 84 85 86 87 88 |
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 80 def gemspec_description desc = super if has_wrapper? desc += " Note that #{name} is a version-specific client library. " \ "For most uses, we recommend installing the main client library " \ "#{wrapper_name} instead. See the readme for more details." end desc end |
#generator_args_for_metadata ⇒ Object
Returns a hash of extra generator arguments to be rendered into the repo-metadata.json file.
98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 98 def result = {} result["ruby-cloud-description"] = gemspec_description result["ruby-cloud-env-prefix"] = env_prefix if env_prefix result["ruby-cloud-product-url"] = product_documentation_url if product_documentation_url path_overrides = @api.overrides_of(:file_path).map { |k, v| "#{k}=#{v}" }.join ";" result["ruby-cloud-path-override"] = path_overrides unless path_overrides.empty? namespace_overrides = @api.overrides_of(:namespace).map { |k, v| "#{k}=#{v}" }.join ";" result["ruby-cloud-namespace-override"] = namespace_overrides unless namespace_overrides.empty? service_overrides = @api.overrides_of(:service).map { |k, v| "#{k}=#{v}" }.join ";" result["ruby-cloud-service-override"] = service_overrides unless service_overrides.empty? result end |
#has_wrapper? ⇒ Boolean
Whether this gem has a wrapper
57 58 59 |
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 57 def has_wrapper? !wrapper_name.nil? end |
#library_documentation_url ⇒ String
Overrides the reference doc URL to point to either the cloud-rad page or the rubydoc.info page depending on whether it is a cloud product.
118 119 120 121 122 123 124 125 126 |
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 118 def library_documentation_url gem_config(:library_documentation_url) || begin if cloud_product? "https://cloud.google.com/ruby/docs/reference/#{name}/latest" else "https://rubydoc.info/gems/#{name}" end end end |
#license_name ⇒ Object
39 40 41 |
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 39 def license_name "Apache-2.0" end |
#wrapper_name ⇒ String?
The name of the wrapper gem corresponding to this versioned gem
65 66 67 68 69 70 71 72 |
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 65 def wrapper_name return @api.wrapper_gem_name_override if @api.wrapper_gem_name_override? minfo = /^(.+)-v\d\w*$/.match name return nil unless minfo minfo[1] end |