Class: GemMaintainer::SemverFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/gem_maintainer/semver_filter.rb

Overview

Filters gem candidates by semver bump type. level: :patch → only patch bumps (x.y.Z)

:minor  → only minor bumps (x.Y.z)
:all    → everything including major

Constant Summary collapse

BUMP_RANK =
{ patch: 0, minor: 1, major: 2 }.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(candidates) ⇒ SemverFilter

Returns a new instance of SemverFilter.



9
10
11
# File 'lib/gem_maintainer/semver_filter.rb', line 9

def initialize(candidates)
  @candidates = candidates
end

Class Method Details

.bump_type(current, latest) ⇒ Object

Returns :patch, :minor, or :major



24
25
26
# File 'lib/gem_maintainer/semver_filter.rb', line 24

def self.bump_type(current, latest)
  new(nil).bump_type(current, latest)
end

Instance Method Details

#bump_type(current, latest) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/gem_maintainer/semver_filter.rb', line 28

def bump_type(current, latest)
  cur = version_parts(current)
  lat = version_parts(latest)

  if lat[0] != cur[0]
    :major
  elsif lat[1] != cur[1]
    :minor
  else
    :patch
  end
end

#filter(level) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/gem_maintainer/semver_filter.rb', line 15

def filter(level)
  return @candidates if level == :all

  @candidates.select do |gem|
    bump_type(gem[:current], gem[:latest]) == level
  end
end