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) ⇒ String

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) (defaults to: false) —

    Should we get a pre-release version (adding a unique metadata)?

Returns:

  • (String) —

    The next version



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/sem_ver_components/semver.rb', line 10

def self.next_version_from(version, bump_level, pre_release: false)
  raise "Invalid version: #{version}" unless version =~ /^(\d+)\.(\d+)\.(\d+)$/

  major = Integer(::Regexp.last_match(1))
  minor = Integer(::Regexp.last_match(2))
  patch = Integer(::Regexp.last_match(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}#{"-#{}" if pre_release}"
end

.pre_release_metadata ⇒ String

Get a pre-release metadata to be appended to a version

Returns:

  • (String) —

    The pre-release metadata



49
50
51
# File 'lib/sem_ver_components/semver.rb', line 49

def self.
  "#{`whoami`.strip}-#{Time.now.utc.strftime('%Y%m%d%H%M%S')}-SNAPSHOT"
end

.version_from_git_ref(git_ref) ⇒ String

Get a version from a git ref

Parameters:

  • git_ref (String, nil) —

    The git ref

Returns:

  • (String) —

    Corresponding version



36
37
38
39
40
41
42
43
44
# File 'lib/sem_ver_components/semver.rb', line 36

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