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
-
.next_version_from(version, bump_level, pre_release: false) ⇒ String
Compute next version from an existing one and a bump level.
-
.pre_release_metadata ⇒ String
Get a pre-release metadata to be appended to a version.
-
.version_from_git_ref(git_ref) ⇒ String
Get a version from a git ref.
Class Method Details
.next_version_from(version, bump_level, pre_release: false) ⇒ String
Compute next version from an existing one and a bump level
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
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
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 |