class Gapic::Generators::AdsGenerator

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

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
# 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
parameter_schema() click to toggle source

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

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

Public Instance Methods

generate() 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/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