123456789_123456789_123456789_123456789_123456789_

Class: RBS::Collection::Installer

Relationships & Source Files
Inherits: Object
Defined in: lib/rbs/collection/installer.rb

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(lockfile_path:, stdout: $stdout) ⇒ Installer

[ GitHub ]

  
# File 'lib/rbs/collection/installer.rb', line 9

def initialize(lockfile_path:, stdout: $stdout)
  @lockfile = Config::Lockfile.from_lockfile(lockfile_path: lockfile_path, data: YAML.load_file(lockfile_path))
  @stdout = stdout
end

Instance Attribute Details

#lockfile (readonly)

[ GitHub ]

  
# File 'lib/rbs/collection/installer.rb', line 6

attr_reader :lockfile

#stdout (readonly)

[ GitHub ]

  
# File 'lib/rbs/collection/installer.rb', line 7

attr_reader :stdout

Instance Method Details

#install_from_lockfile

[ GitHub ]

  
# File 'lib/rbs/collection/installer.rb', line 14

def install_from_lockfile
  install_to = lockfile.fullpath
  install_to.mkpath
  selected = lockfile.gems.select do |name, gem|
    gem[:source].has?(name, gem[:version])
  end
  selected.each_value do |gem|
    gem[:source].install(
      dest: install_to,
      name: gem[:name],
      version: gem[:version],
      stdout: stdout
    )
  end
  CLI::ColoredIO.new(stdout: stdout).puts_green("It's done! #{selected.size} gems' RBSs now installed.")
end