Class: Gapic::Generators::AdsGenerator

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

Overview

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api) ⇒ AdsGenerator

Initializes the generator.

Parameters:

  • api (Gapic::Schema::Api)

    The API model/context to generate.



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

def initialize api
  super

  # if not specified otherwise in configuration, generate path helpers for the output messages in ads
  api.generate_path_helpers_output = true unless api.generate_path_helpers_output_defined?
  # if not specified otherwise in configuration, apply overrides to proto namespaces in ads
  api.override_proto_namespaces = true unless api.override_proto_namespaces_defined?

  # Configure to use prefer Ads templates
  use_templates! File.join __dir__, "../../../templates/ads"
end

Class Method Details

.parameter_schemaGapic::Schema::ParameterSchema

Schema of the parameters that the generator accepts

Returns:

  • (Gapic::Schema::ParameterSchema)


86
87
88
# File 'lib/gapic/generators/ads_generator.rb', line 86

def self.parameter_schema
  DefaultGeneratorParameters.default_schema
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.



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

def generate
  files = []

  gem = 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/client.erb",      "lib/#{service.client_file_path}",       service: service)
      files << g("service/credentials.erb", "lib/#{service.credentials_file_path}",  service: service)
      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?
    end
  end

  # Gem level files
  files << g("gem/version.erb", "lib/#{gem.version_file_path}", gem: gem)

  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