end_of_life 0.4.0 → 0.5.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.
@@ -1,65 +0,0 @@
1
- require "net/http"
2
- require "rubygems"
3
- require_relative "ruby_version/parser"
4
-
5
- module EndOfLife
6
- class RubyVersion
7
- include Comparable
8
-
9
- class << self
10
- include Dry::Monads[:try]
11
-
12
- def from_file(file_name:, content:, parser: Parser)
13
- parser.parse_file(file_name: file_name, content: content)
14
- end
15
-
16
- def eol_versions_at(date)
17
- all_versions.filter { |version| version.eol_date <= date }
18
- end
19
-
20
- def latest_eol(at: Date.today)
21
- eol_versions_at(at).max
22
- end
23
-
24
- private
25
-
26
- EOL_API_URL = "https://endoflife.date/api/ruby.json"
27
- DB_PATH = File.join(__dir__, "../end_of_life.json")
28
-
29
- def all_versions
30
- @all_versions ||= (fetch_end_of_life_api || load_file_fallback)
31
- .then { |json| JSON.parse(json, symbolize_names: true) }
32
- .map { |version| new(version[:latest], eol_date: Date.parse(version[:eol])) }
33
- end
34
-
35
- def fetch_end_of_life_api
36
- Try { Net::HTTP.get URI(EOL_API_URL) }.value_or(nil)
37
- end
38
-
39
- def load_file_fallback
40
- File.read(DB_PATH)
41
- end
42
- end
43
-
44
- attr_reader :version, :eol_date
45
-
46
- def initialize(version_string, eol_date: nil)
47
- @version = Gem::Version.new(version_string)
48
- @eol_date = eol_date
49
-
50
- freeze
51
- end
52
-
53
- def eol?(at: Date.today)
54
- self <= RubyVersion.latest_eol(at: at)
55
- end
56
-
57
- def <=>(other)
58
- @version <=> other.version
59
- end
60
-
61
- def to_s
62
- @version.to_s
63
- end
64
- end
65
- end
data/lib/end_of_life.json DELETED
@@ -1,98 +0,0 @@
1
- [
2
- {
3
- "cycle": "3.2",
4
- "eol": "2026-03-31",
5
- "latest": "3.2.2",
6
- "latestReleaseDate": "2023-03-30",
7
- "releaseDate": "2022-12-25",
8
- "lts": false
9
- },
10
- {
11
- "cycle": "3.1",
12
- "eol": "2025-03-31",
13
- "latest": "3.1.4",
14
- "latestReleaseDate": "2023-03-30",
15
- "releaseDate": "2021-12-25",
16
- "lts": false
17
- },
18
- {
19
- "cycle": "3.0",
20
- "eol": "2024-03-31",
21
- "latest": "3.0.6",
22
- "latestReleaseDate": "2023-03-30",
23
- "releaseDate": "2020-12-25",
24
- "lts": false
25
- },
26
- {
27
- "cycle": "2.7",
28
- "eol": "2023-03-31",
29
- "latest": "2.7.8",
30
- "latestReleaseDate": "2023-03-30",
31
- "releaseDate": "2019-12-25",
32
- "lts": false
33
- },
34
- {
35
- "cycle": "2.6",
36
- "eol": "2022-03-31",
37
- "latest": "2.6.10",
38
- "latestReleaseDate": "2022-04-12",
39
- "releaseDate": "2018-12-25",
40
- "lts": false
41
- },
42
- {
43
- "cycle": "2.5",
44
- "eol": "2021-03-31",
45
- "latest": "2.5.9",
46
- "latestReleaseDate": "2021-04-05",
47
- "releaseDate": "2017-12-25",
48
- "lts": false
49
- },
50
- {
51
- "cycle": "2.4",
52
- "eol": "2020-03-31",
53
- "latest": "2.4.10",
54
- "latestReleaseDate": "2020-03-31",
55
- "releaseDate": "2016-12-23",
56
- "lts": false
57
- },
58
- {
59
- "cycle": "2.3",
60
- "eol": "2019-03-31",
61
- "latest": "2.3.8",
62
- "latestReleaseDate": "2018-10-17",
63
- "releaseDate": "2015-12-24",
64
- "lts": false
65
- },
66
- {
67
- "cycle": "2.2",
68
- "eol": "2018-03-31",
69
- "latest": "2.2.10",
70
- "latestReleaseDate": "2018-03-28",
71
- "releaseDate": "2014-12-25",
72
- "lts": false
73
- },
74
- {
75
- "cycle": "2.1",
76
- "eol": "2017-03-31",
77
- "latest": "2.1.10",
78
- "latestReleaseDate": "2016-03-31",
79
- "releaseDate": "2013-12-25",
80
- "lts": false
81
- },
82
- {
83
- "cycle": "2.0.0",
84
- "eol": "2016-02-24",
85
- "latest": "2.0.0p648",
86
- "latestReleaseDate": "2015-12-16",
87
- "releaseDate": "2013-02-24",
88
- "lts": false
89
- },
90
- {
91
- "cycle": "1.9.3",
92
- "eol": "2015-02-23",
93
- "latest": "1.9.3p551",
94
- "latestReleaseDate": "2014-11-13",
95
- "releaseDate": "2011-10-30",
96
- "lts": false
97
- }
98
- ]