gapic-generator 0.10.1 → 0.45.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +333 -0
- data/CONTRIBUTING.md +1 -1
- data/README.md +71 -37
- data/bin/protoc-gen-ruby_gapic +2 -2
- data/lib/gapic/file_formatter.rb +23 -19
- data/lib/gapic/formatting_utils.rb +22 -9
- data/lib/gapic/gem_builder.rb +15 -17
- data/lib/gapic/generator/version.rb +1 -1
- data/lib/gapic/generators/base_generator.rb +6 -4
- data/lib/gapic/generators/default_generator.rb +70 -32
- data/lib/gapic/generators/default_generator_parameters.rb +11 -3
- data/lib/gapic/grpc_service_config/{service_config.rb → config.rb} +2 -2
- data/lib/gapic/grpc_service_config/parser.rb +10 -10
- data/lib/gapic/model/api_metadata.rb +173 -0
- data/lib/gapic/model/method/http_annotation.rb +221 -0
- data/lib/gapic/model/method/lro.rb +163 -0
- data/lib/gapic/model/method/routing.rb +248 -0
- data/lib/gapic/model/mixins.rb +247 -0
- data/lib/gapic/model/model_error.rb +26 -0
- data/lib/gapic/model/service/nonstandard_lro_provider.rb +292 -0
- data/lib/gapic/model.rb +22 -0
- data/lib/gapic/package_snippets.rb +159 -0
- data/lib/gapic/path_pattern/parser.rb +11 -2
- data/lib/gapic/path_pattern/pattern.rb +64 -1
- data/lib/gapic/path_pattern/segment.rb +108 -13
- data/lib/gapic/presenters/enum_presenter.rb +14 -0
- data/lib/gapic/presenters/enum_value_presenter.rb +4 -1
- data/lib/gapic/presenters/field_presenter.rb +78 -21
- data/lib/gapic/presenters/gem_presenter.rb +140 -34
- data/lib/gapic/presenters/{service_config_presenter.rb → grpc_service_config_presenter.rb} +1 -1
- data/lib/gapic/presenters/message_presenter.rb +15 -0
- data/lib/gapic/presenters/method/http_binding_presenter.rb +128 -0
- data/lib/gapic/presenters/method/rest_pagination_info.rb +25 -16
- data/lib/gapic/presenters/method_presenter.rb +149 -35
- data/lib/gapic/presenters/method_rest_presenter.rb +79 -168
- data/lib/gapic/presenters/package_presenter.rb +63 -18
- data/lib/gapic/presenters/resource_presenter.rb +9 -3
- data/lib/gapic/presenters/service/lro_client_presenter.rb +90 -0
- data/lib/gapic/presenters/service/mixin_client_presenter.rb +89 -0
- data/lib/gapic/presenters/service/sub_client_presenter.rb +84 -0
- data/lib/gapic/presenters/service_presenter.rb +361 -27
- data/lib/gapic/presenters/service_rest_presenter.rb +247 -13
- data/lib/gapic/presenters/snippet/client_call_presenter.rb +82 -0
- data/lib/gapic/presenters/snippet/client_initialization_presenter.rb +87 -0
- data/lib/gapic/presenters/snippet/declaration_presenter.rb +91 -0
- data/lib/gapic/presenters/snippet/expression_presenter.rb +135 -0
- data/lib/gapic/presenters/snippet/iteration_presenter.rb +118 -0
- data/lib/gapic/presenters/snippet/parameter_presenter.rb +67 -0
- data/lib/gapic/presenters/snippet/request_initialization_presenters.rb +202 -0
- data/lib/gapic/presenters/snippet/response_handling_presenters.rb +329 -0
- data/lib/gapic/presenters/snippet/statement_presenter.rb +134 -0
- data/lib/gapic/presenters/snippet/type_presenter.rb +98 -0
- data/lib/gapic/presenters/snippet_presenter.rb +199 -9
- data/lib/gapic/presenters.rb +5 -1
- data/lib/gapic/runner.rb +1 -1
- data/lib/gapic/schema/api.rb +105 -5
- data/lib/gapic/schema/loader.rb +69 -21
- data/lib/gapic/schema/parameter_schema.rb +8 -8
- data/lib/gapic/schema/proto_tools.rb +193 -0
- data/lib/gapic/schema/request_param_parser.rb +5 -7
- data/lib/gapic/schema/service_config_parser.rb +152 -0
- data/lib/gapic/schema/wrappers.rb +309 -25
- data/lib/gapic/uri_template/parser.rb +15 -7
- data/lib/google/cloud/tools/snippetgen/configlanguage/v1/snippet_config_language_pb.rb +104 -0
- data/lib/google/cloud/tools/snippetgen/snippetindex/v1/snippet_index_pb.rb +58 -0
- data/lib/google/protobuf/compiler/plugin_pb.rb +47 -0
- data/templates/default/binding_override.text.erb +6 -0
- data/templates/default/gem/gemfile.text.erb +12 -0
- data/templates/default/gem/{gemspec.erb → gemspec.text.erb} +3 -11
- data/templates/default/gem/{readme.erb → readme.text.erb} +10 -6
- data/templates/default/gem/{rubocop.erb → rubocop.text.erb} +3 -0
- data/templates/default/gem/{test_helper.erb → test_helper.text.erb} +4 -2
- data/templates/default/gem/toys.text.erb +12 -0
- data/templates/default/gem/{yardopts.erb → yardopts.text.erb} +1 -1
- data/templates/default/helpers/default_helper.rb +33 -1
- data/templates/default/lib/_binding_override.text.erb +49 -0
- data/templates/default/lib/{_package.erb → _package.text.erb} +7 -6
- data/templates/default/lib/_package_rest.text.erb +24 -0
- data/templates/default/lib/{_service.erb → _service.text.erb} +14 -20
- data/templates/default/lib/package/_self_configure.text.erb +16 -0
- data/templates/default/lib/package/_self_configure_defaults.text.erb +13 -0
- data/templates/default/lib/package/self_configure/_binding_default.text.erb +15 -0
- data/templates/default/lib/rest/_rest.text.erb +46 -0
- data/templates/default/package_rest.text.erb +6 -0
- data/templates/default/proto_docs/_deprecated.text.erb +9 -0
- data/templates/default/proto_docs/{_enum.erb → _enum.text.erb} +1 -0
- data/templates/default/proto_docs/{_message.erb → _message.text.erb} +2 -0
- data/templates/default/service/client/{_client.erb → _client.text.erb} +77 -17
- data/templates/default/service/client/{_config.erb → _config.text.erb} +39 -8
- data/templates/default/service/client/_nonstandard_lro.text.erb +57 -0
- data/templates/default/service/client/{_operations.erb → _operations.text.erb} +24 -3
- data/templates/default/service/client/{_self_configure_defaults.erb → _self_configure_defaults.text.erb} +2 -2
- data/templates/default/service/client/method/{_def.erb → _def.text.erb} +2 -2
- data/templates/default/service/client/method/def/{_options_defaults.erb → _options_defaults.text.erb} +3 -9
- data/templates/default/service/client/method/def/_request_normal.text.erb +18 -0
- data/templates/default/service/client/method/def/_request_streaming.text.erb +23 -0
- data/templates/default/service/client/method/def/_response.text.erb +10 -0
- data/templates/default/service/client/method/def/_response_nonstandard_lro.text.erb +23 -0
- data/templates/default/service/client/method/def/_response_normal.text.erb +4 -0
- data/templates/default/service/client/method/def/{_response_normal.erb → _response_normal_lro.text.erb} +1 -3
- data/templates/default/service/client/method/def/{_response_paged.erb → _response_paged.text.erb} +1 -1
- data/templates/default/service/client/method/def/_routing_params.text.erb +36 -0
- data/templates/default/service/client/method/docs/{_request_normal.erb → _request_normal.text.erb} +1 -1
- data/templates/default/service/client/method/docs/_snippets.text.erb +6 -0
- data/templates/default/service/client/resource/_def.text.erb +7 -0
- data/templates/default/service/nonstandard_lro.text.erb +6 -0
- data/templates/default/service/rest/client/_client.text.erb +202 -0
- data/templates/default/service/rest/client/_config.text.erb +178 -0
- data/templates/default/service/rest/client/_operations.text.erb +124 -0
- data/templates/default/service/rest/client/method/{_def.erb → _def.text.erb} +7 -1
- data/templates/default/service/rest/client/method/def/{_options_defaults.erb → _options_defaults.text.erb} +8 -3
- data/templates/default/service/rest/client/method/def/_response.text.erb +12 -0
- data/templates/default/service/rest/client/method/def/_response_nonstandard_lro.text.erb +24 -0
- data/templates/default/service/rest/client/method/def/_response_normal.text.erb +5 -0
- data/templates/default/service/rest/client/method/def/_response_normal_lro.text.erb +7 -0
- data/templates/default/service/rest/client/method/def/_response_paged.text.erb +7 -0
- data/templates/default/service/rest/client/method/def/_response_server_streaming.text.erb +11 -0
- data/templates/default/service/rest/client/method/docs/{_request.erb → _request.text.erb} +1 -3
- data/templates/default/service/rest/client/method/docs/_result.text.erb +10 -0
- data/templates/default/service/rest/client/method/docs/_snippets.text.erb +6 -0
- data/templates/default/service/rest/nonstandard_lro.text.erb +6 -0
- data/templates/default/service/rest/operations.text.erb +6 -0
- data/templates/default/service/rest/service_stub/_service_stub.text.erb +63 -0
- data/templates/default/service/rest/service_stub/grpc_transcoding_method/_def.text.erb +37 -0
- data/templates/default/service/rest/service_stub/method/_def.text.erb +35 -0
- data/templates/default/service/rest/service_stub/method/def/_response.text.erb +37 -0
- data/templates/default/service/rest/test/{client.erb → client.text.erb} +3 -3
- data/templates/default/service/rest/test/method/_assert_response.text.erb +2 -0
- data/templates/default/service/rest/test/method/{_configure.erb → _configure.text.erb} +3 -2
- data/templates/default/service/rest/test/method/_normal.text.erb +60 -0
- data/templates/default/service/rest/test/method/_server.text.erb +60 -0
- data/templates/default/service/rest/test/method/{_setup.erb → _setup.text.erb} +26 -10
- data/templates/default/service/test/{_resource.erb → _resource.text.erb} +1 -1
- data/templates/default/service/test/{client.erb → client.text.erb} +3 -2
- data/templates/default/service/test/client_paths.text.erb +33 -0
- data/templates/default/service/test/method/{_assert_response.erb → _assert_response.text.erb} +3 -0
- data/templates/default/service/test/method/{_bidi.erb → _bidi.text.erb} +1 -1
- data/templates/default/service/test/method/{_client.erb → _client.text.erb} +1 -1
- data/templates/default/service/test/method/{_configure.erb → _configure.text.erb} +2 -1
- data/templates/default/service/test/method/{_normal.erb → _normal.text.erb} +1 -1
- data/templates/default/service/test/method/{_server.erb → _server.text.erb} +1 -1
- data/templates/default/service/test/method/{_setup.erb → _setup.text.erb} +19 -2
- data/templates/default/snippets/{gemfile.erb → gemfile.text.erb} +2 -2
- data/templates/default/snippets/snippet/_body.text.erb +24 -0
- data/templates/default/snippets/snippet/_inline.text.erb +11 -0
- data/templates/default/snippets/snippet/_standalone.text.erb +25 -0
- data/templates/default/snippets/{standalone.erb → standalone.text.erb} +1 -1
- metadata +209 -230
- data/lib/google/api/annotations.pb.rb +0 -39
- data/lib/google/api/client.pb.rb +0 -43
- data/lib/google/api/field_behavior.pb.rb +0 -51
- data/lib/google/api/http.pb.rb +0 -60
- data/lib/google/api/resource.pb.rb +0 -80
- data/lib/google/longrunning/operations.pb.rb +0 -115
- data/lib/google/protobuf/any.pb.rb +0 -40
- data/lib/google/protobuf/compiler/plugin.pb.rb +0 -79
- data/lib/google/protobuf/descriptor.pb.rb +0 -360
- data/lib/google/protobuf/empty.pb.rb +0 -36
- data/lib/google/rpc/status.pb.rb +0 -46
- data/templates/default/gem/gemfile.erb +0 -4
- data/templates/default/lib/rest/_rest.erb +0 -9
- data/templates/default/service/client/method/def/_request_normal.erb +0 -4
- data/templates/default/service/client/method/def/_request_streaming.erb +0 -9
- data/templates/default/service/client/method/def/_response.erb +0 -6
- data/templates/default/service/client/method/docs/_deprecated.erb +0 -5
- data/templates/default/service/client/method/docs/_snippets.erb +0 -6
- data/templates/default/service/client/resource/_def.erb +0 -6
- data/templates/default/service/rest/client/_client.erb +0 -106
- data/templates/default/service/rest/client/_config.erb +0 -122
- data/templates/default/service/rest/client/method/def/_response.erb +0 -8
- data/templates/default/service/rest/client/method/def/_response_lro.erb +0 -7
- data/templates/default/service/rest/client/method/def/_response_normal.erb +0 -6
- data/templates/default/service/rest/client/method/def/_response_paged.erb +0 -7
- data/templates/default/service/rest/client/method/docs/_result.erb +0 -6
- data/templates/default/service/rest/service_stub/_service_stub.erb +0 -25
- data/templates/default/service/rest/service_stub/grpc_transcoding_method/_def.erb +0 -24
- data/templates/default/service/rest/service_stub/method/_def.erb +0 -20
- data/templates/default/service/rest/service_stub/method/def/_response.erb +0 -17
- data/templates/default/service/rest/test/method/_assert_response.erb +0 -2
- data/templates/default/service/rest/test/method/_normal.erb +0 -71
- data/templates/default/service/test/client_paths.erb +0 -15
- data/templates/default/snippets/snippet/_structure.erb +0 -71
- /data/gem_templates/{binary.erb → binary.text.erb} +0 -0
- /data/gem_templates/{dockerfile.erb → dockerfile.text.erb} +0 -0
- /data/gem_templates/{entrypoint.erb → entrypoint.text.erb} +0 -0
- /data/gem_templates/{gapic_sh.erb → gapic_sh.text.erb} +0 -0
- /data/gem_templates/{gemfile.erb → gemfile.text.erb} +0 -0
- /data/gem_templates/{gemspec.erb → gemspec.text.erb} +0 -0
- /data/gem_templates/{generator.erb → generator.text.erb} +0 -0
- /data/gem_templates/{gitignore.erb → gitignore.text.erb} +0 -0
- /data/gem_templates/{rakefile.erb → rakefile.text.erb} +0 -0
- /data/gem_templates/{readme.erb → readme.text.erb} +0 -0
- /data/gem_templates/{rubocop.erb → rubocop.text.erb} +0 -0
- /data/gem_templates/shared/{_header.erb → _header.text.erb} +0 -0
- /data/gem_templates/shared/{_license.erb → _license.text.erb} +0 -0
- /data/gem_templates/shared/{_warning.erb → _warning.text.erb} +0 -0
- /data/gem_templates/{test_generator.erb → test_generator.text.erb} +0 -0
- /data/gem_templates/{test_helper.erb → test_helper.text.erb} +0 -0
- /data/gem_templates/{version.erb → version.text.erb} +0 -0
- /data/templates/default/gem/{_version.erb → _version.text.erb} +0 -0
- /data/templates/default/gem/{changelog.erb → changelog.text.erb} +0 -0
- /data/templates/default/gem/{entrypoint.erb → entrypoint.text.erb} +0 -0
- /data/templates/default/gem/{gapic_metadata_json.erb → gapic_metadata_json.text.erb} +0 -0
- /data/templates/default/gem/{gitignore.erb → gitignore.text.erb} +0 -0
- /data/templates/default/gem/{license.erb → license.text.erb} +0 -0
- /data/templates/default/gem/{rakefile.erb → rakefile.text.erb} +0 -0
- /data/templates/default/gem/{version.erb → version.text.erb} +0 -0
- /data/templates/default/layouts/{_ruby.erb → _ruby.text.erb} +0 -0
- /data/templates/default/{package.erb → package.text.erb} +0 -0
- /data/templates/default/proto_docs/{_proto_file.erb → _proto_file.text.erb} +0 -0
- /data/templates/default/proto_docs/{proto_file.erb → proto_file.text.erb} +0 -0
- /data/templates/default/proto_docs/{readme.erb → readme.text.erb} +0 -0
- /data/templates/default/service/{_helpers.erb → _helpers.text.erb} +0 -0
- /data/templates/default/service/client/{_credentials.erb → _credentials.text.erb} +0 -0
- /data/templates/default/service/client/{_paths.erb → _paths.text.erb} +0 -0
- /data/templates/default/service/client/{_requires.erb → _requires.text.erb} +0 -0
- /data/templates/default/service/client/{_resource.erb → _resource.text.erb} +0 -0
- /data/templates/default/service/client/{_self_configure.erb → _self_configure.text.erb} +0 -0
- /data/templates/default/service/client/method/def/{_request.erb → _request.text.erb} +0 -0
- /data/templates/default/service/client/method/def/{_rescue.erb → _rescue.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_error.erb → _error.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_request.erb → _request.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_request_field.erb → _request_field.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_request_streaming.erb → _request_streaming.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_response.erb → _response.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_sample.erb → _sample.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_sample_response.erb → _sample_response.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_samples.erb → _samples.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/request_field/{_arg.erb → _arg.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/request_field/{_hash.erb → _hash.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/sample_response/{_comment.erb → _comment.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/sample_response/{_define.erb → _define.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/sample_response/{_loop.erb → _loop.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/sample_response/{_print.erb → _print.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/sample_response/{_write_file.erb → _write_file.text.erb} +0 -0
- /data/templates/default/service/client/resource/{_doc.erb → _doc.text.erb} +0 -0
- /data/templates/default/service/client/resource/{_multi.erb → _multi.text.erb} +0 -0
- /data/templates/default/service/client/resource/{_single.erb → _single.text.erb} +0 -0
- /data/templates/default/service/{client.erb → client.text.erb} +0 -0
- /data/templates/default/service/{credentials.erb → credentials.text.erb} +0 -0
- /data/templates/default/service/{operations.erb → operations.text.erb} +0 -0
- /data/templates/default/service/{paths.erb → paths.text.erb} +0 -0
- /data/templates/default/service/rest/client/method/def/{_rescue.erb → _rescue.text.erb} +0 -0
- /data/templates/default/service/rest/client/method/docs/{_error.erb → _error.text.erb} +0 -0
- /data/templates/default/service/rest/{client.erb → client.text.erb} +0 -0
- /data/templates/default/service/rest/{grpc_transcoding.erb → grpc_transcoding.text.erb} +0 -0
- /data/templates/default/service/rest/service_stub/grpc_transcoding_method/def/{_query_string_param.erb → _query_string_param.text.erb} +0 -0
- /data/templates/default/service/rest/service_stub/method/def/{_request.erb → _request.text.erb} +0 -0
- /data/templates/default/service/rest/{service_stub.erb → service_stub.text.erb} +0 -0
- /data/templates/default/service/{rest.erb → rest.text.erb} +0 -0
- /data/templates/default/service/test/{client_operations.erb → client_operations.text.erb} +0 -0
- /data/templates/default/service/test/{smoke.erb → smoke.text.erb} +0 -0
- /data/templates/default/{service.erb → service.text.erb} +0 -0
- /data/templates/default/shared/{_header.erb → _header.text.erb} +0 -0
- /data/templates/default/shared/{_license.erb → _license.text.erb} +0 -0
- /data/templates/default/shared/{_warning.erb → _warning.text.erb} +0 -0
@@ -61,16 +61,68 @@ module Gapic
|
|
61
61
|
def services
|
62
62
|
@services ||= begin
|
63
63
|
files = @api.generate_files.select { |f| f.package == @package }
|
64
|
-
|
64
|
+
service_list = files.map(&:services).flatten
|
65
|
+
mixin_service_names = gem.mixins_model.mixin_services
|
66
|
+
service_list.delete_if { |s| mixin_service_names.include? s.full_name }
|
65
67
|
# Omit common services in this package. Common service clients do not
|
66
68
|
# go into their own package.
|
67
|
-
normal_services =
|
69
|
+
normal_services = service_list.select { |s| @api.delegate_service_for(s).nil? }
|
68
70
|
# But include common services that delegate to normal services in this package.
|
69
71
|
common_services = normal_services.flat_map { |s| @api.common_services_for s }
|
70
72
|
(normal_services + common_services).map { |s| ServicePresenter.new @gem_presenter, @api, s }
|
71
73
|
end
|
72
74
|
end
|
73
75
|
|
76
|
+
##
|
77
|
+
# @return [Boolean] Whether the generation of REST clients is requested
|
78
|
+
# and can be done because at least one method has rest bindings.
|
79
|
+
#
|
80
|
+
def generate_rest_clients?
|
81
|
+
@api.generate_rest_clients? && !first_service_with_rest.nil?
|
82
|
+
end
|
83
|
+
|
84
|
+
##
|
85
|
+
# @return [Boolean] Whether the generation of gRPC clients is requested
|
86
|
+
#
|
87
|
+
def generate_grpc_clients?
|
88
|
+
@api.generate_grpc_clients?
|
89
|
+
end
|
90
|
+
|
91
|
+
##
|
92
|
+
# First service with REST bindings.
|
93
|
+
# @return [Gapic::Presenters::ServicePresenter, nil]
|
94
|
+
#
|
95
|
+
def first_service_with_rest
|
96
|
+
services.find(&:methods_rest_bindings?)
|
97
|
+
end
|
98
|
+
|
99
|
+
##
|
100
|
+
# Whether there are mixin services that this package has http binding overrides for.
|
101
|
+
#
|
102
|
+
# @return [Boolean]
|
103
|
+
#
|
104
|
+
def mixin_binding_overrides?
|
105
|
+
first_service_with_rest&.rest&.mixin_binding_overrides? || false
|
106
|
+
end
|
107
|
+
|
108
|
+
##
|
109
|
+
# Requires path for the mixin binding overrides file
|
110
|
+
#
|
111
|
+
# @return [String]
|
112
|
+
#
|
113
|
+
def mixin_binding_overrides_require
|
114
|
+
"#{ruby_file_path @api, namespace}/bindings_override"
|
115
|
+
end
|
116
|
+
|
117
|
+
##
|
118
|
+
# File path for the mixin binding overrides file
|
119
|
+
#
|
120
|
+
# @return [String]
|
121
|
+
#
|
122
|
+
def mixin_binding_overrides_file_path
|
123
|
+
"#{mixin_binding_overrides_require}.rb"
|
124
|
+
end
|
125
|
+
|
74
126
|
def address
|
75
127
|
@package.split "."
|
76
128
|
end
|
@@ -79,10 +131,18 @@ module Gapic
|
|
79
131
|
ruby_file_path @api, namespace
|
80
132
|
end
|
81
133
|
|
134
|
+
def package_rest_require
|
135
|
+
"#{ruby_file_path @api, namespace}/rest"
|
136
|
+
end
|
137
|
+
|
82
138
|
def package_file_path
|
83
139
|
"#{package_require}.rb"
|
84
140
|
end
|
85
141
|
|
142
|
+
def package_rest_file_path
|
143
|
+
"#{package_rest_require}.rb"
|
144
|
+
end
|
145
|
+
|
86
146
|
def package_directory_name
|
87
147
|
package_require.split("/").last
|
88
148
|
end
|
@@ -117,24 +177,9 @@ module Gapic
|
|
117
177
|
language: "ruby",
|
118
178
|
protoPackage: name,
|
119
179
|
libraryPackage: namespace,
|
120
|
-
services: services.
|
180
|
+
services: services.to_h { |s| [s.grpc_service_name, s.drift_manifest] }
|
121
181
|
}
|
122
182
|
end
|
123
|
-
|
124
|
-
##
|
125
|
-
# How comments in the generated libraries refer to the GRPC client
|
126
|
-
# if no REST code is generated, this should just be "client",
|
127
|
-
# if REST code is generated, this should be disambiguated into the "GRPC client"
|
128
|
-
#
|
129
|
-
# Since we are using first service for an indication of whether package generates
|
130
|
-
# REST code, it's OK to defer this to the first service as well.
|
131
|
-
# For packages with no services the value of this does not really matter as
|
132
|
-
# no client generation docs will be generated.
|
133
|
-
#
|
134
|
-
# @return [String]
|
135
|
-
def grpc_client_designation
|
136
|
-
services.first&.grpc_client_designation || ""
|
137
|
-
end
|
138
183
|
end
|
139
184
|
end
|
140
185
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
17
|
require "gapic/path_pattern"
|
18
|
-
require "active_support/inflector"
|
19
18
|
|
20
19
|
module Gapic
|
21
20
|
module Presenters
|
@@ -58,12 +57,10 @@ module Gapic
|
|
58
57
|
#
|
59
58
|
class PatternPresenter
|
60
59
|
def initialize pattern_string
|
61
|
-
@pattern = pattern_string
|
62
60
|
@parsed_pattern = Gapic::PathPattern.parse pattern_string
|
63
61
|
@path_string = build_path_string
|
64
62
|
end
|
65
63
|
|
66
|
-
attr_reader :pattern
|
67
64
|
attr_reader :path_string
|
68
65
|
|
69
66
|
def pattern_template
|
@@ -78,6 +75,11 @@ module Gapic
|
|
78
75
|
@parsed_pattern.arguments
|
79
76
|
end
|
80
77
|
|
78
|
+
# @return [String] The conflicting argument name escaped with local binding.
|
79
|
+
def escape_argument arg
|
80
|
+
Gapic::RubyInfo.keywords.include?(arg) ? "binding.local_variable_get(:#{arg})" : arg
|
81
|
+
end
|
82
|
+
|
81
83
|
def formal_arguments
|
82
84
|
@parsed_pattern.arguments.map { |name| "#{name}:" }.join ", "
|
83
85
|
end
|
@@ -103,6 +105,10 @@ module Gapic
|
|
103
105
|
end.join "/"
|
104
106
|
end
|
105
107
|
|
108
|
+
def pattern
|
109
|
+
@parsed_pattern.path_pattern
|
110
|
+
end
|
111
|
+
|
106
112
|
private
|
107
113
|
|
108
114
|
def build_path_string
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2021 Google LLC
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "gapic/presenters/service/sub_client_presenter"
|
18
|
+
|
19
|
+
module Gapic
|
20
|
+
module Presenters
|
21
|
+
module Service
|
22
|
+
##
|
23
|
+
# @private
|
24
|
+
# Presenter for the generation of the sub-client for LRO
|
25
|
+
# inside a host service's client class
|
26
|
+
#
|
27
|
+
# @!attribute [r] service
|
28
|
+
# Full name of the service providing the nonstandard LRO functionality
|
29
|
+
# @return [String]
|
30
|
+
# @!attribute [r] client_class_name
|
31
|
+
# Full name of the class of the client of the service
|
32
|
+
# @return [String]
|
33
|
+
# @!attribute [r] client_class_docname
|
34
|
+
# Name of the class as it should appear in the documentation
|
35
|
+
# @return [String]
|
36
|
+
# @!attribute [r] client_var_name
|
37
|
+
# Name for the variable for the client of the service
|
38
|
+
# @return [String]
|
39
|
+
# @!attribute [r] require_str
|
40
|
+
# Path to `require` the client of the service
|
41
|
+
# @return [String]
|
42
|
+
# @!attribute [r] service_description
|
43
|
+
# The description to place in the comments to this client's
|
44
|
+
# attribute in the library services's client class
|
45
|
+
# @return [String]
|
46
|
+
# @!attribute [r] helper_type
|
47
|
+
# The type of a helper generated for this service if any
|
48
|
+
# @return [String. nil]
|
49
|
+
#
|
50
|
+
class LroClientPresenter < SubClientPresenter
|
51
|
+
attr_reader :helper_type
|
52
|
+
|
53
|
+
##
|
54
|
+
# @param service [String]
|
55
|
+
# Full name of the service providing the nonstandard LRO functionality
|
56
|
+
# @param client_class_name [String]
|
57
|
+
# Full name of the class of the client of the service
|
58
|
+
# @param client_class_docname [String]
|
59
|
+
# Name of the class as it should appear in the documentation
|
60
|
+
# @param client_var_name [String]
|
61
|
+
# Name for the variable for the client of the service
|
62
|
+
# @param require_str [String]
|
63
|
+
# Path to `require` the client of the service
|
64
|
+
# @param service_description [String]
|
65
|
+
# The description to place in the comments to this client's
|
66
|
+
# attribute in the library services's client class
|
67
|
+
# @param helper_type [String, nil]
|
68
|
+
# The type of a helper generated for this service if any
|
69
|
+
#
|
70
|
+
def initialize service:,
|
71
|
+
client_class_name:,
|
72
|
+
client_class_docname:,
|
73
|
+
client_var_name:,
|
74
|
+
require_str:,
|
75
|
+
service_description:,
|
76
|
+
helper_type: nil
|
77
|
+
super(service: service,
|
78
|
+
client_class_name: client_class_name,
|
79
|
+
client_class_docname: client_class_docname,
|
80
|
+
client_var_name: client_var_name,
|
81
|
+
require_str: require_str,
|
82
|
+
service_description: service_description
|
83
|
+
)
|
84
|
+
|
85
|
+
@helper_type = helper_type
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2022 Google LLC
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "gapic/presenters/service/sub_client_presenter"
|
18
|
+
|
19
|
+
module Gapic
|
20
|
+
module Presenters
|
21
|
+
module Service
|
22
|
+
##
|
23
|
+
# @private
|
24
|
+
# Presenter for the generation of the sub-client for mixins
|
25
|
+
# inside a host service's client class
|
26
|
+
#
|
27
|
+
# @!attribute [r] service
|
28
|
+
# Full name of the service providing the nonstandard LRO functionality
|
29
|
+
# @return [String]
|
30
|
+
# @!attribute [r] client_class_name
|
31
|
+
# Full name of the class of the client of the service
|
32
|
+
# @return [String]
|
33
|
+
# @!attribute [r] client_class_docname
|
34
|
+
# Name of the class as it should appear in the documentation
|
35
|
+
# @return [String]
|
36
|
+
# @!attribute [r] client_var_name
|
37
|
+
# Name for the variable for the client of the service
|
38
|
+
# @return [String]
|
39
|
+
# @!attribute [r] require_str
|
40
|
+
# Path to `require` the client of the service
|
41
|
+
# @return [String]
|
42
|
+
# @!attribute [r] service_description
|
43
|
+
# The description to place in the comments to this client's
|
44
|
+
# attribute in the library services's client class
|
45
|
+
# @return [String]
|
46
|
+
# @!attribute [r] bindings_override
|
47
|
+
# Override of Http bindings for the methods of the mixin service
|
48
|
+
# methods are specified by their full name, e.g. `google.cloud.location.Locations.ListLocations`
|
49
|
+
# @return [Hash{String, Array<::Gapic::Model::Method::HttpAnnotation::HttpBinding>}]
|
50
|
+
#
|
51
|
+
class MixinClientPresenter < SubClientPresenter
|
52
|
+
attr_reader :bindings_override
|
53
|
+
|
54
|
+
##
|
55
|
+
# @param service [String]
|
56
|
+
# Full name of the service providing the nonstandard LRO functionality
|
57
|
+
# @param client_class_name [String]
|
58
|
+
# Full name of the class of the client of the service
|
59
|
+
# @param client_class_docname [String]
|
60
|
+
# Name of the class as it should appear in the documentation
|
61
|
+
# @param client_var_name [String]
|
62
|
+
# Name for the variable for the client of the service
|
63
|
+
# @param require_str [String]
|
64
|
+
# Path to `require` the client of the service
|
65
|
+
# @param service_description [String]
|
66
|
+
# The description to place in the comments to this client's
|
67
|
+
# attribute in the library services's client class
|
68
|
+
#
|
69
|
+
def initialize service:,
|
70
|
+
client_class_name:,
|
71
|
+
client_class_docname:,
|
72
|
+
client_var_name:,
|
73
|
+
require_str:,
|
74
|
+
service_description:,
|
75
|
+
bindings_override:
|
76
|
+
super(service: service,
|
77
|
+
client_class_name: client_class_name,
|
78
|
+
client_class_docname: client_class_docname,
|
79
|
+
client_var_name: client_var_name,
|
80
|
+
require_str: require_str,
|
81
|
+
service_description: service_description
|
82
|
+
)
|
83
|
+
|
84
|
+
@bindings_override = bindings_override
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2022 Google LLC
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
module Gapic
|
18
|
+
module Presenters
|
19
|
+
module Service
|
20
|
+
##
|
21
|
+
# @private
|
22
|
+
# Base class for the presenter for the generation of the clients
|
23
|
+
# for sub-services (mixins, lros) inside a host service's client class
|
24
|
+
#
|
25
|
+
# @!attribute [r] service
|
26
|
+
# Full name of the service providing the nonstandard LRO functionality
|
27
|
+
# @return [String]
|
28
|
+
# @!attribute [r] client_class_name
|
29
|
+
# Full name of the class of the client of the service
|
30
|
+
# @return [String]
|
31
|
+
# @!attribute [r] client_class_docname
|
32
|
+
# Name of the class as it should appear in the documentation
|
33
|
+
# @return [String]
|
34
|
+
# @!attribute [r] client_var_name
|
35
|
+
# Name for the variable for the client of the service
|
36
|
+
# @return [String]
|
37
|
+
# @!attribute [r] require_str
|
38
|
+
# Path to `require` the client of the service
|
39
|
+
# @return [String]
|
40
|
+
# @!attribute [r] service_description
|
41
|
+
# The description to place in the comments to this client's
|
42
|
+
# attribute in the library services's client class
|
43
|
+
# @return [String]
|
44
|
+
#
|
45
|
+
class SubClientPresenter
|
46
|
+
attr_reader :service
|
47
|
+
attr_reader :client_class_name
|
48
|
+
attr_reader :client_class_docname
|
49
|
+
attr_reader :client_var_name
|
50
|
+
attr_reader :require_str
|
51
|
+
attr_reader :service_description
|
52
|
+
|
53
|
+
##
|
54
|
+
# @param service [String]
|
55
|
+
# Full name of the service providing the nonstandard LRO functionality
|
56
|
+
# @param client_class_name [String]
|
57
|
+
# Full name of the class of the client of the service
|
58
|
+
# @param client_class_docname [String]
|
59
|
+
# Name of the class as it should appear in the documentation
|
60
|
+
# @param client_var_name [String]
|
61
|
+
# Name for the variable for the client of the service
|
62
|
+
# @param require_str [String]
|
63
|
+
# Path to `require` the client of the service
|
64
|
+
# @param service_description [String]
|
65
|
+
# The description to place in the comments to this client's
|
66
|
+
# attribute in the library services's client class
|
67
|
+
#
|
68
|
+
def initialize service:,
|
69
|
+
client_class_name:,
|
70
|
+
client_class_docname:,
|
71
|
+
client_var_name:,
|
72
|
+
require_str:,
|
73
|
+
service_description:
|
74
|
+
@service = service
|
75
|
+
@client_class_name = client_class_name
|
76
|
+
@client_class_docname = client_class_docname
|
77
|
+
@client_var_name = client_var_name
|
78
|
+
@require_str = require_str
|
79
|
+
@service_description = service_description
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|