Class: Gapic::Presenters::PackagePresenter
Overview
A presenter for proto packages.
Instance Method Summary
collapse
#ensure_absolute_namespace, #fix_namespace, #ruby_namespace, #ruby_namespace_for_address
#fix_file_path, #ruby_file_path, #ruby_file_path_for_namespace
Constructor Details
#initialize(gem_presenter, api, package) ⇒ PackagePresenter
Returns a new instance of PackagePresenter.
30
31
32
33
34
|
# File 'lib/gapic/presenters/package_presenter.rb', line 30
def initialize gem_presenter, api, package
@gem_presenter = gem_presenter
@api = api
@package = package
end
|
Instance Method Details
#address ⇒ Object
74
75
76
|
# File 'lib/gapic/presenters/package_presenter.rb', line 74
def address
@package.split "."
end
|
#drift_manifest ⇒ Hash
113
114
115
116
117
118
119
120
121
122
|
# 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
|
#empty? ⇒ Boolean
90
91
92
|
# File 'lib/gapic/presenters/package_presenter.rb', line 90
def empty?
services.empty?
end
|
#gem ⇒ Object
36
37
38
|
# File 'lib/gapic/presenters/package_presenter.rb', line 36
def gem
@gem_presenter
end
|
#grpc_client_designation ⇒ String
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.
135
136
137
|
# File 'lib/gapic/presenters/package_presenter.rb', line 135
def grpc_client_designation
services.first&.grpc_client_designation || ""
end
|
#helpers_file_name ⇒ Object
98
99
100
|
# File 'lib/gapic/presenters/package_presenter.rb', line 98
def helpers_file_name
"_helpers.rb"
end
|
#helpers_file_path ⇒ Object
94
95
96
|
# File 'lib/gapic/presenters/package_presenter.rb', line 94
def helpers_file_path
"#{helpers_require}.rb"
end
|
#helpers_require ⇒ Object
102
103
104
|
# File 'lib/gapic/presenters/package_presenter.rb', line 102
def helpers_require
"#{package_require}/_helpers"
end
|
#module_name ⇒ Object
53
54
55
|
# File 'lib/gapic/presenters/package_presenter.rb', line 53
def module_name
namespace.split("::").last
end
|
#name ⇒ Object
40
41
42
|
# File 'lib/gapic/presenters/package_presenter.rb', line 40
def name
@package
end
|
#namespace ⇒ Object
44
45
46
47
|
# 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
|
#package_directory_name ⇒ Object
86
87
88
|
# File 'lib/gapic/presenters/package_presenter.rb', line 86
def package_directory_name
package_require.split("/").last
end
|
#package_file_path ⇒ Object
82
83
84
|
# File 'lib/gapic/presenters/package_presenter.rb', line 82
def package_file_path
"#{package_require}.rb"
end
|
#package_require ⇒ Object
78
79
80
|
# File 'lib/gapic/presenters/package_presenter.rb', line 78
def package_require
ruby_file_path @api, namespace
end
|
#parent_namespace ⇒ Object
49
50
51
|
# 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.
61
62
63
64
65
66
67
68
69
70
71
72
|
# 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
normal_services = services.select { |s| @api.delegate_service_for(s).nil? }
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
|