class VersionManager::ReleaseVersion

Attributes

major[R]
minor[R]
parts[R]
patch[R]
special[R]

Public Class Methods

new(*version_input) click to toggle source
# File lib/version-manager/release_version.rb, line 12
def initialize(*version_input)
  version_components = Array(version_input.dup.flatten)
  if version_components.size == 1
    version_components = version_components.first.scan(/(\d+)\.{1}(\d+)\.?(\d*)(?:--(\w+))?/).flatten
    raise ArgumentError, 'Incorrect version format' if version_components.all?(&:nil?) || version_components.empty?
  end
  @major, @minor, @patch = version_components[0..2].map(&:to_i)
  @special = version_components[3]
  recalculate_parts
end
valid?(version) click to toggle source
# File lib/version-manager/release_version.rb, line 59
def self.valid?(version)
  new(version) && true
rescue ArgumentError
  false
end

Public Instance Methods

-(other) click to toggle source
# File lib/version-manager/release_version.rb, line 38
def -(other)
  self.class.new(parts.zip(other.parts).map { |x, y| x - y })
end
<=>(other) click to toggle source
# File lib/version-manager/release_version.rb, line 32
def <=>(other)
  parts.zip(other.parts)
       .map { |this, other_part| this <=> other_part }
       .find { |res| res != 0 } || 0
end
bump(release_type) click to toggle source
# File lib/version-manager/release_version.rb, line 42
def bump(release_type)
  raise ArgumentError, 'Unknown release type' unless %i(major minor patch).include?(release_type.to_sym)
  public_send("bump_#{release_type}")
end
bump_major() click to toggle source
# File lib/version-manager/release_version.rb, line 47
def bump_major
  self.class.new(@major + 1, 0, 0)
end
bump_minor() click to toggle source
# File lib/version-manager/release_version.rb, line 51
def bump_minor
  self.class.new(@major, @minor + 1, 0)
end
bump_patch() click to toggle source
# File lib/version-manager/release_version.rb, line 55
def bump_patch
  self.class.new(@major, @minor, @patch + 1)
end
short_version() click to toggle source
# File lib/version-manager/release_version.rb, line 28
def short_version
  [major, minor].map(&:to_i).join('.')
end
to_s() click to toggle source
# File lib/version-manager/release_version.rb, line 23
def to_s
  res = parts.map(&:to_i).join('.')
  [res, special].compact.join('--')
end

Private Instance Methods

recalculate_parts() click to toggle source
# File lib/version-manager/release_version.rb, line 69
def recalculate_parts
  @parts = [major, minor, patch].map(&:to_i)
  self
end