module BundlePackageCheck
Constants
- PATH_SECTION
- VERSION
Public Class Methods
errors(all: false, ignore_extra: false, ignore_path: false)
click to toggle source
# File lib/bundle_package_check.rb, line 5 def errors(all: false, ignore_extra: false, ignore_path: false) expected = expected_from_lock(all, ignore_path) actual = Dir["vendor/cache/*"].sort errors = [] errors += (expected - actual).map { |f| "Missing #{f}" } errors += (actual - expected).map { |f| "Unnecessary #{f}" } unless ignore_extra errors end
Private Class Methods
expected_from_lock(all, ignore_path)
click to toggle source
# File lib/bundle_package_check.rb, line 25 def expected_from_lock(all, ignore_path) lock = (File.exist?("gems.locked") ? File.read("gems.locked") : File.read("Gemfile.lock")) path_gems = path_gems(lock) expected = lock.scan(/(?:revision: (\S+)(?:\n .*)*\n specs:\n|^) (\S+) \((\S+)\)/) expected.reject! { |revision, _, _| revision } unless all expected.reject! { |_, name, _| path_gems.include?(name) } if ignore_path expected.map! do |revision, name, version| identifier = (revision ? "-#{revision[0...12]}" : (path_gems.include?(name) ? "" : "-#{version}.gem")) "vendor/cache/#{name}#{identifier}" end.sort! end
path_gems(lock)
click to toggle source
# File lib/bundle_package_check.rb, line 17 def path_gems(lock) if section = lock[PATH_SECTION] section.scan(/^ (\S+)/).flatten else [] end end