class Safedep::Runner
Constants
- GEMFILE_LOCK_PATH
- GEMFILE_PATH
Attributes
configuration[R]
Public Class Methods
new(configuration = Configuration.new)
click to toggle source
# File lib/safedep/runner.rb, line 14 def initialize(configuration = Configuration.new) @configuration = configuration end
Public Instance Methods
check_file_existence!(path, additional_message = nil)
click to toggle source
# File lib/safedep/runner.rb, line 71 def check_file_existence!(path, additional_message = nil) return if File.exist?(path) message = "#{path} is not found." message << ' ' + additional_message if additional_message raise Error, message end
dependencies()
click to toggle source
# File lib/safedep/runner.rb, line 42 def dependencies @dependencies ||= gemfiles.map(&:dependencies).reduce(:+) end
gemfile()
click to toggle source
# File lib/safedep/runner.rb, line 57 def gemfile @gemfile ||= begin check_file_existence!(GEMFILE_PATH) Gemologist::Gemfile.new(GEMFILE_PATH) end end
gemfile_lock()
click to toggle source
# File lib/safedep/runner.rb, line 64 def gemfile_lock @gemfile_lock ||= begin check_file_existence!(GEMFILE_LOCK_PATH, 'Please run `bundle install`.') Safedep::GemfileLock.new(GEMFILE_LOCK_PATH) end end
gemfiles()
click to toggle source
# File lib/safedep/runner.rb, line 46 def gemfiles @gemfiles ||= [gemspec, gemfile].compact end
gemspec()
click to toggle source
# File lib/safedep/runner.rb, line 50 def gemspec @gemspec ||= begin path = Dir['*.gemspec'].first Gemologist::Gemspec.new(path) if path end end
run()
click to toggle source
# File lib/safedep/runner.rb, line 18 def run validate! dependencies.each do |dep| next if should_ignore?(dep) lockfile_dep = gemfile_lock.find_dependency(dep.name) unless lockfile_dep raise Error, "#{dep.name.inspect} definition is not found in #{gemfile_lock.path}. " \ 'Please run `bundle install`.' end dep.version_specifiers = version_specifiers(lockfile_dep.version) end gemfiles.each(&:save) end
should_ignore?(dependency)
click to toggle source
# File lib/safedep/runner.rb, line 78 def should_ignore?(dependency) return true unless dependency.version_specifiers.empty? return true unless (dependency.groups & configuration.skipped_groups).empty? %i[git github path].any? { |key| dependency.options[key] } end
validate!()
click to toggle source
# File lib/safedep/runner.rb, line 37 def validate! gemfile_lock gemfile end
version_specifiers(version)
click to toggle source
# File lib/safedep/runner.rb, line 84 def version_specifiers(version) Policy::SemVer.version_specifiers(version) end