libyear-bundler 0.6.1 → 0.8.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/gem.rb +16 -7
- data/lib/libyear_bundler/models/ruby.rb +8 -6
- data/lib/libyear_bundler/options.rb +4 -0
- data/lib/libyear_bundler/report.rb +30 -8
- data/lib/libyear_bundler/version.rb +1 -1
- data/libyear-bundler.gemspec +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e363af1df56aed65c6977f010e31514cc9e57e3b4270eacecff7005033554a3
|
4
|
+
data.tar.gz: 9293a7bc0a6708685577e28d85f43efeb15c3031f5432277be2fc593391a2d62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bed9a52de479d8a0479846cfa26beaf71b48c4df930a2e1bd86a021fabbb3b755e33148e6d2fcda14ab6297d304ade51331f38074d6e7a45ddab7f476ee0cb7
|
7
|
+
data.tar.gz: d190eb7367ccc794de8ba33ecf5794cb86b431a8b9227975d28c93f08f9930c1fd92e555e2280f720b9153647308a57694c2163a1599d43449b212e6ed56448c
|
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
|
@@ -23,23 +23,32 @@ module LibyearBundler
|
|
23
23
|
begin
|
24
24
|
dep = ::Bundler::Dependency.new(gem_name, gem_version)
|
25
25
|
rescue ::Gem::Requirement::BadRequirementError => e
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
)
|
26
|
+
report_problem(gem_name, <<-MSG)
|
27
|
+
Could not find release date for: #{gem_name}
|
28
|
+
#{e}
|
29
|
+
Maybe you used git in your Gemfile, which libyear doesn't support yet. Contributions welcome.
|
30
|
+
MSG
|
32
31
|
return nil
|
33
32
|
end
|
34
33
|
tuples, _errors = ::Gem::SpecFetcher.fetcher.search_for_dependency(dep)
|
35
34
|
if tuples.empty?
|
36
|
-
|
35
|
+
report_problem(gem_name, "Could not find release date for: #{gem_name}")
|
37
36
|
return nil
|
38
37
|
end
|
39
38
|
tup, source = tuples.first # Gem::NameTuple
|
40
39
|
spec = source.fetch_spec(tup) # raises Gem::RemoteFetcher::FetchError
|
41
40
|
spec.date.to_date
|
42
41
|
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def report_problem(gem_name, message)
|
46
|
+
@reported_gems ||= {}
|
47
|
+
@reported_gems[gem_name] ||= begin
|
48
|
+
$stderr.puts(message)
|
49
|
+
true
|
50
|
+
end
|
51
|
+
end
|
43
52
|
end
|
44
53
|
|
45
54
|
def installed_version
|
@@ -176,18 +176,20 @@ module LibyearBundler
|
|
176
176
|
def version_from_bundler
|
177
177
|
return unless File.exist?(@lockfile)
|
178
178
|
ruby_version_string = ::Bundler::LockfileParser
|
179
|
-
.new(@lockfile)
|
179
|
+
.new(::File.read(@lockfile))
|
180
180
|
.ruby_version
|
181
181
|
return if ruby_version_string.nil?
|
182
|
-
|
183
182
|
::Bundler::RubyVersion.from_string(ruby_version_string).gem_version
|
184
183
|
end
|
185
184
|
|
186
|
-
# TODO: this path should probably be relative to `@lockfile` instead
|
187
|
-
# TODO: of being relative to the current working directory.
|
188
185
|
def version_from_ruby_version_file
|
189
|
-
|
190
|
-
|
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
|
191
193
|
end
|
192
194
|
|
193
195
|
def version_from_ruby
|
@@ -52,6 +52,10 @@ https://github.com/jaredbeck/libyear-bundler/
|
|
52
52
|
opts.on('--grand-total', 'Return value for given metric(s)') do
|
53
53
|
@options.send('grand_total?=', true)
|
54
54
|
end
|
55
|
+
|
56
|
+
opts.on('--sort', 'Sort by selected metric(s), in descending order') do
|
57
|
+
@options.send('sort?=', true)
|
58
|
+
end
|
55
59
|
end
|
56
60
|
end
|
57
61
|
|
@@ -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
|
@@ -30,11 +31,12 @@ module LibyearBundler
|
|
30
31
|
def to_h
|
31
32
|
@_to_h ||=
|
32
33
|
begin
|
34
|
+
gems = sorted_gems(@gems)
|
33
35
|
summary = {
|
34
|
-
gems:
|
36
|
+
gems: gems,
|
35
37
|
sum_libyears: 0.0
|
36
38
|
}
|
37
|
-
|
39
|
+
gems.each { |gem| increment_metrics_summary(gem, summary) }
|
38
40
|
|
39
41
|
begin
|
40
42
|
increment_metrics_summary(@ruby, summary) if @ruby.outdated?
|
@@ -48,6 +50,20 @@ module LibyearBundler
|
|
48
50
|
|
49
51
|
private
|
50
52
|
|
53
|
+
def sorted_gems(gems)
|
54
|
+
if @options.sort?
|
55
|
+
gems.sort_by do |gem|
|
56
|
+
[
|
57
|
+
(gem.libyears if @options.libyears?),
|
58
|
+
(gem.version_sequence_delta if @options.releases?),
|
59
|
+
(gem.version_number_delta if @options.versions?)
|
60
|
+
].compact
|
61
|
+
end.reverse
|
62
|
+
else
|
63
|
+
gems
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
51
67
|
def increment_metrics_summary(model, summary)
|
52
68
|
increment_libyears(model, summary) if @options.libyears?
|
53
69
|
increment_version_deltas(model, summary) if @options.versions?
|
@@ -72,7 +88,7 @@ module LibyearBundler
|
|
72
88
|
meta << libyears
|
73
89
|
end
|
74
90
|
|
75
|
-
puts meta
|
91
|
+
@io.puts meta
|
76
92
|
end
|
77
93
|
|
78
94
|
def meta_line_summary(gem_or_ruby)
|
@@ -87,11 +103,11 @@ module LibyearBundler
|
|
87
103
|
end
|
88
104
|
|
89
105
|
def put_libyear_summary(sum_libyears)
|
90
|
-
puts format("System is %.1f libyears behind", sum_libyears)
|
106
|
+
@io.puts format("System is %.1f libyears behind", sum_libyears)
|
91
107
|
end
|
92
108
|
|
93
109
|
def put_version_delta_summary(sum_major_version, sum_minor_version, sum_patch_version)
|
94
|
-
puts format(
|
110
|
+
@io.puts format(
|
95
111
|
"Major, minor, patch versions behind: %<major>d, %<minor>d, %<patch>d",
|
96
112
|
major: sum_major_version || 0,
|
97
113
|
minor: sum_minor_version || 0,
|
@@ -100,7 +116,7 @@ module LibyearBundler
|
|
100
116
|
end
|
101
117
|
|
102
118
|
def put_sum_seq_delta_summary(sum_seq_delta)
|
103
|
-
puts format(
|
119
|
+
@io.puts format(
|
104
120
|
"Total releases behind: %<seq_delta>d",
|
105
121
|
seq_delta: sum_seq_delta || 0
|
106
122
|
)
|
@@ -130,11 +146,15 @@ module LibyearBundler
|
|
130
146
|
|
131
147
|
def increment_libyears(model, memo)
|
132
148
|
memo[:sum_libyears] += model.libyears
|
149
|
+
rescue StandardError => e
|
150
|
+
warn "Unable to calculate libyears for #{model.name}: #{e}"
|
133
151
|
end
|
134
152
|
|
135
153
|
def increment_seq_deltas(model, memo)
|
136
154
|
memo[:sum_seq_delta] ||= 0
|
137
155
|
memo[:sum_seq_delta] += model.version_sequence_delta
|
156
|
+
rescue StandardError => e
|
157
|
+
warn "Unable to calculate seq deltas for #{model.name}: #{e}"
|
138
158
|
end
|
139
159
|
|
140
160
|
def increment_version_deltas(model, memo)
|
@@ -144,6 +164,8 @@ module LibyearBundler
|
|
144
164
|
memo[:sum_minor_version] += model.version_number_delta[1]
|
145
165
|
memo[:sum_patch_version] ||= 0
|
146
166
|
memo[:sum_patch_version] += model.version_number_delta[2]
|
167
|
+
rescue StandardError => e
|
168
|
+
warn "Unable to calculate version deltas for #{model.name}: #{e}"
|
147
169
|
end
|
148
170
|
end
|
149
171
|
end
|
data/libyear-bundler.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.email = ["jared@jaredbeck.com"]
|
12
12
|
spec.summary = "A simple measure of dependency freshness"
|
13
13
|
spec.homepage = "https://libyear.com"
|
14
|
-
spec.licenses = ["GPL-3.0"]
|
14
|
+
spec.licenses = ["GPL-3.0-only"]
|
15
15
|
spec.files = `git ls-files -z`.split("\x0").select do |f|
|
16
16
|
f.start_with?('lib/') ||
|
17
17
|
[
|
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.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jared Beck
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '3'
|
33
|
-
description:
|
33
|
+
description:
|
34
34
|
email:
|
35
35
|
- jared@jaredbeck.com
|
36
36
|
executables:
|
@@ -56,9 +56,9 @@ files:
|
|
56
56
|
- libyear-bundler.gemspec
|
57
57
|
homepage: https://libyear.com
|
58
58
|
licenses:
|
59
|
-
- GPL-3.0
|
59
|
+
- GPL-3.0-only
|
60
60
|
metadata: {}
|
61
|
-
post_install_message:
|
61
|
+
post_install_message:
|
62
62
|
rdoc_options: []
|
63
63
|
require_paths:
|
64
64
|
- lib
|
@@ -73,8 +73,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '0'
|
75
75
|
requirements: []
|
76
|
-
rubygems_version: 3.
|
77
|
-
signing_key:
|
76
|
+
rubygems_version: 3.5.16
|
77
|
+
signing_key:
|
78
78
|
specification_version: 4
|
79
79
|
summary: A simple measure of dependency freshness
|
80
80
|
test_files: []
|