Module: VirtualGem

Defined in:
lib/virtual_gem.rb,
lib/virtual_gem/version.rb,
lib/virtual_gem/virtual_gem_info.rb,
lib/virtual_gem/gem/specification.rb,
lib/virtual_gem/bundler/lock_file_parser.rb

Defined Under Namespace

Modules: ExtentLockFileParser, VirtualGemStubs Classes: VirtualGemInfo

Constant Summary collapse

VERSION =
'0.1.0'.freeze

Class Method Summary collapse

Class Method Details

.register_requirements_changes(name:, version:, new_requirements:) ⇒ Object

changes = [ { gem_name: [‘=< 0.3’] } ]



16
17
18
19
# File 'lib/virtual_gem.rb', line 16

def register_requirements_changes(name:, version:, new_requirements:)
  @requirements_changes ||= Hash.new { |h, k| h[k] = {} }
  @requirements_changes[name][version] = new_requirements
end

.register_virtual_gem(name:, new_version:, original_version:) ⇒ Object



8
9
10
11
12
13
# File 'lib/virtual_gem.rb', line 8

def register_virtual_gem(name:, new_version:, original_version:)
  info = ::VirtualGem::VirtualGemInfo.new(name: name, new_version: new_version, original_version: original_version)

  @virtual_gem_dict ||= Hash.new { |h, k| h[k] = {} }
  @virtual_gem_dict[name][new_version] = info
end

.replace_new_requirements(specs) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/virtual_gem.rb', line 26

def replace_new_requirements(specs)
  return unless @requirements_changes

  dict = specs.group_by(&:name)
  @requirements_changes.each do |name, change_settings|
    gems = dict[name]
    next unless gems

    versions = gems.map { |g| [g.version.to_s, g] }.to_h
    next if versions.empty?

    replace_requirements(versions, change_settings)
  end
end

.update_virtual_gems(stubs, stubs_by_name) ⇒ Object



21
22
23
24
# File 'lib/virtual_gem.rb', line 21

def update_virtual_gems(stubs, stubs_by_name)
  create_virtual_gems(stubs, stubs_by_name)
  update_new_requirements(stubs_by_name)
end