libyear-bundler 0.6.0 → 0.7.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.
- checksums.yaml +4 -4
- data/lib/libyear_bundler/cli.rb +2 -2
- data/lib/libyear_bundler/models/ruby.rb +22 -13
- data/lib/libyear_bundler/release_date_cache.rb +10 -1
- data/lib/libyear_bundler/report.rb +13 -6
- data/lib/libyear_bundler/version.rb +1 -1
- data/lib/libyear_bundler/yaml_loader.rb +36 -0
- data/libyear-bundler.gemspec +2 -5
- metadata +4 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4f90004a4a8f93453f73361a0e3415344017e83f55d10d625b0a3b69f1db74b
|
4
|
+
data.tar.gz: 55d91c831ae79f5b44c6de0bcd2f68e550590d73d5004646c1da0163abbcebea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3b1346dbdc4986e539fba595f18e01a46fd03d647210b34a6810e2bd9ae61028ffa00eae7e4e2c4088f524368a2cc74950f5d79610ab6aa2bd93d5c4cdd9e6a
|
7
|
+
data.tar.gz: 2196cc0fe1a16f2fd9ea4646eb7d07a227d58f07dc5f2cca3724c8ae4b08d4386adbdbc51f3364f2891745e7202b106348dabefed1734a6eb3b11c38823e4f17
|
data/lib/libyear_bundler/cli.rb
CHANGED
@@ -26,7 +26,7 @@ module LibyearBundler
|
|
26
26
|
if @options.grand_total?
|
27
27
|
grand_total
|
28
28
|
else
|
29
|
-
|
29
|
+
report.write
|
30
30
|
end
|
31
31
|
|
32
32
|
# Update cache
|
@@ -73,7 +73,7 @@ module LibyearBundler
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def report
|
76
|
-
@_report ||= Report.new(bundle_outdated, ruby, @options)
|
76
|
+
@_report ||= Report.new(bundle_outdated, ruby, @options, $stdout)
|
77
77
|
end
|
78
78
|
|
79
79
|
def ruby
|
@@ -7,6 +7,7 @@ require 'yaml'
|
|
7
7
|
require 'libyear_bundler/calculators/libyear'
|
8
8
|
require 'libyear_bundler/calculators/version_number_delta'
|
9
9
|
require 'libyear_bundler/calculators/version_sequence_delta'
|
10
|
+
require 'libyear_bundler/yaml_loader'
|
10
11
|
|
11
12
|
module LibyearBundler
|
12
13
|
module Models
|
@@ -78,13 +79,19 @@ module LibyearBundler
|
|
78
79
|
def all_versions
|
79
80
|
@_all_versions ||= begin
|
80
81
|
uri = ::URI.parse(RUBY_VERSION_DATA_URL)
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
::
|
86
|
-
.safe_load(response.body
|
87
|
-
|
82
|
+
opt = { open_timeout: 3, read_timeout: 5, use_ssl: true }
|
83
|
+
response = ::Net::HTTP.start(uri.hostname, uri.port, opt) do |con|
|
84
|
+
con.request_get(uri.path)
|
85
|
+
end
|
86
|
+
if response.is_a?(::Net::HTTPSuccess)
|
87
|
+
YAMLLoader.safe_load(response.body).map { |release| release['version'] }
|
88
|
+
else
|
89
|
+
warn format('Unable to get Ruby version list: response code: %s', response.code)
|
90
|
+
[]
|
91
|
+
end
|
92
|
+
rescue ::Timeout::Error
|
93
|
+
warn 'Unable to get Ruby version list: network timeout'
|
94
|
+
[]
|
88
95
|
end
|
89
96
|
end
|
90
97
|
end
|
@@ -169,18 +176,20 @@ module LibyearBundler
|
|
169
176
|
def version_from_bundler
|
170
177
|
return unless File.exist?(@lockfile)
|
171
178
|
ruby_version_string = ::Bundler::LockfileParser
|
172
|
-
.new(@lockfile)
|
179
|
+
.new(::File.read(@lockfile))
|
173
180
|
.ruby_version
|
174
181
|
return if ruby_version_string.nil?
|
175
|
-
|
176
182
|
::Bundler::RubyVersion.from_string(ruby_version_string).gem_version
|
177
183
|
end
|
178
184
|
|
179
|
-
# TODO: this path should probably be relative to `@lockfile` instead
|
180
|
-
# TODO: of being relative to the current working directory.
|
181
185
|
def version_from_ruby_version_file
|
182
|
-
|
183
|
-
|
186
|
+
version_file = File.join(File.dirname(@lockfile), '.ruby-version')
|
187
|
+
return unless File.exist?(version_file)
|
188
|
+
|
189
|
+
version_string = File.read(version_file).strip
|
190
|
+
version = version_string.split('-', 2).last
|
191
|
+
|
192
|
+
::Gem::Version.new(version) if version
|
184
193
|
end
|
185
194
|
|
186
195
|
def version_from_ruby
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'libyear_bundler/yaml_loader'
|
2
3
|
|
3
4
|
module LibyearBundler
|
4
5
|
# A cache of release dates by name and version, for both gems and rubies.
|
@@ -18,10 +19,18 @@ module LibyearBundler
|
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
22
|
+
def empty?
|
23
|
+
@data.empty?
|
24
|
+
end
|
25
|
+
|
26
|
+
def size
|
27
|
+
@data.size
|
28
|
+
end
|
29
|
+
|
21
30
|
class << self
|
22
31
|
def load(path)
|
23
32
|
if File.exist?(path)
|
24
|
-
new(
|
33
|
+
new(YAMLLoader.safe_load(File.read(path)))
|
25
34
|
else
|
26
35
|
new({})
|
27
36
|
end
|
@@ -9,13 +9,14 @@ module LibyearBundler
|
|
9
9
|
|
10
10
|
# `gems` - Array of `::LibyearBundler::Models::Gem` instances
|
11
11
|
# `options` - Instance of `::LibyearBundler::Options`
|
12
|
-
def initialize(gems, ruby, options)
|
12
|
+
def initialize(gems, ruby, options, io)
|
13
13
|
@gems = gems
|
14
14
|
@ruby = ruby
|
15
15
|
@options = options
|
16
|
+
@io = io
|
16
17
|
end
|
17
18
|
|
18
|
-
def
|
19
|
+
def write
|
19
20
|
to_h[:gems].each { |gem| put_line_summary(gem) }
|
20
21
|
|
21
22
|
begin
|
@@ -72,7 +73,7 @@ module LibyearBundler
|
|
72
73
|
meta << libyears
|
73
74
|
end
|
74
75
|
|
75
|
-
puts meta
|
76
|
+
@io.puts meta
|
76
77
|
end
|
77
78
|
|
78
79
|
def meta_line_summary(gem_or_ruby)
|
@@ -87,11 +88,11 @@ module LibyearBundler
|
|
87
88
|
end
|
88
89
|
|
89
90
|
def put_libyear_summary(sum_libyears)
|
90
|
-
puts format("System is %.1f libyears behind", sum_libyears)
|
91
|
+
@io.puts format("System is %.1f libyears behind", sum_libyears)
|
91
92
|
end
|
92
93
|
|
93
94
|
def put_version_delta_summary(sum_major_version, sum_minor_version, sum_patch_version)
|
94
|
-
puts format(
|
95
|
+
@io.puts format(
|
95
96
|
"Major, minor, patch versions behind: %<major>d, %<minor>d, %<patch>d",
|
96
97
|
major: sum_major_version || 0,
|
97
98
|
minor: sum_minor_version || 0,
|
@@ -100,7 +101,7 @@ module LibyearBundler
|
|
100
101
|
end
|
101
102
|
|
102
103
|
def put_sum_seq_delta_summary(sum_seq_delta)
|
103
|
-
puts format(
|
104
|
+
@io.puts format(
|
104
105
|
"Total releases behind: %<seq_delta>d",
|
105
106
|
seq_delta: sum_seq_delta || 0
|
106
107
|
)
|
@@ -130,11 +131,15 @@ module LibyearBundler
|
|
130
131
|
|
131
132
|
def increment_libyears(model, memo)
|
132
133
|
memo[:sum_libyears] += model.libyears
|
134
|
+
rescue StandardError => e
|
135
|
+
warn "Unable to calculate libyears for #{model.name}: #{e}"
|
133
136
|
end
|
134
137
|
|
135
138
|
def increment_seq_deltas(model, memo)
|
136
139
|
memo[:sum_seq_delta] ||= 0
|
137
140
|
memo[:sum_seq_delta] += model.version_sequence_delta
|
141
|
+
rescue StandardError => e
|
142
|
+
warn "Unable to calculate seq deltas for #{model.name}: #{e}"
|
138
143
|
end
|
139
144
|
|
140
145
|
def increment_version_deltas(model, memo)
|
@@ -144,6 +149,8 @@ module LibyearBundler
|
|
144
149
|
memo[:sum_minor_version] += model.version_number_delta[1]
|
145
150
|
memo[:sum_patch_version] ||= 0
|
146
151
|
memo[:sum_patch_version] += model.version_number_delta[2]
|
152
|
+
rescue StandardError => e
|
153
|
+
warn "Unable to calculate version deltas for #{model.name}: #{e}"
|
147
154
|
end
|
148
155
|
end
|
149
156
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
module LibyearBundler
|
6
|
+
# Supports different versions of the `YAML` constant. For example,
|
7
|
+
#
|
8
|
+
# > psych 3.0.3 YAML#safe_load expected the permitted/whitelisted classes in
|
9
|
+
# > the second parameter.
|
10
|
+
# >
|
11
|
+
# > psych 3.1.0 YAML#safe_load introduced keyword argument permitted_classes
|
12
|
+
# > in addition to permitted/whitelisted classes in the second parameter.
|
13
|
+
# >
|
14
|
+
# > psych 4.0.0 dropped the second positional parameter of YAML#safe_load, and
|
15
|
+
# > expects the permitted/whitelisted classes only in keyword parameter
|
16
|
+
# > permitted_classes.
|
17
|
+
# > https://github.com/jaredbeck/libyear-bundler/issues/22
|
18
|
+
#
|
19
|
+
# I expect this will only get more complicated over the years, as we try to
|
20
|
+
# support old rubies for as long as possible.
|
21
|
+
#
|
22
|
+
# Other known issues:
|
23
|
+
#
|
24
|
+
# - https://github.com/ruby/psych/issues/262
|
25
|
+
module YAMLLoader
|
26
|
+
class << self
|
27
|
+
def safe_load(yaml, permitted_classes: [::Date])
|
28
|
+
if YAML.method(:safe_load).parameters.include?([:key, :permitted_classes])
|
29
|
+
YAML.safe_load(yaml, permitted_classes: permitted_classes)
|
30
|
+
else
|
31
|
+
YAML.safe_load(yaml, permitted_classes)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/libyear-bundler.gemspec
CHANGED
@@ -33,9 +33,6 @@ Gem::Specification.new do |spec|
|
|
33
33
|
# above.
|
34
34
|
spec.add_dependency "bundler", ">= 1.14", "< 3"
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
# rubocop 0.57 drops support for ruby 2.1, so 0.56 is the highest we can
|
39
|
-
# use. We're going to support ruby 2.1 as long as possible. See above.
|
40
|
-
spec.add_development_dependency "rubocop", "~> 0.56.0"
|
36
|
+
# Development dependencies are specified in `/gemfiles`. See CONTRIBUTING.md
|
37
|
+
# for details.
|
41
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libyear-bundler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jared Beck
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,34 +30,6 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '3'
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: rspec
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '3.9'
|
40
|
-
type: :development
|
41
|
-
prerelease: false
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
requirements:
|
44
|
-
- - "~>"
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '3.9'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: rubocop
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 0.56.0
|
54
|
-
type: :development
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - "~>"
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 0.56.0
|
61
33
|
description:
|
62
34
|
email:
|
63
35
|
- jared@jaredbeck.com
|
@@ -80,6 +52,7 @@ files:
|
|
80
52
|
- lib/libyear_bundler/release_date_cache.rb
|
81
53
|
- lib/libyear_bundler/report.rb
|
82
54
|
- lib/libyear_bundler/version.rb
|
55
|
+
- lib/libyear_bundler/yaml_loader.rb
|
83
56
|
- libyear-bundler.gemspec
|
84
57
|
homepage: https://libyear.com
|
85
58
|
licenses:
|
@@ -100,8 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
73
|
- !ruby/object:Gem::Version
|
101
74
|
version: '0'
|
102
75
|
requirements: []
|
103
|
-
|
104
|
-
rubygems_version: 2.7.6.3
|
76
|
+
rubygems_version: 3.2.20
|
105
77
|
signing_key:
|
106
78
|
specification_version: 4
|
107
79
|
summary: A simple measure of dependency freshness
|