class Gapic::Presenters::PackagePresenter
A presenter for proto packages.
Public Class Methods
# File lib/gapic/presenters/package_presenter.rb, line 30 def initialize gem_presenter, api, package @gem_presenter = gem_presenter @api = api @package = package end
Public Instance Methods
# File lib/gapic/presenters/package_presenter.rb, line 74 def address @package.split "." end
Returns a hash with a drift_manifest
of this package describing correspondence between the proto description of the package with the generated code for the package. See github.com/googleapis/googleapis/blob/master/gapic/metadata/gapic_metadata.proto
@return [Hash]
# File lib/gapic/presenters/package_presenter.rb, line 113 def drift_manifest { schema: "1.0", comment: "This file maps proto services/RPCs to the corresponding library clients/methods", language: "ruby", protoPackage: name, libraryPackage: namespace, services: services.map { |s| [s.grpc_service_name, s.drift_manifest] }.to_h } end
# File lib/gapic/presenters/package_presenter.rb, line 90 def empty? services.empty? end
# File lib/gapic/presenters/package_presenter.rb, line 36 def gem @gem_presenter end
How comments in the generated libraries refer to the GRPC client if no REST code is generated, this should just be “client”, if REST code is generated, this should be disambiguated into the “GRPC client”
Since we are using first service for an indication of whether package generates REST code, it's OK to defer this to the first service as well. For packages with no services the value of this does not really matter as no client generation docs will be generated.
@return [String]
# File lib/gapic/presenters/package_presenter.rb, line 135 def grpc_client_designation services.first&.grpc_client_designation || "" end
# File lib/gapic/presenters/package_presenter.rb, line 98 def helpers_file_name "_helpers.rb" end
# File lib/gapic/presenters/package_presenter.rb, line 94 def helpers_file_path "#{helpers_require}.rb" end
# File lib/gapic/presenters/package_presenter.rb, line 102 def helpers_require "#{package_require}/_helpers" end
# File lib/gapic/presenters/package_presenter.rb, line 53 def module_name namespace.split("::").last end
# File lib/gapic/presenters/package_presenter.rb, line 40 def name @package end
# File lib/gapic/presenters/package_presenter.rb, line 44 def namespace return services.first&.namespace if services.first&.namespace ruby_namespace_for_address address end
# File lib/gapic/presenters/package_presenter.rb, line 86 def package_directory_name package_require.split("/").last end
# File lib/gapic/presenters/package_presenter.rb, line 82 def package_file_path "#{package_require}.rb" end
# File lib/gapic/presenters/package_presenter.rb, line 78 def package_require ruby_file_path @api, namespace end
# File lib/gapic/presenters/package_presenter.rb, line 49 def parent_namespace namespace.split("::")[0...-1].join("::") end
Services whose clients should be generated in this package namespace. @return [Enumerable<Gapic::Presenters::ServicePresenter>]
# File lib/gapic/presenters/package_presenter.rb, line 61 def services @services ||= begin files = @api.generate_files.select { |f| f.package == @package } services = files.map(&:services).flatten # Omit common services in this package. Common service clients do not # go into their own package. normal_services = services.select { |s| @api.delegate_service_for(s).nil? } # But include common services that delegate to normal services in this package. common_services = normal_services.flat_map { |s| @api.common_services_for s } (normal_services + common_services).map { |s| ServicePresenter.new @gem_presenter, @api, s } end end