version_utils 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7b159b30245012b187e4661aed1c74409d08625acd84b1b828821a2bd89c5579
4
+ data.tar.gz: 34834acbaf68db94bacb66103605363069d5cdbf6747e9f18131ad50994da0c9
5
+ SHA512:
6
+ metadata.gz: e9c2ab7546d56cc44cccb9e2803d0cf956169fc02fe02a118eb8d6bad7b4dd53edef89c591a6da417817d49f39824f5e4a74520d7090a76279e4602c35d162c7
7
+ data.tar.gz: c4efd4605805567075f73dc33b8a27af1f9e9cea98f89d62414be4923f68a59d8329b0e3561009bee22f1ab1b14a808807bc2685c86823f821b6bb47914ac0d2
@@ -0,0 +1,79 @@
1
+ module VersionUtils
2
+
3
+
4
+ def self.compare(v1, v2)
5
+
6
+ v1 = self.parse(v1)
7
+ v2 = self.parse(v2)
8
+
9
+ compare_major = self.compare_segment(v1[:major], v2[:major])
10
+ if compare_major != 0
11
+ return compare_major
12
+ end
13
+
14
+ compare_minor = self.compare_segment(v1[:minor], v2[:minor])
15
+ if compare_minor != 0
16
+ return compare_minor
17
+ end
18
+
19
+ compare_patch = self.compare_segment(v1[:patch], v2[:patch])
20
+ if compare_patch != 0
21
+ return compare_patch
22
+ end
23
+
24
+ return self.compare_pre_releae(v1[:pre_release], v2[:pre_release])
25
+
26
+ end
27
+
28
+ def self.compare_segment(s1, s2)
29
+ if s1 == nil
30
+ return -1
31
+ end
32
+
33
+ if s2 == nil
34
+ return 1
35
+ end
36
+
37
+ if s1 == s2
38
+ return 0
39
+ end
40
+
41
+ if s1 < s2
42
+ return -1
43
+ end
44
+
45
+ if s1 > s2
46
+ return 1
47
+ end
48
+ end
49
+
50
+ def self.compare_pre_releae(pr1, pr2)
51
+
52
+ if pr1 == nil && pr2 == nil
53
+ return 0
54
+ end
55
+
56
+ if pr1 == nil && pr2 != nil
57
+ return 1
58
+ end
59
+
60
+ if pr1 != nil && pr2 == nil
61
+ return -1
62
+ end
63
+
64
+ pr1 = pr1.gsub(".", "")
65
+ pr2 = pr2.gsub(".", "")
66
+
67
+ if pr1 == pr2
68
+ return 0
69
+ end
70
+
71
+ if pr1 > pr2
72
+ return 1
73
+ end
74
+
75
+ if pr1 < pr2
76
+ return -1
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,26 @@
1
+ module VersionUtils
2
+ def self.format(parts)
3
+ version = []
4
+ version = version + [parts[:major]]
5
+
6
+ if parts[:minor] != nil
7
+ version = version + [parts[:minor]]
8
+ end
9
+
10
+ if parts[:patch] != nil
11
+ version = version + [parts[:patch]]
12
+ end
13
+
14
+ version = version.join(".")
15
+
16
+ if parts[:pre_release] != nil
17
+ version = version + "-" + parts[:pre_release]
18
+ end
19
+
20
+ if parts[:metadata] != nil
21
+ version = version + "+" + parts[:metadata]
22
+ end
23
+
24
+ return version.force_encoding("utf-8")
25
+ end
26
+ end
@@ -0,0 +1,71 @@
1
+ module VersionUtils
2
+ def self.upgrade_major(
3
+ version,
4
+ update_build_version: false)
5
+
6
+ version = self.parse(version)
7
+
8
+ version[:major] += 1
9
+
10
+ if version[:minor] != nil
11
+ version[:minor] = 0
12
+ end
13
+
14
+ version = self.update_patch(version)
15
+ version = self.update_pre_release(version)
16
+ version = self.update_metadata(version, update_build_version)
17
+
18
+ return self.format(version)
19
+ end
20
+
21
+ def self.upgrade_minor(
22
+ version,
23
+ update_build_version: false)
24
+ version = self.parse(version)
25
+
26
+ version[:minor] += 1
27
+
28
+ version = self.update_patch(version)
29
+ version = self.update_pre_release(version)
30
+ version = self.update_metadata(version, update_build_version)
31
+ return self.format(version)
32
+ end
33
+
34
+ def self.upgrade_patch(
35
+ version,
36
+ update_build_version: false)
37
+ version = self.parse(version)
38
+
39
+ version[:patch] += 1
40
+
41
+ version = self.update_pre_release(version)
42
+ version = self.update_metadata(version, update_build_version)
43
+ return self.format(version)
44
+ end
45
+
46
+ def self.update_patch(version)
47
+ if version[:patch] != nil
48
+ version[:patch] = 0
49
+ end
50
+ return version
51
+ end
52
+
53
+ def self.update_pre_release(version)
54
+ version[:pre_release] = nil
55
+ return version
56
+ end
57
+
58
+ def self.update_metadata(version, update_build_version)
59
+ if update_build_version
60
+ begin
61
+ build_version = Integer(version[:metadata])
62
+ version[:metadata] = (build_version + 1).to_s
63
+ rescue
64
+ version[:metadata] = nil
65
+ end
66
+ else
67
+ version[:metadata] = nil
68
+ end
69
+ return version
70
+ end
71
+ end
@@ -0,0 +1,38 @@
1
+ module VersionUtils
2
+ def self.parse(version)
3
+
4
+ result = {}
5
+
6
+ if version.split("+").length > 1
7
+ metadata = version.split("+")[1]
8
+ result[:metadata] = metadata
9
+ version = version.split("+")[0]
10
+ end
11
+
12
+ if version.split("-").length > 1
13
+ part_post_segments = version.split("-")[1]
14
+ pre_release = part_post_segments.split("+")[0]
15
+ result[:pre_release] = pre_release
16
+ version = version.split("-")[0]
17
+
18
+ end
19
+
20
+ segments = version.split(".")
21
+
22
+ result[:major] = Integer(segments[0])
23
+
24
+ if segments.length > 1
25
+ result[:minor] = Integer(segments[1])
26
+ else
27
+ result[:minor] = nil
28
+ end
29
+
30
+ if segments.length > 2
31
+ result[:patch] = Integer(segments[2])
32
+ else
33
+ result[:patch] = nil
34
+ end
35
+
36
+ return result
37
+ end
38
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'version_compare'
2
+ require_relative 'version_parse'
3
+ require_relative 'version_format'
4
+ require_relative 'version_manipulation'
5
+
6
+ module VersionUtils
7
+
8
+ end
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: version_utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jesus Serrano
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ - dev@onepointzero.org
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/version_compare.rb
21
+ - lib/version_format.rb
22
+ - lib/version_manipulation.rb
23
+ - lib/version_parse.rb
24
+ - lib/version_utils.rb
25
+ homepage: https://github.com/Tyrbok/version_utils
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubygems_version: 3.0.8
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: Utils for version-strings manipulation
48
+ test_files: []