class Gapic::Generators::DefaultGenerator

The generator orchestrates the rendering of templates.

Public Class Methods

new(api) click to toggle source

Initializes the generator.

@param api [Gapic::Schema::Api] The API model/context to

generate.
Calls superclass method Gapic::Generators::BaseGenerator::new
# File lib/gapic/generators/default_generator.rb, line 29
def initialize api
  super

  # Configure to use a custom templates directory
  use_templates! File.join __dir__, "../../../templates/default"
end
parameter_schema() click to toggle source

Schema of the parameters that the generator accepts @return [Gapic::Schema::ParameterSchema]

# File lib/gapic/generators/default_generator.rb, line 109
def self.parameter_schema
  DefaultGeneratorParameters.default_schema
end

Public Instance Methods

generate(gem_presenter: nil) click to toggle source

Generates all the files for the API.

@return [Array<

Google::Protobuf::Compiler::CodeGeneratorResponse::File>]
The files that were generated for the API.
# File lib/gapic/generators/default_generator.rb, line 45
def generate gem_presenter: nil
  files = []

  gem = gem_presenter || Gapic::Presenters.gem_presenter(@api)

  gem.packages.each do |package|
    # Package level files
    files << g("package.erb", "lib/#{package.package_file_path}", package: package)

    package.services.each do |service|
      # Service level files
      files << g("service.erb",                        "lib/#{service.service_file_path}",                 service: service)
      files << g("service/rest.erb",                   "lib/#{service.rest.service_rest_file_path}",       service: service) if @api.generate_rest_clients? and service.methods_rest_bindings?
      files << g("service/client.erb",                 "lib/#{service.client_file_path}",                  service: service) unless @api.generate_rest_clients?
      files << g("service/credentials.erb",            "lib/#{service.credentials_file_path}",             service: service) unless gem.generic_endpoint?
      files << g("service/paths.erb",                  "lib/#{service.paths_file_path}",                   service: service) if service.paths?
      files << g("service/operations.erb",             "lib/#{service.operations_file_path}",              service: service) if service.lro? && !@api.generate_rest_clients?
      files << g("service/rest/client.erb",            "lib/#{service.rest.client_file_path}",             service: service) if @api.generate_rest_clients? and service.methods_rest_bindings?
      files << g("service/rest/service_stub.erb",      "lib/#{service.rest.service_stub_file_path}",       service: service) if @api.generate_rest_clients? and service.methods_rest_bindings?
      files << g("service/rest/test/client.erb",       "test/#{service.rest.test_client_file_path}",       service: service) if @api.generate_rest_clients? and service.methods_rest_bindings?
      files << g("service/test/client.erb",            "test/#{service.test_client_file_path}",            service: service) unless @api.generate_rest_clients?
      files << g("service/test/client_paths.erb",      "test/#{service.test_paths_file_path}",             service: service) if service.paths?
      files << g("service/test/client_operations.erb", "test/#{service.test_client_operations_file_path}", service: service) if service.lro? && !@api.generate_rest_clients?

      if @api.generate_standalone_snippets?
        service.methods.each do |method|
          snippet = method.snippet
          files << g("snippets/standalone.erb", "snippets/#{snippet.snippet_file_path}", snippet: snippet)
        end
      end
    end
  end

  # Gem level files
  files << g("gem/gitignore.erb",             ".gitignore",                   gem: gem)
  files << g("gem/version.erb",               "lib/#{gem.version_file_path}", gem: gem)
  files << g("gem/test_helper.erb",           "test/helper.rb",               gem: gem)
  files << g("gem/gemspec.erb",               "#{gem.name}.gemspec",          gem: gem)
  files << g("gem/gemfile.erb",               "Gemfile",                      gem: gem)
  files << g("gem/rakefile.erb",              "Rakefile",                     gem: gem)
  files << g("gem/readme.erb",                "README.md",                    gem: gem)
  files << g("gem/changelog.erb",             "CHANGELOG.md",                 gem: gem)
  files << g("gem/rubocop.erb",               ".rubocop.yml",                 gem: gem)
  files << g("gem/yardopts.erb",              ".yardopts",                    gem: gem)
  files << g("gem/license.erb",               "LICENSE.md",                   gem: gem)
  files << g("gem/entrypoint.erb",            "lib/#{gem.name}.rb",           gem: gem)
  files << g("gem/gapic_metadata_json.erb",   "gapic_metadata.json",          gem: gem) if @api.generate_metadata

  files << g("snippets/gemfile.erb",          "snippets/Gemfile",             gem: gem) if @api.generate_standalone_snippets?

  gem.proto_files.each do |proto_file|
    files << g("proto_docs/proto_file.erb", "proto_docs/#{proto_file.docs_file_path}", file: proto_file)
  end
  files << g("proto_docs/readme.erb", "proto_docs/README.md", gem: gem)

  format_files files

  files
end

Private Instance Methods

format_config() click to toggle source

Override the default rubocop config file to be used.

# File lib/gapic/generators/default_generator.rb, line 117
def format_config
  @api.configuration[:format_config] ||
    super
end