Class: Lapidarist::Gem

Inherits:
Object
  • Object
show all
Defined in:
lib/lapidarist/gem.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, position: nil, newest_version:, installed_version:, groups: [], attempts: {}) ⇒ Gem

Returns a new instance of Gem.



26
27
28
29
30
31
32
33
# 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

Instance Attribute Details

#attemptsObject (readonly)

Returns the value of attribute attempts.



24
25
26
# File 'lib/lapidarist/gem.rb', line 24

def attempts
  @attempts
end

#installed_versionObject (readonly)

Returns the value of attribute installed_version.



24
25
26
# File 'lib/lapidarist/gem.rb', line 24

def installed_version
  @installed_version
end

#nameObject (readonly)

Returns the value of attribute name.



24
25
26
# File 'lib/lapidarist/gem.rb', line 24

def name
  @name
end

#newest_versionObject (readonly)

Returns the value of attribute newest_version.



24
25
26
# File 'lib/lapidarist/gem.rb', line 24

def newest_version
  @newest_version
end

#positionObject (readonly)

Returns the value of attribute position.



24
25
26
# File 'lib/lapidarist/gem.rb', line 24

def position
  @position
end

Class Method Details

.from(gem, position: nil, attempt: 0, status: nil, reason: nil, updated_version: nil) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 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

Instance Method Details

#==(other_gem) ⇒ Object



58
59
60
61
62
63
64
# 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?Boolean

Returns:

  • (Boolean)


106
107
108
# File 'lib/lapidarist/gem.rb', line 106

def available_update_levels?
  failed? && !version_change.next_level.nil?
end

#current_statusObject



74
75
76
# File 'lib/lapidarist/gem.rb', line 74

def current_status
  latest_attempt&.status
end

#dependency?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/lapidarist/gem.rb', line 70

def dependency?
  groups.any?
end

#failed?Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/lapidarist/gem.rb', line 82

def failed?
  current_status == :failed
end

#groupsObject



66
67
68
# File 'lib/lapidarist/gem.rb', line 66

def groups
  @groups.sort
end

#latest_attemptObject



127
128
129
# File 'lib/lapidarist/gem.rb', line 127

def latest_attempt
  @latest_attempt ||= attempts[latest_attempt_number] || NullAttempt.new
end

#latest_attempt_numberObject



123
124
125
# File 'lib/lapidarist/gem.rb', line 123

def latest_attempt_number
  @latest_attempt_number ||= attempts.keys.last
end

#log_sObject



114
115
116
117
118
119
120
121
# 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_levelObject



110
111
112
# File 'lib/lapidarist/gem.rb', line 110

def next_semver_level
  version_change.next_level
end

#outdated?(recursive: false) ⇒ Boolean

Returns:

  • (Boolean)


78
79
80
# File 'lib/lapidarist/gem.rb', line 78

def outdated?(recursive: false)
  current_status.nil? || (recursive && available_update_levels?)
end

#skip?Boolean

Returns:

  • (Boolean)


86
87
88
# File 'lib/lapidarist/gem.rb', line 86

def skip?
  current_status == :skipped
end

#updated?Boolean

Returns:

  • (Boolean)


90
91
92
# File 'lib/lapidarist/gem.rb', line 90

def updated?
  current_status == :updated
end

#updated_versionObject



94
95
96
# File 'lib/lapidarist/gem.rb', line 94

def updated_version
  updated_attempt&.version
end

#what_changedObject



98
99
100
101
102
103
104
# 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