class RenuoVersion

Constants

SEGMENTS
SEMVER_SCHEMA

Attributes

segments[R]

Public Class Methods

create(str) click to toggle source
# File lib/renuo/cli/app/renuo_version.rb, line 7
def self.create(str)
  raise "Invalid segments (#{str} =~ #{SEMVER_SCHEMA})" unless SEMVER_SCHEMA.match?(str)

  new(*str.split("."))
end
new(major, minor, patch, prerelease = nil) click to toggle source
# File lib/renuo/cli/app/renuo_version.rb, line 15
def initialize(major, minor, patch, prerelease = nil)
  @segments = [major, minor, patch].map(&:to_i)
  @segments.push(prerelease.to_s) if prerelease
end

Public Instance Methods

bump(segment) click to toggle source
# File lib/renuo/cli/app/renuo_version.rb, line 20
def bump(segment)
  raise "Invalid segment #{segment} (must be one of #{SEGMENTS})" unless SEGMENTS.include?(segment)

  send(:"bump_#{segment}")
  self
end
prerelease?() click to toggle source

Returns true if it’s a release candidate (e.g. 3.0.0.rc4)

# File lib/renuo/cli/app/renuo_version.rb, line 28
def prerelease?
  @segments.length > 3
end
to_s() click to toggle source
# File lib/renuo/cli/app/renuo_version.rb, line 32
def to_s
  @segments.join(".")
end

Private Instance Methods

bump_major() click to toggle source
# File lib/renuo/cli/app/renuo_version.rb, line 38
def bump_major
  @segments = [@segments[0] + 1, 0, 0]
end
bump_minor() click to toggle source
# File lib/renuo/cli/app/renuo_version.rb, line 42
def bump_minor
  @segments = [@segments[0], @segments[1] + 1, 0]
end
bump_patch() click to toggle source
# File lib/renuo/cli/app/renuo_version.rb, line 46
def bump_patch
  if prerelease?
    old_number = @segments[3][/\d+/]
    @segments[3] = @segments[3].gsub(old_number, (old_number.to_i + 1).to_s)
  else # default patch
    @segments = [*@segments[0..1], @segments[2] + 1]
  end
end