Module: VersionUtils
- Defined in:
- lib/version_parse.rb,
lib/version_utils.rb,
lib/version_format.rb,
lib/version_compare.rb,
lib/version_manipulation.rb
Class Method Summary collapse
- .compare(v1, v2) ⇒ Object
- .compare_pre_releae(pr1, pr2) ⇒ Object
- .compare_segment(s1, s2) ⇒ Object
- .format(parts) ⇒ Object
- .parse(version) ⇒ Object
- .update_metadata(version, update_build_version) ⇒ Object
- .update_patch(version) ⇒ Object
- .update_pre_release(version) ⇒ Object
- .upgrade_major(version, update_build_version: false) ⇒ Object
- .upgrade_minor(version, update_build_version: false) ⇒ Object
- .upgrade_patch(version, update_build_version: false) ⇒ Object
Class Method Details
.compare(v1, v2) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/version_compare.rb', line 4 def self.compare(v1, v2) v1 = self.parse(v1) v2 = self.parse(v2) compare_major = self.compare_segment(v1[:major], v2[:major]) if compare_major != 0 return compare_major end compare_minor = self.compare_segment(v1[:minor], v2[:minor]) if compare_minor != 0 return compare_minor end compare_patch = self.compare_segment(v1[:patch], v2[:patch]) if compare_patch != 0 return compare_patch end return self.compare_pre_releae(v1[:pre_release], v2[:pre_release]) end |
.compare_pre_releae(pr1, pr2) ⇒ Object
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/version_compare.rb', line 50 def self.compare_pre_releae(pr1, pr2) if pr1 == nil && pr2 == nil return 0 end if pr1 == nil && pr2 != nil return 1 end if pr1 != nil && pr2 == nil return -1 end pr1 = pr1.gsub(".", "") pr2 = pr2.gsub(".", "") if pr1 == pr2 return 0 end if pr1 > pr2 return 1 end if pr1 < pr2 return -1 end end |
.compare_segment(s1, s2) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/version_compare.rb', line 28 def self.compare_segment(s1, s2) if s1 == nil return -1 end if s2 == nil return 1 end if s1 == s2 return 0 end if s1 < s2 return -1 end if s1 > s2 return 1 end end |
.format(parts) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/version_format.rb', line 2 def self.format(parts) version = [] version = version + [parts[:major]] if parts[:minor] != nil version = version + [parts[:minor]] end if parts[:patch] != nil version = version + [parts[:patch]] end version = version.join(".") if parts[:pre_release] != nil version = version + "-" + parts[:pre_release] end if parts[:metadata] != nil version = version + "+" + parts[:metadata] end return version.force_encoding("utf-8") end |
.parse(version) ⇒ Object
2 3 4 5 6 7 8 9 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 |
# File 'lib/version_parse.rb', line 2 def self.parse(version) result = {} if version.split("+").length > 1 = version.split("+")[1] result[:metadata] = version = version.split("+")[0] end if version.split("-").length > 1 part_post_segments = version.split("-")[1] pre_release = part_post_segments.split("+")[0] result[:pre_release] = pre_release version = version.split("-")[0] end segments = version.split(".") result[:major] = Integer(segments[0]) if segments.length > 1 result[:minor] = Integer(segments[1]) else result[:minor] = nil end if segments.length > 2 result[:patch] = Integer(segments[2]) else result[:patch] = nil end return result end |
.update_metadata(version, update_build_version) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/version_manipulation.rb', line 58 def self.(version, update_build_version) if update_build_version begin build_version = Integer(version[:metadata]) version[:metadata] = (build_version + 1).to_s rescue version[:metadata] = nil end else version[:metadata] = nil end return version end |
.update_patch(version) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/version_manipulation.rb', line 46 def self.update_patch(version) if version[:patch] != nil version[:patch] = 0 end return version end |
.update_pre_release(version) ⇒ Object
53 54 55 56 |
# File 'lib/version_manipulation.rb', line 53 def self.update_pre_release(version) version[:pre_release] = nil return version end |
.upgrade_major(version, update_build_version: false) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/version_manipulation.rb', line 2 def self.upgrade_major( version, update_build_version: false) version = self.parse(version) version[:major] += 1 if version[:minor] != nil version[:minor] = 0 end version = self.update_patch(version) version = self.update_pre_release(version) version = self.(version, update_build_version) return self.format(version) end |
.upgrade_minor(version, update_build_version: false) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/version_manipulation.rb', line 21 def self.upgrade_minor( version, update_build_version: false) version = self.parse(version) version[:minor] += 1 version = self.update_patch(version) version = self.update_pre_release(version) version = self.(version, update_build_version) return self.format(version) end |
.upgrade_patch(version, update_build_version: false) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/version_manipulation.rb', line 34 def self.upgrade_patch( version, update_build_version: false) version = self.parse(version) version[:patch] += 1 version = self.update_pre_release(version) version = self.(version, update_build_version) return self.format(version) end |