Class: Gapic::Generators::DefaultGenerator
- Inherits:
-
BaseGenerator
- Object
- BaseGenerator
- Gapic::Generators::DefaultGenerator
- Defined in:
- lib/gapic/generators/default_generator.rb
Overview
The generator orchestrates the rendering of templates.
Class Method Summary collapse
-
.parameter_schema ⇒ Gapic::Schema::ParameterSchema
Schema of the parameters that the generator accepts.
Instance Method Summary collapse
-
#generate(gem_presenter: nil) ⇒ Array< Google::Protobuf::Compiler::CodeGeneratorResponse::File>
Generates all the files for the API.
-
#initialize(api) ⇒ DefaultGenerator
constructor
Initializes the generator.
Constructor Details
#initialize(api) ⇒ DefaultGenerator
Initializes the generator.
30 31 32 33 34 35 |
# File 'lib/gapic/generators/default_generator.rb', line 30 def initialize api super # Configure to use a custom templates directory use_templates! File.join __dir__, "../../../templates/default" end |
Class Method Details
.parameter_schema ⇒ Gapic::Schema::ParameterSchema
Schema of the parameters that the generator accepts
147 148 149 |
# File 'lib/gapic/generators/default_generator.rb', line 147 def self.parameter_schema DefaultGeneratorParameters.default_schema end |
Instance Method Details
#generate(gem_presenter: nil) ⇒ Array< Google::Protobuf::Compiler::CodeGeneratorResponse::File>
Generates all the files for the API.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/gapic/generators/default_generator.rb', line 46 def generate gem_presenter: nil files = [] gem = gem_presenter || Gapic::Presenters.gem_presenter(@api) if @api.generate_rest_clients? && gem.packages.find(&:generate_rest_clients?).nil? raise "Rest transport specified but no services have HTTP bindings" end gem.packages.each do |package| package_snippets = PackageSnippets.new snippet_dir: "snippets", proto_package: package.name, gem_name: gem.name # Package level files files << g("package", "lib/#{package.package_file_path}", package: package) files << g("package_rest", "lib/#{package.package_rest_file_path}", package: package) if package.generate_rest_clients? files << g("binding_override", "lib/#{package.mixin_binding_overrides_file_path}", package: package) if package.mixin_binding_overrides? && package.generate_rest_clients? package.services.each do |service| should_generate_grpc = service.generate_grpc_clients? should_generate_rest = service.generate_rest_clients? # Service level files files << g("service", "lib/#{service.service_file_path}", service: service) files << g("service/credentials", "lib/#{service.credentials_file_path}", service: service) unless gem.generic_endpoint? files << g("service/paths", "lib/#{service.paths_file_path}", service: service) if service.paths? # Rest module file files << g("service/rest", "lib/#{service.rest.service_rest_file_path}", service: service) if should_generate_rest # client.rb files << g("service/client", "lib/#{service.client_file_path}", service: service) if should_generate_grpc files << g("service/rest/client", "lib/#{service.rest.client_file_path}", service: service) if should_generate_rest # Standard LRO shim files << g("service/operations", "lib/#{service.operations_file_path}", service: service) if service.lro? && should_generate_grpc files << g("service/rest/operations", "lib/#{service.rest.operations_file_path}", service: service) if service.rest.lro? && should_generate_rest # Nonstandard LRO shim files << g("service/nonstandard_lro", "lib/#{service.nonstandard_lro_file_path}", service: service) if service.nonstandard_lro_provider? && should_generate_grpc files << g("service/rest/nonstandard_lro", "lib/#{service.rest.nonstandard_lro_file_path}", service: service) if service.rest.nonstandard_lro_provider? && should_generate_rest # Rest-only `service.stub` file files << g("service/rest/service_stub", "lib/#{service.rest.service_stub_file_path}", service: service) if should_generate_rest # Unit tests for `client.rb` files << g("service/test/client", "test/#{service.test_client_file_path}", service: service) if should_generate_grpc files << g("service/rest/test/client", "test/#{service.rest.test_client_file_path}", service: service) if should_generate_rest # Unit tests for `paths.rb` files << g("service/test/client_paths", "test/#{service.test_paths_file_path}", service: service) if service.paths? && should_generate_grpc # Unit tests for standard LRO shim files << g("service/test/client_operations", "test/#{service.test_client_operations_file_path}", service: service) if service.lro? && should_generate_grpc if @api.generate_standalone_snippets? service.methods.each do |method| method.all_snippets.each do |snippet| snippet_file = g("snippets/standalone", "snippets/#{snippet.snippet_file_path}", snippet: snippet) package_snippets.add(method_presenter: method, snippet_presenter: snippet, snippet_file: snippet_file) end end end end files += package_snippets.files if @api.generate_standalone_snippets? end # Gem level files files << g("gem/gitignore", ".gitignore", gem: gem) files << g("gem/version", "lib/#{gem.version_file_path}", gem: gem) files << g("gem/test_helper", "test/helper.rb", gem: gem) files << g("gem/gemspec", "#{gem.name}.gemspec", gem: gem) files << g("gem/gemfile", "Gemfile", gem: gem) files << g("gem/rakefile", "Rakefile", gem: gem) files << g("gem/readme", "README.md", gem: gem) files << g("gem/changelog", "CHANGELOG.md", gem: gem) files << g("gem/rubocop", ".rubocop.yml", gem: gem) files << g("gem/toys", ".toys.rb", gem: gem) files << g("gem/yardopts", ".yardopts", gem: gem) files << g("gem/license", "LICENSE.md", gem: gem) files << g("gem/entrypoint", "lib/#{gem.name}.rb", gem: gem) files << g("gem/gapic_metadata_json", "gapic_metadata.json", gem: gem) if @api. files << g("snippets/gemfile", "snippets/Gemfile", gem: gem) if @api.generate_standalone_snippets? gem.proto_files.each do |proto_file| files << g("proto_docs/proto_file", "proto_docs/#{proto_file.docs_file_path}", file: proto_file) end files << g("proto_docs/readme", "proto_docs/README.md", gem: gem) format_files files files end |