Module: Kdep::VersionTagger

Defined in:
lib/kdep/version_tagger.rb

Class Method Summary collapse

Class Method Details

.next_tag(tags) ⇒ Object

Given a list of tag strings, finds the highest version and returns the next version string with minor incremented by 1. Returns “0.1” when no valid version tags exist.



19
20
21
22
23
24
25
# File 'lib/kdep/version_tagger.rb', line 19

def self.next_tag(tags)
  versions = tags.map { |t| parse(t) }.compact
  return "0.1" if versions.empty?

  highest = versions.sort_by { |major, minor| [major, minor] }.last
  "#{highest[0]}.#{highest[1] + 1}"
end

.parse(tag) ⇒ Object

Parses a “major.minor” version string into [Integer, Integer]. Returns nil for invalid or non-version strings.



5
6
7
8
9
10
11
12
13
14
# File 'lib/kdep/version_tagger.rb', line 5

def self.parse(tag)
  parts = tag.split(".", 2)
  return nil unless parts.length == 2

  major = Integer(parts[0]) rescue nil
  minor = Integer(parts[1]) rescue nil
  return nil unless major && minor

  [major, minor]
end