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