libyear-bundler 0.9.0 → 0.9.1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0598b786c916a1f5645f5785f9e71b7dee517a908abd24410ebd5c9262e1681a'
|
4
|
+
data.tar.gz: 78396f8f657749c1206f76b7ab7d47a1ed6f182f9aefcba0ed478dfa72b3a83d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a9c45f47f10127b72ee0bfc4a38d52e3fff677b55d93d8f125730b5a3bf1f9a8920590667465af4388ad14cbeda33c37852a51729497a0740d003b326057797
|
7
|
+
data.tar.gz: 38610ebd31b56aa6173b2ff861756fa602bbefe63855de0ec4d21d2940e0292278ae3f82ad2ff08633813ffce7c890b88a8a20341962f54b3354f5c4e599c03c
|
@@ -17,21 +17,25 @@ module LibyearBundler
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def execute
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
uri = URI('https://rubygems.org')
|
21
|
+
Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
|
22
|
+
bundle_outdated.lines.each_with_object([]) do |line, gems|
|
23
|
+
match = BOP_FMT.match(line)
|
24
|
+
next if match.nil?
|
25
|
+
if malformed_version_strings?(match)
|
26
|
+
warn "Skipping #{match['name']} because of a malformed version string"
|
27
|
+
next
|
28
|
+
end
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
gem = ::LibyearBundler::Models::Gem.new(
|
31
|
+
match['name'],
|
32
|
+
match['installed'],
|
33
|
+
match['newest'],
|
34
|
+
@release_date_cache,
|
35
|
+
http
|
36
|
+
)
|
37
|
+
gems.push(gem)
|
38
|
+
end
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
@@ -7,7 +7,7 @@ module LibyearBundler
|
|
7
7
|
# Logic and information pertaining to the installed and newest versions of
|
8
8
|
# a gem
|
9
9
|
class Gem
|
10
|
-
def initialize(name, installed_version, newest_version, release_date_cache)
|
10
|
+
def initialize(name, installed_version, newest_version, release_date_cache, http)
|
11
11
|
unless release_date_cache.nil? || release_date_cache.is_a?(ReleaseDateCache)
|
12
12
|
raise TypeError, 'Invalid release_date_cache'
|
13
13
|
end
|
@@ -15,29 +15,28 @@ module LibyearBundler
|
|
15
15
|
@installed_version = installed_version
|
16
16
|
@newest_version = newest_version
|
17
17
|
@release_date_cache = release_date_cache
|
18
|
+
@http = http
|
18
19
|
end
|
19
20
|
|
20
21
|
class << self
|
21
|
-
def release_date(gem_name, gem_version)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
22
|
+
def release_date(gem_name, gem_version, http)
|
23
|
+
uri = URI.parse(
|
24
|
+
"https://rubygems.org/api/v2/rubygems/#{gem_name}/versions/#{gem_version}.json"
|
25
|
+
)
|
26
|
+
request = Net::HTTP::Get.new(uri)
|
27
|
+
response = http.request(request)
|
28
|
+
if response.is_a?(Net::HTTPSuccess)
|
29
|
+
parsed_response = JSON.parse(response.body)
|
30
|
+
Date.parse(parsed_response["version_created_at"])
|
31
|
+
else
|
32
|
+
report_problem(
|
33
|
+
gem_name,
|
34
|
+
"Release date not found: #{gem_name}: rubygems.org responded with #{response.code}"
|
35
|
+
)
|
36
|
+
nil
|
32
37
|
end
|
33
|
-
|
34
|
-
|
35
|
-
report_problem(gem_name, "Could not find release date for: #{gem_name}")
|
36
|
-
return nil
|
37
|
-
end
|
38
|
-
tup, source = tuples.first # Gem::NameTuple
|
39
|
-
spec = source.fetch_spec(tup) # raises Gem::RemoteFetcher::FetchError
|
40
|
-
spec.date.to_date
|
38
|
+
rescue StandardError => e
|
39
|
+
report_problem(gem_name, "Release date not found: #{gem_name}: #{e.inspect}")
|
41
40
|
end
|
42
41
|
|
43
42
|
private
|
@@ -57,7 +56,7 @@ Maybe you used git in your Gemfile, which libyear doesn't support yet. Contribut
|
|
57
56
|
|
58
57
|
def installed_version_release_date
|
59
58
|
if @release_date_cache.nil?
|
60
|
-
self.class.release_date(name, installed_version)
|
59
|
+
self.class.release_date(name, installed_version, @http)
|
61
60
|
else
|
62
61
|
@release_date_cache[name, installed_version]
|
63
62
|
end
|
@@ -88,7 +87,7 @@ Maybe you used git in your Gemfile, which libyear doesn't support yet. Contribut
|
|
88
87
|
|
89
88
|
def newest_version_release_date
|
90
89
|
if @release_date_cache.nil?
|
91
|
-
self.class.release_date(name, newest_version)
|
90
|
+
self.class.release_date(name, newest_version, @http)
|
92
91
|
else
|
93
92
|
@release_date_cache[name, newest_version]
|
94
93
|
end
|
@@ -115,7 +114,8 @@ Maybe you used git in your Gemfile, which libyear doesn't support yet. Contribut
|
|
115
114
|
def versions_sequence
|
116
115
|
@_versions_sequence ||= begin
|
117
116
|
uri = URI.parse("https://rubygems.org/api/v1/versions/#{name}.json")
|
118
|
-
|
117
|
+
request = Net::HTTP::Get.new(uri)
|
118
|
+
response = @http.request(request)
|
119
119
|
parsed_response = JSON.parse(response.body)
|
120
120
|
parsed_response.map { |version| version['number'] }
|
121
121
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
require 'libyear_bundler/version'
|
3
3
|
require "libyear_bundler/cli"
|
4
|
-
require 'ostruct'
|
5
4
|
|
6
5
|
module LibyearBundler
|
7
6
|
# Uses OptionParser from Ruby's stdlib to hand command-line arguments
|
@@ -11,14 +10,18 @@ Usage: libyear-bundler [Gemfile ...] [options]
|
|
11
10
|
https://github.com/jaredbeck/libyear-bundler/
|
12
11
|
BANNER
|
13
12
|
|
13
|
+
Store = Struct.new(
|
14
|
+
:libyears?, :releases?, :versions?, :cache_path, :grand_total?, :sort?, :json?
|
15
|
+
)
|
16
|
+
|
14
17
|
def initialize(argv)
|
15
18
|
@argv = argv
|
16
|
-
@options =
|
19
|
+
@options = Store.new
|
17
20
|
@optparser = OptionParser.new do |opts|
|
18
21
|
opts.banner = BANNER
|
19
22
|
opts.program_name = 'libyear-bundler'
|
20
23
|
opts.version = ::LibyearBundler::VERSION
|
21
|
-
@options.send('libyears?=', true)
|
24
|
+
@options.send(:'libyears?=', true)
|
22
25
|
|
23
26
|
opts.on_head('-h', '--help', 'Prints this help') do
|
24
27
|
puts opts
|
@@ -26,9 +29,9 @@ https://github.com/jaredbeck/libyear-bundler/
|
|
26
29
|
end
|
27
30
|
|
28
31
|
opts.on('--all', 'Calculate all metrics') do
|
29
|
-
@options.send('libyears?=', true)
|
30
|
-
@options.send('releases?=', true)
|
31
|
-
@options.send('versions?=', true)
|
32
|
+
@options.send(:'libyears?=', true)
|
33
|
+
@options.send(:'releases?=', true)
|
34
|
+
@options.send(:'versions?=', true)
|
32
35
|
end
|
33
36
|
|
34
37
|
opts.on('--cache=CACHE_PATH', 'Use a cache across runs') do |cache_path|
|
@@ -36,29 +39,29 @@ https://github.com/jaredbeck/libyear-bundler/
|
|
36
39
|
end
|
37
40
|
|
38
41
|
opts.on('--libyears', '[default] Calculate libyears out-of-date') do
|
39
|
-
@options.send('libyears?=', true)
|
42
|
+
@options.send(:'libyears?=', true)
|
40
43
|
end
|
41
44
|
|
42
45
|
opts.on('--releases', 'Calculate number of releases out-of-date') do
|
43
|
-
@options.send('libyears?=', false)
|
44
|
-
@options.send('releases?=', true)
|
46
|
+
@options.send(:'libyears?=', false)
|
47
|
+
@options.send(:'releases?=', true)
|
45
48
|
end
|
46
49
|
|
47
50
|
opts.on('--versions', 'Calculate major, minor, and patch versions out-of-date') do
|
48
|
-
@options.send('libyears?=', false)
|
49
|
-
@options.send('versions?=', true)
|
51
|
+
@options.send(:'libyears?=', false)
|
52
|
+
@options.send(:'versions?=', true)
|
50
53
|
end
|
51
54
|
|
52
55
|
opts.on('--grand-total', 'Return value for given metric(s)') do
|
53
|
-
@options.send('grand_total?=', true)
|
56
|
+
@options.send(:'grand_total?=', true)
|
54
57
|
end
|
55
58
|
|
56
59
|
opts.on('--sort', 'Sort by selected metric(s), in descending order') do
|
57
|
-
@options.send('sort?=', true)
|
60
|
+
@options.send(:'sort?=', true)
|
58
61
|
end
|
59
62
|
|
60
63
|
opts.on('--json', 'Output JSON') do
|
61
|
-
@options.send('json?=', true)
|
64
|
+
@options.send(:'json?=', true)
|
62
65
|
end
|
63
66
|
end
|
64
67
|
end
|
@@ -8,6 +8,8 @@ module LibyearBundler
|
|
8
8
|
def initialize(data)
|
9
9
|
raise TypeError unless data.is_a?(Hash)
|
10
10
|
@data = data
|
11
|
+
uri = URI('https://rubygems.org')
|
12
|
+
@http = Net::HTTP.start(uri.host, uri.port, use_ssl: true)
|
11
13
|
end
|
12
14
|
|
13
15
|
def [](name, version)
|
@@ -52,7 +54,7 @@ module LibyearBundler
|
|
52
54
|
if name == 'ruby'
|
53
55
|
Models::Ruby.release_date(version)
|
54
56
|
else
|
55
|
-
Models::Gem.release_date(name, version)
|
57
|
+
Models::Gem.release_date(name, version, @http)
|
56
58
|
end
|
57
59
|
end
|
58
60
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libyear-bundler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jared Beck
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date: 2025-
|
10
|
+
date: 2025-10-09 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: bundler
|
@@ -30,7 +29,6 @@ dependencies:
|
|
30
29
|
- - "<"
|
31
30
|
- !ruby/object:Gem::Version
|
32
31
|
version: '3'
|
33
|
-
description:
|
34
32
|
email:
|
35
33
|
- jared@jaredbeck.com
|
36
34
|
executables:
|
@@ -60,7 +58,6 @@ homepage: https://libyear.com
|
|
60
58
|
licenses:
|
61
59
|
- GPL-3.0-only
|
62
60
|
metadata: {}
|
63
|
-
post_install_message:
|
64
61
|
rdoc_options: []
|
65
62
|
require_paths:
|
66
63
|
- lib
|
@@ -75,8 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
72
|
- !ruby/object:Gem::Version
|
76
73
|
version: '0'
|
77
74
|
requirements: []
|
78
|
-
rubygems_version: 3.2
|
79
|
-
signing_key:
|
75
|
+
rubygems_version: 3.6.2
|
80
76
|
specification_version: 4
|
81
77
|
summary: A simple measure of dependency freshness
|
82
78
|
test_files: []
|