Class: Gapic::Generators::DefaultGenerator

Inherits:
BaseGenerator show all
Defined in:
lib/gapic/generators/default_generator.rb

Overview

The generator orchestrates the rendering of templates.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api) ⇒ DefaultGenerator

Initializes the generator.



29
30
31
32
33
34
# 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

Class Method Details

.parameter_schemaGapic::Schema::ParameterSchema

Schema of the parameters that the generator accepts



109
110
111
# File 'lib/gapic/generators/default_generator.rb', line 109

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.



45
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
# 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/grpc_transcoding.erb",  "lib/#{service.rest.transcoding_helper_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.

  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