Module: PrereleaseHandler

Included in:
Describe
Defined in:
lib/get/subcommand/describe/prerelease.rb

Overview

Module with methods for managing prerelease updates.

Constant Summary collapse

FIRST_PRERELEASE =
1
DEFAULT_PRERELEASE_STRING =
'dev'
PRERELEASE_PLACEHOLDER =
'(p)'
@@prerelease_pattern =
"#{DEFAULT_PRERELEASE_STRING}#{PRERELEASE_PLACEHOLDER}"
@@old_prerelease_pattern =
proc { @@prerelease_pattern }

Class Method Summary collapse

Class Method Details

.compute_prerelease(current_prerelease, need_reset: false) ⇒ Object



51
52
53
54
# File 'lib/get/subcommand/describe/prerelease.rb', line 51

def compute_prerelease(current_prerelease, need_reset: false)
  new_prerelease = (need_reset ? FIRST_PRERELEASE : (extract_prerelease_number(current_prerelease) + 1)).to_s
  @@prerelease_pattern.sub(PRERELEASE_PLACEHOLDER, new_prerelease)
end

.extract_prerelease_number(current_prerelease) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/get/subcommand/describe/prerelease.rb', line 31

def extract_prerelease_number(current_prerelease)
  actual_old_prerelease_pattern =
    if @@old_prerelease_pattern.respond_to?('call')
      @@old_prerelease_pattern.call
    else
      @@old_prerelease_pattern
    end
  Common.error "The given old pattern does not contains the placeholder '(p)'" unless
    actual_old_prerelease_pattern.include?(PRERELEASE_PLACEHOLDER)
  old_prerelease_regex = actual_old_prerelease_pattern.sub(PRERELEASE_PLACEHOLDER, '(\\d+)')
  begin
    Regexp.new(old_prerelease_regex).match(current_prerelease)[1].to_i
  rescue NoMethodError
    Common.error "The given old prerelease pattern '#{actual_old_prerelease_pattern}' " \
                 "does not match the analyzed prerelease: '#{current_prerelease}'."
  end
end