Class: Gapic::Generators::CloudGenerator

Inherits:
DefaultGenerator
  • Object
show all
Defined in:
lib/gapic/generators/cloud_generator.rb

Overview

The generator orchestrates the rendering of templates for Google Cloud projects.

Instance Method Summary collapse

Constructor Details

#initialize(api) ⇒ CloudGenerator

Initializes the generator.

Parameters:

  • api (Gapic::Schema::Api)

    The API model/context to generate.



30
31
32
33
34
35
36
37
38
# File 'lib/gapic/generators/cloud_generator.rb', line 30

def initialize api
  gem_config = api.configuration[:gem] ||= {}
  gem_config[:homepage] ||= "https://github.com/googleapis/google-cloud-ruby"

  super

  # Configure to use prefer Google Cloud templates
  use_templates! File.join __dir__, "../../../templates/cloud"
end

Instance Method Details

#generateArray< Google::Protobuf::Compiler::CodeGeneratorResponse::File>

Generates all the files for the API.

Returns:

  • (Array< Google::Protobuf::Compiler::CodeGeneratorResponse::File>)

    The files that were generated for the API.



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/gapic/generators/cloud_generator.rb', line 45

def generate
  gem_config = @api.configuration[:gem] ||= {}
  return generate_wrapper if gem_config[:version_dependencies]

  orig_files = super

  cloud_files = []

  gem = Gapic::Presenters.gem_presenter @api

  # Additional Gem level files
  cloud_files << g("gem/repo-metadata.erb",  ".repo-metadata.json", gem: gem)
  cloud_files << g("gem/authentication.erb", "AUTHENTICATION.md",   gem: gem) unless gem.services.empty?

  format_files cloud_files

  orig_files + cloud_files
end

#generate_wrapperArray<Google::Protobuf::Compiler::CodeGeneratorResponse::File>

Generates the files for a wrapper.

Returns:

  • (Array<Google::Protobuf::Compiler::CodeGeneratorResponse::File>)

    The files that were generated for the API.



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
# File 'lib/gapic/generators/cloud_generator.rb', line 73

def generate_wrapper
  files = []

  gem = Gapic::Presenters.wrapper_gem_presenter @api

  files << g("gem/gitignore.erb",            ".gitignore",                                    gem: gem)
  files << g("gem/repo-metadata.erb",        ".repo-metadata.json",                           gem: gem)
  files << g("wrapper_gem/rubocop.erb",      ".rubocop.yml",                                  gem: gem)
  files << g("wrapper_gem/yardopts.erb",     ".yardopts",                                     gem: gem)
  files << g("gem/authentication.erb",       "AUTHENTICATION.md",                             gem: gem)
  files << g("gem/changelog.erb",            "CHANGELOG.md",                                  gem: gem)
  files << g("wrapper_gem/gemfile.erb",      "Gemfile",                                       gem: gem)
  files << g("gem/license.erb",              "LICENSE.md",                                    gem: gem)
  files << g("wrapper_gem/rakefile.erb",     "Rakefile",                                      gem: gem)
  files << g("wrapper_gem/readme.erb",       "README.md",                                     gem: gem)
  files << g("wrapper_gem/gemspec.erb",      "#{gem.name}.gemspec",                           gem: gem)
  files << g("wrapper_gem/entrypoint.erb",   "lib/#{gem.name}.rb",                            gem: gem) if gem.needs_entrypoint?
  files << g("wrapper_gem/main.erb",         "lib/#{gem.namespace_file_path}",                gem: gem)
  files << g("gem/version.erb",              "lib/#{gem.version_file_path}",                  gem: gem)
  files << g("wrapper_gem/test_helper.erb",  "test/helper.rb",                                gem: gem)
  files << g("wrapper_gem/client_test.erb",  "test/#{gem.namespace_require}/client_test.rb",  gem: gem)
  files << g("wrapper_gem/version_test.erb", "test/#{gem.namespace_require}/version_test.rb", gem: gem)

  format_files files

  files
end