Sha256: 20d00cf18e1000fed5e23113c998b3804a867a84108a2decbe92554f7bb27636
Contents?: true
Size: 1.11 KB
Versions: 3
Compression:
Stored size: 1.11 KB
Contents
require 'bundler' module GemfileLocker class Locker < GemfileProcessor SEGMENTS_COUNT = { major: 1, minor: 2, patch: 3, full: 100, }.freeze attr_reader :lockfile def initialize(lockfile, *args) @lockfile = lockfile super(*args) end def bundler_specs @bundler_specs ||= Bundler::LockfileParser.new(lockfile).specs end def process_gem(gem_entry) name = gem_entry.name spec = bundler_specs.find { |x| x.name == name } return unless spec gem_entry.lock(version: prepare_version(spec.version), git_ref: prepare_git_ref(spec)) end def skip_gem?(gem_entry) super || gem_entry.locked? && !options[:force] end private def prepare_version(version) if options[:loose] segments = version.segments.take(SEGMENTS_COUNT[options[:loose].to_sym]) "~> #{segments.join('.')}" else version.to_s end end def prepare_git_ref(spec) if spec.source.is_a?(Bundler::Source::Git) spec.source.options['ref'] || spec.source.revision[0...7] end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
gemfile_locker-0.4.0 | lib/gemfile_locker/locker.rb |
gemfile_locker-0.3.1 | lib/gemfile_locker/locker.rb |
gemfile_locker-0.3.0 | lib/gemfile_locker/locker.rb |