Class: ElmInstall::Populator

Inherits:
Base
  • Object
show all
Defined in:
lib/elm_install/populator.rb

Overview

Populator for ‘elm-stuff’ directory

Instance Method Summary collapse

Constructor Details

#initialize(dependencies) ⇒ Object

Initializes a new populator

Parameters:

  • dependencies (Array)

    The dependencies to populate



10
11
12
13
# File 'lib/elm_install/populator.rb', line 10

def initialize(dependencies)
  @dependencies = dependencies
  self
end

Instance Method Details

#copy_dependenciesObject

Copies dependencies to ‘elm-stuff/packages/package/version’ directory

Returns:

  • nil



51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/elm_install/populator.rb', line 51

def copy_dependencies
  @dependencies.each do |dependency|
    path =
      File.join('elm-stuff', 'packages', dependency.name,
                dependency.version.to_simple)

    log_dependency dependency

    dependency.source.copy_to(dependency.version, Pathname.new(path))
  end
  nil
end

#exact_dependenciesHash

Returns the contents for ‘elm-stuff/exact-dependencies.json’

Returns:

  • (Hash)

    The dependencies



41
42
43
44
45
# File 'lib/elm_install/populator.rb', line 41

def exact_dependencies
  @dependencies.each_with_object({}) do |dependency, memo|
    memo[dependency.name] = dependency.version.to_simple
  end
end

#log_dependency(dependency) ⇒ Object

Logs the dependency with a dot

Parameters:

Returns:

  • nil



70
71
72
73
74
75
76
77
# File 'lib/elm_install/populator.rb', line 70

def log_dependency(dependency)
  log = "#{dependency.name} - "
  log += dependency.source.to_log.to_s
  log += " (#{dependency.version.to_simple})"

  Logger.dot log
  nil
end

#populateObject

Populates ‘elm-stuff’ directory and writes ‘elm-stuff/exact-dependencies.json’.

Returns:

  • nil



20
21
22
23
# File 'lib/elm_install/populator.rb', line 20

def populate
  copy_dependencies
  write_exact_dependencies
end

#write_exact_dependenciesObject

Writes the ‘elm-stuff/exact-dependencies.json’

Returns:

  • nil



29
30
31
32
33
34
35
# File 'lib/elm_install/populator.rb', line 29

def write_exact_dependencies
  File.binwrite(
    File.join('elm-stuff', 'exact-dependencies.json'),
    JSON.pretty_generate(exact_dependencies)
  )
  nil
end