Class: Generator::Entrypoint

Inherits:
Object
  • Object
show all
Includes:
FileWriter
Defined in:
lib/generator/entrypoint.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from FileWriter

#format_files, #write_file

Constructor Details

#initialize(apis) ⇒ Entrypoint

Returns a new instance of Entrypoint.



25
26
27
# File 'lib/generator/entrypoint.rb', line 25

def initialize(apis)
  @apis = apis
end

Instance Attribute Details

#apisObject (readonly)

Returns the value of attribute apis.



16
17
18
# File 'lib/generator/entrypoint.rb', line 16

def apis
  @apis
end

Class Method Details

.generateObject



19
20
21
22
# File 'lib/generator/entrypoint.rb', line 19

def generate
  new(API.apis).generate
  Generator.logger.info("Generated entry point")
end

Instance Method Details

#apis_with_latest_versionObject



45
46
47
48
49
50
# File 'lib/generator/entrypoint.rb', line 45

def apis_with_latest_version
  apis.group_by(&:name).transform_values do |api_list|
    latest_version = VersionSelector.find_latest_version(api_list.map(&:version))
    api_list.find { |api| api.version == latest_version }
  end.sort.to_h
end

#generateObject



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/generator/entrypoint.rb', line 29

def generate
  written_files = []

  # Generate main entrypoint file
  written_files << write_file(file_path, render_template)

  # Generate entrypoint signature
  written_files << RBS::Entrypoint.new(apis).generate

  format_files(written_files)
end

#required_librariesObject



41
42
43
# File 'lib/generator/entrypoint.rb', line 41

def required_libraries
  apis.map(&:library_name).append("peddler/lwa").sort
end