Class: Gapic::Presenters::WrapperGemPresenter

Inherits:
CloudGemPresenter show all
Defined in:
lib/gapic/presenters/wrapper_gem_presenter.rb

Overview

A presenter for wrapper gems.

Constant Summary

Constants inherited from CloudGemPresenter

CloudGemPresenter::NON_CLOUD_GEMS, CloudGemPresenter::PSEUDO_CLOUD_GEMS

Instance Method Summary collapse

Methods inherited from CloudGemPresenter

#cloud_env_prefix, #cloud_product?, #gemspec_description, #generator_args_for_metadata, #has_wrapper?, #library_documentation_url, #license_name, #wrapper_name

Instance Method Details

#default_versionObject



116
117
118
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 116

def default_version
  version_dependencies.first&.first
end

#default_versioned_gemObject



120
121
122
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 120

def default_versioned_gem
  versioned_gems.first
end

#dependenciesObject



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 124

def dependencies
  @dependencies ||= begin
    deps = { "google-cloud-core" => "~> 1.6" }
    version_dependencies.each do |version, requirement|
      # For pre-release dependencies on versioned clients, support both
      # 0.x and 1.x versions to ease the transition to 1.0 (GA) releases
      # for those dependencies. (Note the 0.x->1.0 transition is
      # generally not breaking.)
      deps["#{name}-#{version}"] =
        if requirement.start_with? "0."
          [">= #{requirement}", "< 2.a"]
        else
          "~> #{requirement}"
        end
    end
    extra_deps = gem_config_dependencies
    deps.merge! extra_deps if extra_deps
    deps
  end
end


151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 151

def docs_link version: nil, class_name: nil, text: nil, gem_name: nil
  gem_name ||= version ? "#{name}-#{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_requireObject



27
28
29
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 27

def entrypoint_require
  namespace_require
end

#extra_filesObject



97
98
99
100
101
102
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 97

def extra_files
  files = ["README.md", "LICENSE.md", ".yardopts"]
  files.insert 1, "AUTHENTICATION.md" unless generic_endpoint?
  files.append "MIGRATING.md" if migration?
  files
end

#factory_method_suffixObject



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

#google_cloud_short_nameObject



145
146
147
148
149
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 145

def google_cloud_short_name
  m = /^google-cloud-(.*)$/.match name
  return nil unless m
  m[1].tr "-", "_"
end

#helpers_requireObject



49
50
51
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 49

def helpers_require
  "#{namespace_require}/helpers"
end

#main_directory_nameObject



45
46
47
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 45

def main_directory_name
  namespace_require.split("/").last
end

#migration?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 93

def migration?
  migration_version ? true : false
end

#migration_versionObject



65
66
67
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 65

def migration_version
  gem_config :migration_version
end

#namespace_file_pathObject



53
54
55
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 53

def namespace_file_path
  "#{namespace_require}.rb"
end

#namespace_requireObject



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



170
171
172
173
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 170

def namespaced_class name, version: nil
  base = version ? "#{namespace}::#{version.capitalize}" : namespace
  "#{base}::#{name}"
end

#needs_default_config_block?Boolean

Returns:

  • (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

Returns:

  • (Boolean)


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

def needs_entrypoint?
  name != namespace_require
end

#pre_migration_versionObject

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_descriptionArray<String>

Generates a description text for README files, accounting for markdown rendering, properly escaping variables and disabling xrefs in the wrapper.

Returns:

  • (Array<String>)

    The description text as an array of lines.



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

#servicesObject



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_dependenciesObject



108
109
110
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 108

def version_dependencies
  gem_config(:version_dependencies).to_s.split(";").map { |str| str.split ":" }
end

#versioned_gemsObject



112
113
114
# File 'lib/gapic/presenters/wrapper_gem_presenter.rb', line 112

def versioned_gems
  version_dependencies.map { |version, _requirement| "#{name}-#{version}" }.sort
end