Class: Gapic::Presenters::CloudGemPresenter

Inherits:
GemPresenter
  • Object
show all
Defined in:
lib/gapic/presenters/cloud_gem_presenter.rb

Overview

A presenter subclass for cloud gems.

Direct Known Subclasses

WrapperGemPresenter

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

Instance Method Details

#cloud_env_prefixObject



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.

Returns:

  • (boolean)


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

#dependenciesObject



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_filesObject



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_descriptionString

Increments the original gemspec description for versioned gems, including a note that users should consider installing the wrapper gem instead.

Returns:

  • (String)


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_metadataObject

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

Returns:

  • (Boolean)


57
58
59
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 57

def has_wrapper?
  !wrapper_name.nil?
end

#library_documentation_urlString

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.

Returns:

  • (String)


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_nameObject



39
40
41
# File 'lib/gapic/presenters/cloud_gem_presenter.rb', line 39

def license_name
  "Apache-2.0"
end

#wrapper_nameString?

The name of the wrapper gem corresponding to this versioned gem

Returns:

  • (String, nil)


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