end_of_life 0.4.1 → 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,69 +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
- ZERO = Gem::Version.new("0")
10
-
11
- class << self
12
- include Dry::Monads[:try]
13
-
14
- def from_file(file_name:, content:, parser: Parser)
15
- parser.parse_file(file_name: file_name, content: content)
16
- end
17
-
18
- def eol_versions_at(date)
19
- all_versions.filter { |version| version.eol_date <= date }
20
- end
21
-
22
- def latest_eol(at: Date.today)
23
- eol_versions_at(at).max
24
- end
25
-
26
- private
27
-
28
- EOL_API_URL = "https://endoflife.date/api/ruby.json"
29
- DB_PATH = File.join(__dir__, "../end_of_life.json")
30
-
31
- def all_versions
32
- @all_versions ||= (fetch_end_of_life_api || load_file_fallback)
33
- .then { |json| JSON.parse(json, symbolize_names: true) }
34
- .map { |version| new(version[:latest], eol_date: Date.parse(version[:eol])) }
35
- end
36
-
37
- def fetch_end_of_life_api
38
- Try { Net::HTTP.get URI(EOL_API_URL) }.value_or(nil)
39
- end
40
-
41
- def load_file_fallback
42
- File.read(DB_PATH)
43
- end
44
- end
45
-
46
- attr_reader :version, :eol_date
47
-
48
- def initialize(version_string, eol_date: nil)
49
- @version = Gem::Version.new(version_string)
50
- @eol_date = eol_date
51
-
52
- freeze
53
- end
54
-
55
- def eol?(at: Date.today)
56
- self <= RubyVersion.latest_eol(at: at)
57
- end
58
-
59
- def <=>(other)
60
- @version <=> other.version
61
- end
62
-
63
- def zero? = @version == ZERO
64
-
65
- def to_s
66
- @version.to_s
67
- end
68
- end
69
- 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
- ]