gitlab-releases 0.2.3 → 0.2.5
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +1 -1
- data/README.md +17 -7
- data/lib/gitlab_releases/date_calculator.rb +1 -21
- data/lib/gitlab_releases/release_versions.rb +43 -2
- data/lib/gitlab_releases/version.rb +1 -1
- data/lib/gitlab_releases.rb +8 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ee5944be724a7bf016c25ee0f56e31c4b270b8c812a9ce51abd87249aa4f587
|
4
|
+
data.tar.gz: 4c66c8ba98397bc550b4d0e80294805db8f15a8e97dfab6395de7c289a453ace
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a01deb7460c318184f6f60c1ddfa63dd6cb69ea58055d3f30122701274ab3fa7d1fda235e84382be833a093e5fdecb951575cd29110f4113475179609be77fac
|
7
|
+
data.tar.gz: a91fad2b0ae7d3b341c3d536afa2ba05c095fbe9b4d6fc334f0a9aba839d03816e451016aebf7241841c04c8033fcd4f74d0307cf2e7676cc3cd4a68aa119eb7
|
data/CHANGELOG.md
CHANGED
@@ -32,3 +32,11 @@
|
|
32
32
|
## [0.2.3] - 2023-10-11
|
33
33
|
|
34
34
|
- Update ActiveSupport gem and loosen version restriction
|
35
|
+
|
36
|
+
## [0.2.4] - 2023-11-03
|
37
|
+
|
38
|
+
- Remove logic for static release date. All release dates will be calculated based on the third Thursday of the month.
|
39
|
+
|
40
|
+
## [0.2.5] - 2023-11-23
|
41
|
+
|
42
|
+
- Add methods to calculate the current version of a given date (`#current_minor_for_date`) and the previous minors for a specific version (`#previous_minors`)
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -12,7 +12,7 @@ Library to interact with GitLab releases and versions. The information is fetche
|
|
12
12
|
Gemfile:
|
13
13
|
|
14
14
|
```
|
15
|
-
gem 'gitlab-releases', '~> 0.2.
|
15
|
+
gem 'gitlab-releases', '~> 0.2.5'
|
16
16
|
```
|
17
17
|
|
18
18
|
Install:
|
@@ -36,6 +36,9 @@ There are different methods available:
|
|
36
36
|
* `current_version` - Returns the current GitLab minor version.
|
37
37
|
* `next_versions` - Returns the next GitLab patch versions (for patch and security releases).
|
38
38
|
* `previous_version` - Returns the return the latest patch of the previous minor version.
|
39
|
+
* `version_for_date` - Returns the active GitLab version for the given date
|
40
|
+
* `current_minor_for_date` - Returns the current GitLab minor for the given date
|
41
|
+
* `previous_minors` - Returns the previous minors for the given version
|
39
42
|
|
40
43
|
To make use of it:
|
41
44
|
|
@@ -47,7 +50,7 @@ To make use of it:
|
|
47
50
|
> require 'gitlab_releases'
|
48
51
|
> GitlabReleases.upcoming_releases
|
49
52
|
=>
|
50
|
-
{
|
53
|
+
{
|
51
54
|
"16.5"=>"2023-10-22",
|
52
55
|
"16.6"=>"2023-11-16",
|
53
56
|
"16.7"=>"2023-12-21",
|
@@ -59,15 +62,22 @@ To make use of it:
|
|
59
62
|
"17.1"=>"2024-06-20",
|
60
63
|
"17.2"=>"2024-07-18",
|
61
64
|
"17.3"=>"2024-08-15",
|
62
|
-
"17.4"=>"2024-09-19"
|
65
|
+
"17.4"=>"2024-09-19"
|
66
|
+
}
|
63
67
|
> GitlabReleases.active_version
|
64
|
-
=> "16.
|
68
|
+
=> "16.6"
|
65
69
|
> GitlabReleases.current_version
|
66
|
-
=> "16.
|
70
|
+
=> "16.5"
|
67
71
|
> GitlabReleases.next_versions
|
68
|
-
=> ["16.
|
72
|
+
=> ["16.5.2", "16.4.3", "16.3.7"]
|
69
73
|
> GitlabReleases.previous_version
|
70
|
-
=> "16.
|
74
|
+
=> "16.4.2"
|
75
|
+
> GitlabReleases.version_for_date('2023-11-23')
|
76
|
+
=> "16.7"
|
77
|
+
> GitlabReleases.current_minor_for_date('2023-11-23')
|
78
|
+
=> "16.6"
|
79
|
+
> GitlabReleases.previous_minors
|
80
|
+
=> ["16.6", "16.5", "16.4"]
|
71
81
|
```
|
72
82
|
|
73
83
|
## Contributing
|
@@ -3,12 +3,6 @@
|
|
3
3
|
require 'active_support/all'
|
4
4
|
|
5
5
|
class DateCalculator
|
6
|
-
# Represents the minimum version that uses the new release date
|
7
|
-
RELEASE_VERSION = '16.6'
|
8
|
-
|
9
|
-
# Represents the minimum date that uses the new release date
|
10
|
-
RELEASE_DATE = Date.parse('2023-11-16')
|
11
|
-
|
12
6
|
# @param version [ReleaseVersion]
|
13
7
|
# @param candidate_date [Date] - The month to calculate the release date. It should be
|
14
8
|
# the first day of the month.
|
@@ -18,27 +12,13 @@ class DateCalculator
|
|
18
12
|
end
|
19
13
|
|
20
14
|
def execute
|
21
|
-
|
22
|
-
twenty_second_of_the_month
|
23
|
-
else
|
24
|
-
calculate_third_thursday_of_month
|
25
|
-
end
|
26
|
-
|
27
|
-
result_date.strftime('%Y-%m-%d')
|
15
|
+
calculate_third_thursday_of_month.strftime('%Y-%m-%d')
|
28
16
|
end
|
29
17
|
|
30
18
|
private
|
31
19
|
|
32
20
|
attr_reader :next_version, :candidate_date
|
33
21
|
|
34
|
-
def before_new_release_date?
|
35
|
-
next_version.to_f < RELEASE_VERSION.to_f && candidate_date < RELEASE_DATE
|
36
|
-
end
|
37
|
-
|
38
|
-
def twenty_second_of_the_month
|
39
|
-
Date.parse("#{candidate_date.year}-#{candidate_date.month}-22")
|
40
|
-
end
|
41
|
-
|
42
22
|
# If the first day of the month is a Thursday, it fetches the subsequent Two thursdays,
|
43
23
|
# if not searches for the 3rd Thursday of the month.
|
44
24
|
def calculate_third_thursday_of_month
|
@@ -75,8 +75,8 @@ class ReleaseVersions
|
|
75
75
|
|
76
76
|
# Returns the scheduled major.minor for the given date
|
77
77
|
def self.version_for_date(date)
|
78
|
-
# Returns the release associated with the date by calling `releases_yaml` and fetching the
|
79
|
-
# release whose date is greater than the given date.
|
78
|
+
# Returns the active release associated with the date by calling `releases_yaml` and fetching the
|
79
|
+
# release whose date is greater or equal than the given date.
|
80
80
|
#
|
81
81
|
# For example:
|
82
82
|
#
|
@@ -99,6 +99,34 @@ class ReleaseVersions
|
|
99
99
|
ReleaseVersion.new(row['version'])
|
100
100
|
end
|
101
101
|
|
102
|
+
# Returns the current major.minor for the given date
|
103
|
+
def self.current_minor_for_date(date)
|
104
|
+
# Returns the current version associated with the date by calling `releases_yaml`
|
105
|
+
# and fetching the version whose release date is less or equal to the given date.
|
106
|
+
#
|
107
|
+
# For example:
|
108
|
+
#
|
109
|
+
# | Version | Date |
|
110
|
+
# |:--------|:---------------|
|
111
|
+
# | 16.3 | August 22nd |
|
112
|
+
# | 16.4 | September 22nd |
|
113
|
+
# | 16.5 | October 22nd |
|
114
|
+
# | 16.6 | November 16th |
|
115
|
+
# | 16.7 | December 21st |
|
116
|
+
#
|
117
|
+
# * For August 21st, the release should be 16.2
|
118
|
+
# * For August 22nd, the release should be 16.3
|
119
|
+
# * For August 23rd, the release should be 16.3
|
120
|
+
# * For November 17th, the release should be 16.6
|
121
|
+
return nil if releases_yaml.empty?
|
122
|
+
|
123
|
+
row = releases_yaml
|
124
|
+
.reverse
|
125
|
+
.detect { |release| date.to_date >= release['date'] }
|
126
|
+
|
127
|
+
ReleaseVersion.new(row['version'])
|
128
|
+
end
|
129
|
+
|
102
130
|
# Returns the last patch of the previous minor version
|
103
131
|
#
|
104
132
|
# For example, if the current version is 16.4, then
|
@@ -114,6 +142,19 @@ class ReleaseVersions
|
|
114
142
|
::VersionSorter.sort(versions).uniq
|
115
143
|
end
|
116
144
|
|
145
|
+
# Returns the previous major.minor versions of the major.minor version based on the
|
146
|
+
# releases.yml data
|
147
|
+
#
|
148
|
+
# For example:
|
149
|
+
# - If the current version is 16.7, the previous patch versions are 16.7, 16.6, and 16.5
|
150
|
+
# - If the current version is 17.1, the previous patch versions are 17.1, 16.11, and 16.10
|
151
|
+
def self.previous_minors(version)
|
152
|
+
versions = releases_yaml.map { |release| release['version'] }
|
153
|
+
.reverse
|
154
|
+
|
155
|
+
versions[versions.index(version), 3]
|
156
|
+
end
|
157
|
+
|
117
158
|
def self.raw_versions
|
118
159
|
ReleaseVersionClient.versions
|
119
160
|
end
|
data/lib/gitlab_releases.rb
CHANGED
@@ -33,6 +33,14 @@ module GitlabReleases
|
|
33
33
|
ReleaseVersions.previous_version
|
34
34
|
end
|
35
35
|
|
36
|
+
def self.current_minor_for_date(date)
|
37
|
+
ReleaseVersions.current_minor_for_date(date)
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.previous_minors(version)
|
41
|
+
ReleaseVersions.previous_minors(version)
|
42
|
+
end
|
43
|
+
|
36
44
|
def self.release_date
|
37
45
|
ReleaseVersions.previous_release_date
|
38
46
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-releases
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mayra Cabrera
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: '0'
|
129
129
|
requirements: []
|
130
|
-
rubygems_version: 3.
|
130
|
+
rubygems_version: 3.4.17
|
131
131
|
signing_key:
|
132
132
|
specification_version: 4
|
133
133
|
summary: Utilities for GitLab releases and versions
|