class Lapidarist::Gem

Attributes

attempts[R]
installed_version[R]
name[R]
newest_version[R]
position[R]

Public Class Methods

from(gem, position: nil, attempt: 0, status: nil, reason: nil, updated_version: nil) click to toggle source
# File lib/lapidarist/gem.rb, line 35
def self.from(gem, position: nil, attempt: 0, status: nil, reason: nil, updated_version: nil)
  attempts = gem.attempts

  if status
    attempts = attempts.merge(
      attempt => Attempt.new(
        status: status,
        reason: reason,
        version: updated_version
      )
    )
  end

  new(
    name: gem.name,
    position: position || gem.position,
    newest_version: gem.newest_version,
    installed_version: gem.installed_version,
    groups: gem.groups,
    attempts: attempts
  )
end
new(name:, position: nil, newest_version:, installed_version:, groups: [], attempts: {}) click to toggle source
# File lib/lapidarist/gem.rb, line 26
def initialize(name:, position: nil, newest_version:, installed_version:, groups: [], attempts: {})
  @name = name
  @position = position
  @newest_version = newest_version
  @installed_version = installed_version
  @groups = groups
  @attempts = attempts
end

Public Instance Methods

==(other_gem) click to toggle source
# File lib/lapidarist/gem.rb, line 58
def ==(other_gem)
  current_status == other_gem.current_status &&
    name == other_gem.name &&
    installed_version == other_gem.installed_version &&
    newest_version == other_gem.newest_version &&
    groups == other_gem.groups
end
available_update_levels?() click to toggle source
# File lib/lapidarist/gem.rb, line 106
def available_update_levels?
  failed? && !version_change.next_level.nil?
end
current_status() click to toggle source
# File lib/lapidarist/gem.rb, line 74
def current_status
  latest_attempt&.status
end
dependency?() click to toggle source
# File lib/lapidarist/gem.rb, line 70
def dependency?
  groups.any?
end
failed?() click to toggle source
# File lib/lapidarist/gem.rb, line 82
def failed?
  current_status == :failed
end
groups() click to toggle source
# File lib/lapidarist/gem.rb, line 66
def groups
  @groups.sort
end
latest_attempt() click to toggle source
# File lib/lapidarist/gem.rb, line 127
def latest_attempt
  @latest_attempt ||= attempts[latest_attempt_number] || NullAttempt.new
end
latest_attempt_number() click to toggle source
# File lib/lapidarist/gem.rb, line 123
def latest_attempt_number
  @latest_attempt_number ||= attempts.keys.last
end
log_s() click to toggle source
# File lib/lapidarist/gem.rb, line 114
def log_s
  [
    "outdated gem: #{name}",
    "installed: #{installed_version}",
    "newest: #{newest_version}",
    "updated: #{updated_version}"
  ].join(', ')
end
next_semver_level() click to toggle source
# File lib/lapidarist/gem.rb, line 110
def next_semver_level
  version_change.next_level
end
outdated?(recursive: false) click to toggle source
# File lib/lapidarist/gem.rb, line 78
def outdated?(recursive: false)
  current_status.nil? || (recursive && available_update_levels?)
end
skip?() click to toggle source
# File lib/lapidarist/gem.rb, line 86
def skip?
  current_status == :skipped
end
updated?() click to toggle source
# File lib/lapidarist/gem.rb, line 90
def updated?
  current_status == :updated
end
updated_version() click to toggle source
# File lib/lapidarist/gem.rb, line 94
def updated_version
  updated_attempt&.version
end
what_changed() click to toggle source
# File lib/lapidarist/gem.rb, line 98
def what_changed
  if version_changed?
    "#{name} from #{installed_version} to #{updated_version}"
  else
    "#{name} dependencies"
  end
end

Private Instance Methods

updated_attempt() click to toggle source
# File lib/lapidarist/gem.rb, line 137
def updated_attempt
  @updated_attempt ||= attempts.values.detect(&:updated?)
end
version_change() click to toggle source
# File lib/lapidarist/gem.rb, line 141
def version_change
  @version_change ||= Lapidarist::VersionChange.new(
    installed: installed_version,
    updated: latest_attempt&.version
  )
end
version_changed?() click to toggle source
# File lib/lapidarist/gem.rb, line 133
def version_changed?
  updated_version && installed_version != updated_version
end