Class: Gapic::Presenters::GemPresenter

Inherits:
Object
  • Object
show all
Includes:
Helpers::FilepathHelper, Helpers::NamespaceHelper
Defined in:
lib/gapic/presenters/gem_presenter.rb

Overview

A presenter for gems.

Instance Method Summary collapse

Methods included from Helpers::NamespaceHelper

#fix_namespace, #ruby_namespace, #ruby_namespace_for_address

Methods included from Helpers::FilepathHelper

#fix_file_path, #ruby_file_path, #ruby_file_path_for_namespace

Constructor Details

#initialize(api) ⇒ GemPresenter

Returns a new instance of GemPresenter.



29
30
31
# File 'lib/gapic/presenters/gem_presenter.rb', line 29

def initialize api
  @api = api
end

Instance Method Details

#address ⇒ Object



60
61
62
# File 'lib/gapic/presenters/gem_presenter.rb', line 60

def address
  name.split("-").map(&:camelize)
end

#api_id ⇒ Object



136
137
138
# File 'lib/gapic/presenters/gem_presenter.rb', line 136

def api_id
  gem_config :api_id
end

#authors ⇒ Object



95
96
97
98
# File 'lib/gapic/presenters/gem_presenter.rb', line 95

def authors
  gem_config(:authors) ||
    ["Google LLC"]
end

#description ⇒ Object



105
106
107
108
# File 'lib/gapic/presenters/gem_presenter.rb', line 105

def description
  gem_config(:description) ||
    "#{name} is the official client library for the #{title} API."
end

#email ⇒ Object



100
101
102
103
# File 'lib/gapic/presenters/gem_presenter.rb', line 100

def email
  gem_config(:email) ||
    "[email protected]"
end

#entrypoint_require ⇒ Object



150
151
152
# File 'lib/gapic/presenters/gem_presenter.rb', line 150

def entrypoint_require
  packages.first.package_require
end

#env_prefix ⇒ Object



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

def env_prefix
  (gem_config(:env_prefix) || name.split("-").last).upcase
end

#free_tier? ⇒ Boolean

Returns:

  • (Boolean)


140
141
142
143
# File 'lib/gapic/presenters/gem_presenter.rb', line 140

def free_tier?
  # Default to false unless the config is explicitly set to "true"
  gem_config(:free_tier) == "true"
end

#homepage ⇒ Object



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

def homepage
  gem_config(:homepage) ||
    "https://github.com/googleapis/googleapis"
end

#iam_dependency? ⇒ Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/gapic/presenters/gem_presenter.rb', line 124

def iam_dependency?
  @api.files.map(&:name).any? { |f| f.start_with? "google/iam/v1/" }
end

#library_documentation_url ⇒ Object



128
129
130
# File 'lib/gapic/presenters/gem_presenter.rb', line 128

def library_documentation_url
  gem_config(:library_documentation_url) || "https://googleapis.dev/ruby/#{name}/latest"
end

#name ⇒ Object



64
65
66
# File 'lib/gapic/presenters/gem_presenter.rb', line 64

def name
  gem_config :name
end

#namespace ⇒ Object



68
69
70
71
# File 'lib/gapic/presenters/gem_presenter.rb', line 68

def namespace
  gem_config(:namespace) ||
    fix_namespace(@api, name.split("-").map(&:camelize).join("::"))
end

#packages ⇒ Object



33
34
35
36
37
38
# File 'lib/gapic/presenters/gem_presenter.rb', line 33

def packages
  @packages ||= begin
    packages = @api.generate_files.map(&:package).uniq.sort
    packages.map { |p| PackagePresenter.new @api, p }.delete_if(&:empty?)
  end
end

#packages? ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/gapic/presenters/gem_presenter.rb', line 40

def packages?
  !packages.empty?
end

#product_documentation_url ⇒ Object



132
133
134
# File 'lib/gapic/presenters/gem_presenter.rb', line 132

def product_documentation_url
  gem_config :product_documentation_url
end

#proto_files ⇒ Object



51
52
53
54
55
56
57
58
# File 'lib/gapic/presenters/gem_presenter.rb', line 51

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

#services ⇒ Object



44
45
46
47
48
49
# File 'lib/gapic/presenters/gem_presenter.rb', line 44

def services
  @services ||= begin
    files = @api.generate_files
    files.map(&:services).flatten.map { |s| ServicePresenter.new @api, s }
  end
end

#summary ⇒ Object



110
111
112
113
# File 'lib/gapic/presenters/gem_presenter.rb', line 110

def summary
  gem_config(:summary) ||
    "API Client library for the #{title} API"
end

#title ⇒ Object



73
74
75
76
# File 'lib/gapic/presenters/gem_presenter.rb', line 73

def title
  gem_config(:title) ||
    namespace.split("::").join(" ")
end

#version ⇒ Object



78
79
80
81
# File 'lib/gapic/presenters/gem_presenter.rb', line 78

def version
  gem_config(:version) ||
    "0.0.1"
end

#version_file_path ⇒ Object



87
88
89
# File 'lib/gapic/presenters/gem_presenter.rb', line 87

def version_file_path
  "#{version_require}.rb"
end

#version_name_full ⇒ Object



91
92
93
# File 'lib/gapic/presenters/gem_presenter.rb', line 91

def version_name_full
  "#{namespace}::VERSION"
end

#version_require ⇒ Object



83
84
85
# File 'lib/gapic/presenters/gem_presenter.rb', line 83

def version_require
  ruby_file_path @api, version_name_full
end

#yard_strict? ⇒ Boolean

Returns:

  • (Boolean)


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

def yard_strict?
  # Default to true unless the config is explicitly set to "false"
  gem_config(:yard_strict) != "false"
end