Module: Builderator::Control::Version::Bump

Included in:
Builderator::Control::Version
Defined in:
lib/builderator/control/version/bump.rb

Overview

Increment version’s parameters by specified steps

Included in Version

Instance Method Summary collapse

Instance Method Details

#bump(type = 'auto', prerelease_name = nil) ⇒ Object

rubocop:disable Metrics/PerceivedComplexity



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/builderator/control/version/bump.rb', line 10

def bump(type = 'auto', prerelease_name = nil) # rubocop:disable Metrics/PerceivedComplexity
  ## Grok commits since current for a #TYPE string
  type, prerelease_name = auto_type if type.to_s == 'auto'

  fail "Unrecognized release type #{type}" unless RELEASE_TYPES.include?(type.to_s)
  type_num = RELEASE_TYPES[type.to_s]

  ##
  # Reset lower-precendence parameters to nil/0
  ##
  self.build = nil if type_num < RELEASE_TYPES['build']

  ## Clear pre-release flags
  if type_num < RELEASE_TYPES['prerelease']
    self.is_prerelease = false
    self.prerelease_name = nil
    self.prerelease_iteration = nil
  end

  self.patch = 0 if type_num < RELEASE_TYPES['patch']
  self.minor = 0 if type_num < RELEASE_TYPES['minor']
  self.major = 0 if type_num < RELEASE_TYPES['major']

  ## Set new version's ref
  self.ref = SCM.history.first.id

  ##
  # Increment specified parameters
  ##
  case type.to_s
  when 'build'
    if build.nil?
      self.build = 0
    else
      self.build += 1
    end

  when 'prerelease'
    ## Start a prerelease train from a new patch version
    ## if it doesn't already exist
    self.patch += 1 unless is_prerelease
    prerelease(prerelease_name)

  when 'release'
    ## Remove pre-release parameters from the current patch
    ## (already done above ^^)

  when 'patch-prerelease'
    ## Force a new pre-release train from a new patch version
    self.patch += 1
    prerelease(prerelease_name)

  when 'patch' then self.patch += 1

  when 'minor-prerelease'
    self.minor += 1
    prerelease(prerelease_name)

  when 'minor' then self.minor += 1

  when 'major-prerelease'
    self.major += 1
    prerelease(prerelease_name)

  when 'major' then self.major += 1
  end

  self
end