libyear-bundler 0.5.0 → 0.5.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 +5 -5
- data/.rubocop.yml +6 -6
- data/.rubocop_todo.yml +0 -8
- data/CHANGELOG.md +20 -1
- data/CONTRIBUTING.md +1 -1
- data/README.md +32 -25
- data/bin/test +6 -0
- data/lib/libyear_bundler/bundle_outdated.rb +12 -0
- data/lib/libyear_bundler/models/ruby.rb +26 -15
- data/lib/libyear_bundler/report.rb +9 -6
- data/lib/libyear_bundler/version.rb +1 -1
- data/libyear-bundler.gemspec +3 -3
- metadata +22 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 3b113205ec01de873ddfdb08d3f57bae32d490e7c8507fd1a66a1fb6b3eb908b
|
|
4
|
+
data.tar.gz: 6d8e7d769640f59408f32d348cbef9c3b0ac05afa4d599d1bf1263e6eb9c236c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e0faaddd13daf54352167af88c80299210f4cdb7bae8509406058f8322e5a0d1eb637d8d75a22cebc0a9384b6c60c2e2b7166561f52c7dee9aa9f43e283ea7af
|
|
7
|
+
data.tar.gz: cbed8858a0ef38a2ce323354add6bd64035ffe43bd69cd41f0d381f5486c27b9d81d20e7e8e01424bd6eb5d5e5f93054a5ec3f6ed51a8d1581ffbad0eaae4859
|
data/.rubocop.yml
CHANGED
|
@@ -3,6 +3,12 @@ inherit_from: .rubocop_todo.yml
|
|
|
3
3
|
AllCops:
|
|
4
4
|
TargetRubyVersion: 2.1.10
|
|
5
5
|
|
|
6
|
+
Layout/IndentArray:
|
|
7
|
+
EnforcedStyle: consistent
|
|
8
|
+
|
|
9
|
+
Layout/MultilineMethodCallIndentation:
|
|
10
|
+
EnforcedStyle: indented
|
|
11
|
+
|
|
6
12
|
Metrics/AbcSize:
|
|
7
13
|
Max: 27
|
|
8
14
|
|
|
@@ -20,11 +26,5 @@ Metrics/LineLength:
|
|
|
20
26
|
Metrics/MethodLength:
|
|
21
27
|
Enabled: false
|
|
22
28
|
|
|
23
|
-
Style/IndentArray:
|
|
24
|
-
EnforcedStyle: consistent
|
|
25
|
-
|
|
26
|
-
Style/MultilineMethodCallIndentation:
|
|
27
|
-
EnforcedStyle: indented
|
|
28
|
-
|
|
29
29
|
Style/StringLiterals:
|
|
30
30
|
Enabled: false
|
data/.rubocop_todo.yml
CHANGED
|
@@ -6,14 +6,6 @@
|
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
|
8
8
|
|
|
9
|
-
# Offense count: 1
|
|
10
|
-
# Cop supports --auto-correct.
|
|
11
|
-
# Configuration parameters: Include, TreatCommentsAsGroupSeparators.
|
|
12
|
-
# Include: **/*.gemspec
|
|
13
|
-
Gemspec/OrderedDependencies:
|
|
14
|
-
Exclude:
|
|
15
|
-
- 'libyear-bundler.gemspec'
|
|
16
|
-
|
|
17
9
|
# Offense count: 1
|
|
18
10
|
# Cop supports --auto-correct.
|
|
19
11
|
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
data/CHANGELOG.md
CHANGED
|
@@ -17,7 +17,26 @@ Fixed:
|
|
|
17
17
|
|
|
18
18
|
- None
|
|
19
19
|
|
|
20
|
-
## 0.5.
|
|
20
|
+
## 0.5.1 (2019-05-09)
|
|
21
|
+
|
|
22
|
+
Breaking changes:
|
|
23
|
+
|
|
24
|
+
- None
|
|
25
|
+
|
|
26
|
+
Added:
|
|
27
|
+
|
|
28
|
+
- None
|
|
29
|
+
|
|
30
|
+
Fixed:
|
|
31
|
+
|
|
32
|
+
- Stable Ruby releases are no longer considered pre-releases (80534fa)
|
|
33
|
+
- Avoid crash due to malformed version strings by skipping those dependencies (7b0b2cf)
|
|
34
|
+
|
|
35
|
+
Dependencies:
|
|
36
|
+
|
|
37
|
+
- Support bundler 2
|
|
38
|
+
|
|
39
|
+
## 0.5.0 (2017-12-27)
|
|
21
40
|
|
|
22
41
|
Breaking changes:
|
|
23
42
|
|
data/CONTRIBUTING.md
CHANGED
|
@@ -12,7 +12,7 @@ bundle exec rspec
|
|
|
12
12
|
## Releases
|
|
13
13
|
|
|
14
14
|
1. Set the version in `lib/libyear_bundler/version.rb`
|
|
15
|
-
- Follow
|
|
15
|
+
- Follow SemVer
|
|
16
16
|
- Only use integer-dot-integer-dot-integer format, never "pre-releases"
|
|
17
17
|
1. In the changelog,
|
|
18
18
|
- Replace "Unreleased" with the date in ISO-8601 format
|
data/README.md
CHANGED
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
A simple measure of dependency freshness for ruby apps.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
```bash
|
|
6
|
+
$ libyear-bundler Gemfile
|
|
7
|
+
activesupport 4.2.7.1 2016-08-10 5.1.3 2017-08-03 1.0
|
|
8
|
+
i18n 0.8.0 2017-01-31 0.8.6 2017-07-10 0.4
|
|
9
|
+
json 1.8.6 2017-01-13 2.1.0 2017-04-18 0.3
|
|
10
|
+
System is 1.7 libyears behind
|
|
11
|
+
```
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
dependency freshness outlined in the paper are available in libyear-bundler. See
|
|
13
|
-
the Usage section for details.
|
|
13
|
+
`libyear-bundler` tells you how out-of-date your Gemfile is, in *a single
|
|
14
|
+
number*.
|
|
14
15
|
|
|
15
16
|
# Install
|
|
16
17
|
|
|
@@ -20,31 +21,30 @@ gem install libyear-bundler
|
|
|
20
21
|
|
|
21
22
|
## Usage
|
|
22
23
|
|
|
23
|
-
Run `libyear-bundler` in a directory with a Gemfile.
|
|
24
|
-
For simpler output, see the `--grand-total` option.
|
|
24
|
+
Run `libyear-bundler` in a directory with a Gemfile.
|
|
25
25
|
|
|
26
|
-
###
|
|
26
|
+
### `--libyears` (default)
|
|
27
27
|
|
|
28
|
-
#### `--libyears` (default)
|
|
29
28
|
Measures the time between your dependencies' installed and newest versions, in
|
|
30
29
|
years.
|
|
31
30
|
|
|
32
31
|
```bash
|
|
33
32
|
$ libyear-bundler Gemfile
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
activesupport 4.2.7.1 2016-08-10 5.1.3 2017-08-03 1.0
|
|
34
|
+
i18n 0.8.0 2017-01-31 0.8.6 2017-07-10 0.4
|
|
35
|
+
json 1.8.6 2017-01-13 2.1.0 2017-04-18 0.3
|
|
36
|
+
minitest 5.10.1 2016-12-02 5.10.3 2017-07-21 0.6
|
|
37
|
+
minitest_to_rspec 0.6.0 2015-06-09 0.8.0 2017-01-02 1.6
|
|
38
|
+
ruby_parser 3.8.4 2017-01-13 3.10.1 2017-07-21 0.5
|
|
39
|
+
sexp_processor 4.8.0 2017-02-01 4.10.0 2017-07-17 0.5
|
|
40
|
+
thread_safe 0.3.5 2015-03-11 0.3.6 2017-02-22 2.0
|
|
41
|
+
tzinfo 1.2.2 2014-08-08 1.2.3 2017-03-25 2.6
|
|
43
42
|
System is 9.4 libyears behind
|
|
44
43
|
|
|
45
44
|
```
|
|
46
45
|
|
|
47
|
-
|
|
46
|
+
### `--releases`
|
|
47
|
+
|
|
48
48
|
Measures the number of releases between your dependencies' installed and newest
|
|
49
49
|
versions
|
|
50
50
|
|
|
@@ -63,8 +63,8 @@ Total releases behind: 70
|
|
|
63
63
|
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
+
### `--versions`
|
|
66
67
|
|
|
67
|
-
#### `--versions`
|
|
68
68
|
Measures the number of major, minor, and patch versions between your
|
|
69
69
|
dependencies' installed and newest versions
|
|
70
70
|
|
|
@@ -83,7 +83,8 @@ Major, minor, patch versions behind: 2, 6, 10
|
|
|
83
83
|
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
### `--all`
|
|
87
|
+
|
|
87
88
|
Returns relevant data for each outdated gem, including 'libyears', 'releases',
|
|
88
89
|
and 'versions' metrics
|
|
89
90
|
|
|
@@ -103,7 +104,8 @@ Total releases behind: 70
|
|
|
103
104
|
Major, minor, patch versions behind: 2, 6, 10
|
|
104
105
|
```
|
|
105
106
|
|
|
106
|
-
|
|
107
|
+
### `--grand-total`
|
|
108
|
+
|
|
107
109
|
With no other options, returns the grand-total of libyears. Used with other
|
|
108
110
|
flags, returns the associated grand-total.
|
|
109
111
|
|
|
@@ -127,6 +129,11 @@ $ libyear-bundler Gemfile --all --grand-total
|
|
|
127
129
|
|
|
128
130
|
See CONTRIBUTING.md
|
|
129
131
|
|
|
132
|
+
## Acknowledgements
|
|
133
|
+
|
|
134
|
+
The inspiration for libyear comes from the technical report “Measuring
|
|
135
|
+
Dependency Freshness in Software Systems”[1].
|
|
136
|
+
|
|
130
137
|
---
|
|
131
138
|
[1] J. Cox, E. Bouwers, M. van Eekelen and J. Visser, Measuring Dependency
|
|
132
139
|
Freshness in Software Systems. In Proceedings of the 37th International
|
data/bin/test
ADDED
|
@@ -19,6 +19,11 @@ module LibyearBundler
|
|
|
19
19
|
bundle_outdated.lines.each_with_object([]) do |line, gems|
|
|
20
20
|
match = BOP_FMT.match(line)
|
|
21
21
|
next if match.nil?
|
|
22
|
+
if malformed_version_strings?(match)
|
|
23
|
+
warn "Skipping #{match['name']} because of a malformed version string"
|
|
24
|
+
next
|
|
25
|
+
end
|
|
26
|
+
|
|
22
27
|
gem = ::LibyearBundler::Models::Gem.new(
|
|
23
28
|
match['name'],
|
|
24
29
|
match['installed'],
|
|
@@ -47,5 +52,12 @@ module LibyearBundler
|
|
|
47
52
|
end
|
|
48
53
|
stdout
|
|
49
54
|
end
|
|
55
|
+
|
|
56
|
+
# We rely on Gem::Version to handle version strings. If the string is malformed (usually because
|
|
57
|
+
# of a gem installed from git), then we won't be able to determine the dependency's freshness
|
|
58
|
+
def malformed_version_strings?(dependency)
|
|
59
|
+
!Gem::Version.correct?(dependency['installed']) ||
|
|
60
|
+
!Gem::Version.correct?(dependency['newest'])
|
|
61
|
+
end
|
|
50
62
|
end
|
|
51
63
|
end
|
|
@@ -43,7 +43,7 @@ module LibyearBundler
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def newest_version
|
|
46
|
-
::Gem::Version.new(
|
|
46
|
+
::Gem::Version.new(all_stable_versions.first)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def newest_version_release_date
|
|
@@ -70,9 +70,6 @@ module LibyearBundler
|
|
|
70
70
|
|
|
71
71
|
private
|
|
72
72
|
|
|
73
|
-
# We'll only consider non-prerelease versions when determining the
|
|
74
|
-
# newest version
|
|
75
|
-
#
|
|
76
73
|
# The following URL is the only official, easily-parseable document with
|
|
77
74
|
# Ruby version information that I'm aware of, but is not supported as such
|
|
78
75
|
# (https://github.com/ruby/www.ruby-lang.org/pull/1637#issuecomment-344934173).
|
|
@@ -87,29 +84,47 @@ module LibyearBundler
|
|
|
87
84
|
# The Date object is passed through here due to a bug in
|
|
88
85
|
# YAML#safe_load
|
|
89
86
|
# https://github.com/ruby/psych/issues/262
|
|
90
|
-
::YAML.safe_load(response.body, [Date])
|
|
91
|
-
::Gem::Version.new(version['version']).prerelease?
|
|
92
|
-
end
|
|
87
|
+
::YAML.safe_load(response.body, [Date])
|
|
93
88
|
end
|
|
94
89
|
end
|
|
95
90
|
|
|
91
|
+
# We'll only consider non-prerelease versions when analyzing ruby version,
|
|
92
|
+
# which we also implcitly do for gem versions because that's bundler's
|
|
93
|
+
# default behavior
|
|
94
|
+
def all_stable_versions
|
|
95
|
+
stable_releases = all_versions.reject do |version|
|
|
96
|
+
::Gem::Version.new(version['version']).prerelease?
|
|
97
|
+
end
|
|
98
|
+
stable_releases.map { |release| release['version'] }
|
|
99
|
+
end
|
|
100
|
+
|
|
96
101
|
def installed_version_sequence_index
|
|
97
|
-
|
|
102
|
+
all_stable_versions.index(installed_version.to_s)
|
|
98
103
|
end
|
|
99
104
|
|
|
100
105
|
def newest_version_sequence_index
|
|
101
|
-
|
|
106
|
+
all_stable_versions.index(newest_version.to_s)
|
|
102
107
|
end
|
|
103
108
|
|
|
104
109
|
def release_date(version)
|
|
105
|
-
v =
|
|
110
|
+
v = all_stable_versions.detect { |ver| ver['version'] == version }
|
|
106
111
|
# YAML#safe_load provides an already-parsed Date object, so the following
|
|
107
112
|
# is a Date object
|
|
108
113
|
v['date']
|
|
109
114
|
end
|
|
110
115
|
|
|
111
116
|
def shell_out_to_ruby
|
|
112
|
-
|
|
117
|
+
# ruby appends a 'p' followed by the patch level number
|
|
118
|
+
# to the version number for stable releases, which returns
|
|
119
|
+
# a false positive using `::Gem::Version#prerelease?`.
|
|
120
|
+
# Understandably, because ruby is not a gem, but we'd like
|
|
121
|
+
# to use `prerelease?`.
|
|
122
|
+
# Pre-releases are appended with 'dev', and so adhere to
|
|
123
|
+
# `::Gem::Version`'s definition of a pre-release.
|
|
124
|
+
# Sources:
|
|
125
|
+
# - https://github.com/ruby/ruby/blob/trunk/version.h#L37
|
|
126
|
+
# - https://ruby-doc.org/stdlib-1.9.3/libdoc/rubygems/rdoc/Version.html
|
|
127
|
+
`ruby --version`.split[1].gsub(/p\d/, '')
|
|
113
128
|
end
|
|
114
129
|
|
|
115
130
|
def version_from_bundler
|
|
@@ -130,10 +145,6 @@ module LibyearBundler
|
|
|
130
145
|
def version_from_ruby
|
|
131
146
|
::Gem::Version.new(shell_out_to_ruby)
|
|
132
147
|
end
|
|
133
|
-
|
|
134
|
-
def versions_sequence
|
|
135
|
-
all_versions.map { |version| version['version'] }
|
|
136
|
-
end
|
|
137
148
|
end
|
|
138
149
|
end
|
|
139
150
|
end
|
|
@@ -82,20 +82,23 @@ module LibyearBundler
|
|
|
82
82
|
|
|
83
83
|
def put_version_delta_summary(sum_major_version, sum_minor_version, sum_patch_version)
|
|
84
84
|
puts format(
|
|
85
|
-
"Major, minor, patch versions behind:
|
|
86
|
-
sum_major_version,
|
|
87
|
-
sum_minor_version,
|
|
88
|
-
sum_patch_version
|
|
85
|
+
"Major, minor, patch versions behind: %<major>d, %<minor>d, %<patch>d",
|
|
86
|
+
major: sum_major_version,
|
|
87
|
+
minor: sum_minor_version,
|
|
88
|
+
patch: sum_patch_version
|
|
89
89
|
)
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
def put_sum_seq_delta_summary(sum_seq_delta)
|
|
93
|
-
puts format(
|
|
93
|
+
puts format(
|
|
94
|
+
"Total releases behind: %<seq_delta>d",
|
|
95
|
+
seq_delta: sum_seq_delta
|
|
96
|
+
)
|
|
94
97
|
end
|
|
95
98
|
|
|
96
99
|
def put_summary(summary)
|
|
97
100
|
if [:libyears?, :releases?, :versions?].all? { |opt| @options.send(opt) }
|
|
98
|
-
put_libyear_summary(summary[:
|
|
101
|
+
put_libyear_summary(summary[:sum_libyears])
|
|
99
102
|
put_sum_seq_delta_summary(summary[:sum_seq_delta])
|
|
100
103
|
put_version_delta_summary(
|
|
101
104
|
summary[:sum_major_version],
|
data/libyear-bundler.gemspec
CHANGED
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
spec.executables = ["libyear-bundler"]
|
|
20
20
|
spec.require_paths = ["lib"]
|
|
21
21
|
spec.required_ruby_version = ">= 2.1"
|
|
22
|
-
spec.add_dependency "bundler", "
|
|
23
|
-
spec.add_development_dependency "
|
|
24
|
-
spec.add_development_dependency "
|
|
22
|
+
spec.add_dependency "bundler", ">= 1.14", "< 3"
|
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.7"
|
|
24
|
+
spec.add_development_dependency "rubocop", "~> 0.52.1"
|
|
25
25
|
end
|
metadata
CHANGED
|
@@ -1,57 +1,63 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: libyear-bundler
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.1
|
|
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: 2019-05-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '1.14'
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '3'
|
|
20
23
|
type: :runtime
|
|
21
24
|
prerelease: false
|
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
26
|
requirements:
|
|
24
|
-
- - "
|
|
27
|
+
- - ">="
|
|
25
28
|
- !ruby/object:Gem::Version
|
|
26
29
|
version: '1.14'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '3'
|
|
27
33
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
34
|
+
name: rspec
|
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
|
30
36
|
requirements:
|
|
31
|
-
- - "
|
|
37
|
+
- - "~>"
|
|
32
38
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
39
|
+
version: '3.7'
|
|
34
40
|
type: :development
|
|
35
41
|
prerelease: false
|
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
43
|
requirements:
|
|
38
|
-
- - "
|
|
44
|
+
- - "~>"
|
|
39
45
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
46
|
+
version: '3.7'
|
|
41
47
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
48
|
+
name: rubocop
|
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
|
44
50
|
requirements:
|
|
45
|
-
- - "
|
|
51
|
+
- - "~>"
|
|
46
52
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
53
|
+
version: 0.52.1
|
|
48
54
|
type: :development
|
|
49
55
|
prerelease: false
|
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
57
|
requirements:
|
|
52
|
-
- - "
|
|
58
|
+
- - "~>"
|
|
53
59
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
60
|
+
version: 0.52.1
|
|
55
61
|
description:
|
|
56
62
|
email:
|
|
57
63
|
- jared@jaredbeck.com
|
|
@@ -70,6 +76,7 @@ files:
|
|
|
70
76
|
- LICENSE.txt
|
|
71
77
|
- README.md
|
|
72
78
|
- bin/libyear-bundler
|
|
79
|
+
- bin/test
|
|
73
80
|
- lib/libyear_bundler.rb
|
|
74
81
|
- lib/libyear_bundler/bundle_outdated.rb
|
|
75
82
|
- lib/libyear_bundler/calculators/libyear.rb
|
|
@@ -101,8 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
101
108
|
- !ruby/object:Gem::Version
|
|
102
109
|
version: '0'
|
|
103
110
|
requirements: []
|
|
104
|
-
|
|
105
|
-
rubygems_version: 2.6.13
|
|
111
|
+
rubygems_version: 3.0.3
|
|
106
112
|
signing_key:
|
|
107
113
|
specification_version: 4
|
|
108
114
|
summary: A simple measure of dependency freshness
|