Class: RBS::Collection::Config::LockfileGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/rbs/collection/config/lockfile_generator.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_path:, gemfile_lock_path:, with_lockfile:) ⇒ LockfileGenerator

Returns a new instance of LockfileGenerator.



13
14
15
16
17
18
19
# File 'lib/rbs/collection/config/lockfile_generator.rb', line 13

def initialize(config_path:, gemfile_lock_path:, with_lockfile:)
  @config = Config.from_path config_path
  @lock_path = Config.to_lockfile_path(config_path)
  @lock = Config.from_path(lock_path) if lock_path.exist? && with_lockfile
  @gemfile_lock = Bundler::LockfileParser.new(gemfile_lock_path.read)
  @gem_queue = []
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



7
8
9
# File 'lib/rbs/collection/config/lockfile_generator.rb', line 7

def config
  @config
end

#gemfile_lockObject (readonly)

Returns the value of attribute gemfile_lock.



7
8
9
# File 'lib/rbs/collection/config/lockfile_generator.rb', line 7

def gemfile_lock
  @gemfile_lock
end

#lockObject (readonly)

Returns the value of attribute lock.



7
8
9
# File 'lib/rbs/collection/config/lockfile_generator.rb', line 7

def lock
  @lock
end

#lock_pathObject (readonly)

Returns the value of attribute lock_path.



7
8
9
# File 'lib/rbs/collection/config/lockfile_generator.rb', line 7

def lock_path
  @lock_path
end

Class Method Details

.generate(config_path:, gemfile_lock_path:, with_lockfile: true) ⇒ Object



9
10
11
# File 'lib/rbs/collection/config/lockfile_generator.rb', line 9

def self.generate(config_path:, gemfile_lock_path:, with_lockfile: true)
  new(config_path: config_path, gemfile_lock_path: gemfile_lock_path, with_lockfile: with_lockfile).generate
end

Instance Method Details

#generateObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/rbs/collection/config/lockfile_generator.rb', line 21

def generate
  config.gems.each do |gem|
    @gem_queue.push({ name: gem['name'], version: gem['version'] })
  end

  gemfile_lock_gems do |spec|
    @gem_queue.push({ name: spec.name, version: spec.version })
  end

  while gem = @gem_queue.shift
    assign_gem(**gem)
  end
  remove_ignored_gems!

  config.dump_to(lock_path)
  config
end