class Gapic::Presenters::GemPresenter
A presenter for gems.
Public Class Methods
# File lib/gapic/presenters/gem_presenter.rb, line 31 def initialize api @api = api end
Public Instance Methods
# File lib/gapic/presenters/gem_presenter.rb, line 69 def address name.split("-").map(&:camelize) end
# File lib/gapic/presenters/gem_presenter.rb, line 145 def api_id raw_id = gem_config :api_id return nil unless raw_id raw_id.include?(".") ? raw_id : "#{raw_id}.googleapis.com" end
# File lib/gapic/presenters/gem_presenter.rb, line 151 def api_shortname gem_config :api_shortname end
# File lib/gapic/presenters/gem_presenter.rb, line 193 def dependencies @dependencies ||= begin deps = { "gapic-common" => [">= 0.7", "< 2.a"] } deps["grpc-google-iam-v1"] = [">= 0.6.10", "< 2.a"] if iam_dependency? extra_deps = gem_config_dependencies deps.merge! extra_deps if extra_deps deps end end
# File lib/gapic/presenters/gem_presenter.rb, line 203 def dependency_list dependencies.to_a .map { |name, requirements| [name, Array(requirements)] } .sort_by { |name, _requirements| name } end
# File lib/gapic/presenters/gem_presenter.rb, line 114 def description gem_config(:description) || "#{name} is the official client library for the #{title} API." end
# File lib/gapic/presenters/gem_presenter.rb, line 109 def email gem_config(:email) || "googleapis-packages@google.com" end
# File lib/gapic/presenters/gem_presenter.rb, line 181 def entrypoint_require packages.first.package_require end
# File lib/gapic/presenters/gem_presenter.rb, line 129 def env_prefix gem_config(:env_prefix)&.upcase end
# File lib/gapic/presenters/gem_presenter.rb, line 189 def extra_files ["README.md", "LICENSE.md", ".yardopts"] end
# File lib/gapic/presenters/gem_presenter.rb, line 56 def first_non_common_service services.find { |service| service.common_service_delegate.nil? } end
Returns a drift manifest of the first package in a pretty JSON string form
@return [String]
# File lib/gapic/presenters/gem_presenter.rb, line 226 def first_package_drift_json JSON.pretty_generate first_package_drift_manifest end
Returns a hash with a drift_manifest of a first package in this gem (while the behaviour in case of multiple packages is clarified). See github.com/googleapis/googleapis/blob/master/gapic/metadata/gapic_metadata.proto
@return [Hash]
# File lib/gapic/presenters/gem_presenter.rb, line 216 def first_package_drift_manifest return {} unless packages? packages[0].drift_manifest end
@return [Boolean]
# File lib/gapic/presenters/gem_presenter.rb, line 162 def free_tier? gem_config(:free_tier) || false end
@return [Boolean]
# File lib/gapic/presenters/gem_presenter.rb, line 177 def generic_endpoint? gem_config(:generic_endpoint) || false end
# File lib/gapic/presenters/gem_presenter.rb, line 124 def homepage gem_config(:homepage) || "https://github.com/googleapis/googleapis" end
# File lib/gapic/presenters/gem_presenter.rb, line 133 def iam_dependency? @api.files.map(&:name).any? { |f| f.start_with? "google/iam/v1/" } end
# File lib/gapic/presenters/gem_presenter.rb, line 155 def issue_tracker_url gem_config :issue_tracker_url end
# File lib/gapic/presenters/gem_presenter.rb, line 137 def library_documentation_url gem_config(:library_documentation_url) || "https://googleapis.dev/ruby/#{name}/latest" end
# File lib/gapic/presenters/gem_presenter.rb, line 185 def license_name "MIT" end
# File lib/gapic/presenters/gem_presenter.rb, line 73 def name gem_config :name end
# File lib/gapic/presenters/gem_presenter.rb, line 77 def namespace gem_config(:namespace) || fix_namespace(@api, name.split("-").map(&:camelize).join("::")) end
@return [Enumerable<Gapic::Presenters::PackagePresenter>]
# File lib/gapic/presenters/gem_presenter.rb, line 38 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
# File lib/gapic/presenters/gem_presenter.rb, line 45 def packages? !packages.empty? end
# File lib/gapic/presenters/gem_presenter.rb, line 141 def product_documentation_url gem_config :product_documentation_url end
# File lib/gapic/presenters/gem_presenter.rb, line 60 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.
@return [Gapic::Presenters::ServicePresenter]
# File lib/gapic/presenters/gem_presenter.rb, line 236 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
# File lib/gapic/presenters/gem_presenter.rb, line 49 def services @services ||= begin files = @api.generate_files files.map(&:services).flatten.map { |s| ServicePresenter.new self, @api, s } end end
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.
@return [Boolean]
# File lib/gapic/presenters/gem_presenter.rb, line 249 def show_grpc_logging_docs? packages? && quick_start_service.usable_service_presenter.is_a?(ServicePresenter) end
# File lib/gapic/presenters/gem_presenter.rb, line 119 def summary gem_config(:summary) || "API Client library for the #{title} API" end
# File lib/gapic/presenters/gem_presenter.rb, line 82 def title gem_config(:title) || namespace.split("::").join(" ") end
# File lib/gapic/presenters/gem_presenter.rb, line 87 def version gem_config(:version) || "0.0.1" end
# File lib/gapic/presenters/gem_presenter.rb, line 96 def version_file_path "#{version_require}.rb" end
# File lib/gapic/presenters/gem_presenter.rb, line 100 def version_name_full "#{namespace}::VERSION" end
# File lib/gapic/presenters/gem_presenter.rb, line 92 def version_require ruby_file_path @api, version_name_full end
@return [Boolean]
# File lib/gapic/presenters/gem_presenter.rb, line 169 def yard_strict? # Default to true unless the config is explicitly set to "false" gem_config(:yard_strict).nil? || gem_config(:yard_strict) end
Private Instance Methods
# File lib/gapic/presenters/gem_presenter.rb, line 281 def blacklist_protos blacklist = gem_config :blacklist return default_blacklist_protos if blacklist.nil? return default_blacklist_protos if blacklist[:protos].nil? default_blacklist_protos[:protos] end
# File lib/gapic/presenters/gem_presenter.rb, line 290 def default_blacklist_protos ["google/api/http.proto", "google/protobuf/descriptor.proto"] end
# File lib/gapic/presenters/gem_presenter.rb, line 255 def gem_config key return unless @api.configuration[:gem] @api.configuration[:gem][key] end
There is a special case (from PoV of generator parameters) in gem dependencies where a dependency needs to be an array of strings e.g. “>= 1.6”, “< 2.a” Rather than creating a special generator param case for this I will special-case it here. '|' is the separator. The above would be represented as “>= 1.6|< 2.a”
@return [Hash<String, String>, Hash{String=>Array<String>}, nil]
# File lib/gapic/presenters/gem_presenter.rb, line 270 def gem_config_dependencies return unless gem_config :extra_dependencies gem_config(:extra_dependencies).map do |dep_name, dep_versions| if dep_versions.include? "|" [dep_name, dep_versions.split("|")] else [dep_name, dep_versions] end end.to_h end