Class: Contextizer::Providers::Ruby::Gems

Inherits:
BaseProvider show all
Defined in:
lib/contextizer/providers/ruby/gems.rb

Class Method Summary collapse

Class Method Details

.call(context:, config:) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/contextizer/providers/ruby/gems.rb', line 7

def self.call(context:, config:)
  key_gems = config.settings.dig("gems", "key_gems")
  return if key_gems.nil? || key_gems.empty?

  gemfile_lock = File.join(context.target_path, "Gemfile.lock")
  return unless File.exist?(gemfile_lock)

  context.[:gems] = parse_gemfile_lock(gemfile_lock, key_gems)
end

.parse_gemfile_lock(path, key_gems) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/contextizer/providers/ruby/gems.rb', line 17

def self.parse_gemfile_lock(path, key_gems)
  found_gems = {}
  content = File.read(path)
  key_gems.each do |gem_name|
    match = content.match(/^\s{4}#{gem_name}\s\((.+?)\)/)
    found_gems[gem_name] = match[1] if match
  end
  found_gems
end