Module: SemVerComponents::Semver

Defined in:
lib/sem_ver_components/semver.rb

Overview

Helpers giving ways to adapt to semantic versioning conventions

Class Method Summary collapse

Class Method Details

.next_version_from(version, bump_level, pre_release: false) ⇒ Object

Compute next version from an existing one and a bump level

Parameters
  • version (String): Existing version

  • bump_level (Integer): The bump level (0: patch, 1: minor, 2: major)

  • pre_release (Boolean): Should we get a pre-release version (adding a unique metadata)? [default: false]

Result
  • String: The next version



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/sem_ver_components/semver.rb', line 14

def self.next_version_from(version, bump_level, pre_release: false)
  if version =~ /^(\d+)\.(\d+)\.(\d+)$/
    major = Integer($1)
    minor = Integer($2)
    patch = Integer($3)
    case bump_level
    when 0
      patch += 1
    when 1
      minor += 1
      patch = 0
    when 2
      major += 1
      minor = 0
      patch = 0
    else
      raise "Invalid bump level: #{bump_level}"
    end
    "#{major}.#{minor}.#{patch}#{pre_release ? "-#{}" : ''}"
  else
    raise "Invalid version: #{version}"
  end
end

.version_from_git_ref(git_ref) ⇒ Object

Get a version from a git ref

Parameters
  • git_ref (String): The git ref

Result
  • String: Corresponding version



44
45
46
47
48
49
50
51
52
# File 'lib/sem_ver_components/semver.rb', line 44

def self.version_from_git_ref(git_ref)
  if git_ref.nil?
    '0.0.0'
  elsif git_ref =~ /^v(\d+\.\d+\.\d+)$/
    $1
  else
    raise "Can't assume version from git ref: #{git_ref}"
  end
end