Class: GemCheckUpdates::Gem

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

Constant Summary collapse

DEFAULT_SCOPE =
GemCheckUpdates::VersionScope::MAJOR

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name: nil, current_version: nil, versions: [], version_range: nil, update_scope: DEFAULT_SCOPE) ⇒ Gem

Returns a new instance of Gem.



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/gem_check_updates/gem.rb', line 12

def initialize(name: nil,
               current_version: nil,
               versions: [],
               version_range: nil,
               update_scope: DEFAULT_SCOPE)
  @name = name
  @current_version = current_version
  @versions = versions
  @version_range = version_range
  @update_scope = update_scope
end

Instance Attribute Details

#current_versionObject

Returns the value of attribute current_version.



8
9
10
# File 'lib/gem_check_updates/gem.rb', line 8

def current_version
  @current_version
end

#nameObject

Returns the value of attribute name.



7
8
9
# File 'lib/gem_check_updates/gem.rb', line 7

def name
  @name
end

#version_rangeObject

Returns the value of attribute version_range.



10
11
12
# File 'lib/gem_check_updates/gem.rb', line 10

def version_range
  @version_range
end

#versionsObject

Returns the value of attribute versions.



9
10
11
# File 'lib/gem_check_updates/gem.rb', line 9

def versions
  @versions
end

Instance Method Details

#highlighted_latest_versionObject



50
51
52
53
54
55
56
# File 'lib/gem_check_updates/gem.rb', line 50

def highlighted_latest_version
  major = @current_version.major == latest_version.major ? latest_version.major : latest_version.major.green
  minor = @current_version.minor == latest_version.minor ? latest_version.minor : latest_version.minor.green
  patch = @current_version.patch == latest_version.patch ? latest_version.patch : latest_version.patch.green

  [major, minor, patch].join('.')
end

#latest_versionObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/gem_check_updates/gem.rb', line 31

def latest_version
  # Ignore pre release version (ex. beta, rc), and sort desc
  versions = @versions.reject(&:pre_release)
                      .sort_by { |v| [v.major, v.minor, v.patch] }
                      .reverse

  case @update_scope
  when GemCheckUpdates::VersionScope::MINOR
    versions.select { |v| v.major == @current_version.major }.first
  when GemCheckUpdates::VersionScope::PATCH
    versions.select do |v|
      v.major == @current_version.major && v.minor == @current_version.minor
    end.first
  else
    # This branch is equal to specifying major updates
    versions.first
  end
end

#update_available?Boolean

Returns:

  • (Boolean)


24
25
26
27
28
29
# File 'lib/gem_check_updates/gem.rb', line 24

def update_available?
  !latest_version.nil? &&
    !@current_version.nil? &&
    @current_version.version_specified? &&
    latest_version > @current_version
end