gem_fresh 0.1.1 → 0.1.3
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/README.md +5 -0
- data/lib/gem_fresh/config.rb +1 -1
- data/lib/gem_fresh/missing.rb +1 -1
- data/lib/gem_fresh/outdated.rb +35 -14
- data/lib/gem_fresh/version.rb +1 -1
- data/lib/tasks/metrics.rake +6 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 889bacc2aaf73f34a96a60eb81f64ac11b3a6282
|
4
|
+
data.tar.gz: 10b2f31c5c0948b64e9e7e1ec13766629b04088f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68436a8406863783bd9105e82eccb2f319d8b5a5edee200d22b8012571038ee1c1b79f256c3435d1833d5ef34168b2c2daa71a6b3a112d3befe65aa46f06f507
|
7
|
+
data.tar.gz: 1fb5f4e100cacc8d1bab875550b7f6c867bfef3cf02752626d1805e0f73ee7860d28b17157245573243380896b2ce550146b1efcab9abad6a67f01b8ec3cc13b
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# GemFresh
|
2
2
|
|
3
|
+
[](https://codeclimate.com/github/dmcouncil/gem_fresh)
|
4
|
+
|
3
5
|
The purpose of GemFresh is to expose useful information about how outdated your application gems are.
|
4
6
|
|
5
7
|
## Setup
|
@@ -56,3 +58,6 @@ Whenever you add a gem to your Gemfile, add it to GemFresh.rb so that the rake t
|
|
56
58
|
|
57
59
|
Gems are assigned points. The more central a gem is, and the more outdated it is, the higher the points. You can think of the points as a "bounty" on the gem, telling you how badly it needs to be updated.
|
58
60
|
|
61
|
+
## About
|
62
|
+
|
63
|
+
GemFresh was originally developed at [the District Management Council](http://dmcouncil.org) by Wyatt Greene, and is now maintained by [DMC](/dmcouncil).
|
data/lib/gem_fresh/config.rb
CHANGED
@@ -43,7 +43,7 @@ module GemFresh
|
|
43
43
|
|
44
44
|
def clean_gems(gems)
|
45
45
|
if gems.include?('rails')
|
46
|
-
raise "Do not explicitly specify the rails gem in
|
46
|
+
raise "Do not explicitly specify the rails gem in gem_fresh.rb." #TODO: why not?
|
47
47
|
end
|
48
48
|
gems
|
49
49
|
end
|
data/lib/gem_fresh/missing.rb
CHANGED
@@ -7,7 +7,7 @@ module GemFresh
|
|
7
7
|
|
8
8
|
def check_for_missing_gems!
|
9
9
|
if missing_gems.any?
|
10
|
-
message = "The following gems are in your Gemfile but not in your
|
10
|
+
message = "The following gems are in your Gemfile but not in your gem_fresh.rb file:\n"
|
11
11
|
missing_gems.each do |gem_name|
|
12
12
|
message << " #{gem_name}\n"
|
13
13
|
end
|
data/lib/gem_fresh/outdated.rb
CHANGED
@@ -7,11 +7,40 @@ module GemFresh
|
|
7
7
|
figure_out_outdated_gems
|
8
8
|
end
|
9
9
|
|
10
|
-
|
10
|
+
private
|
11
11
|
|
12
12
|
def figure_out_outdated_gems
|
13
13
|
@gem_info ={}
|
14
14
|
raw_gem_info_from_bundler.each do |line|
|
15
|
+
line =~ /\A\s*\*\s+(\S+)\s+\((.+)\).*\Z/
|
16
|
+
gem_name = $1
|
17
|
+
version_data = $2
|
18
|
+
@gem_info[gem_name] = extract_versions(version_data)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def extract_versions(data_string)
|
23
|
+
# It looks like Bundler changed the format of the data
|
24
|
+
# returned by `bundle outdated` in version 1.10.
|
25
|
+
# Potential future refactor: decide which extraction
|
26
|
+
# method to use by actually asking Bundler which version
|
27
|
+
# it is and using the appropriate method for that version.
|
28
|
+
# Also: Bundler 1.12 will support `bundle outdated --parseable`
|
29
|
+
# which looks custom-made for this use case.
|
30
|
+
if data_string.include?("newest")
|
31
|
+
#
|
32
|
+
# Sample lines from `bundle outdated` look like this:
|
33
|
+
#
|
34
|
+
# * rspec-rails (newest 3.4.0, installed 3.2.3, requested ~> 3.2.3) in groups "development, test"
|
35
|
+
# * zeus (newest 0.15.4, installed 0.13.3) in group "test"
|
36
|
+
# * websocket-driver (newest 0.6.3, installed 0.5.4)
|
37
|
+
#
|
38
|
+
versions = data_string.split(', ').map(&:strip).map(&:split) # [["newest", "4.2.5"], ["installed", "3.2.22"], ["requested", "=", "3.2.22"]]
|
39
|
+
version_hash = {}
|
40
|
+
versions.each { |v| version_hash[v.first.to_sym] = v.last unless v.size > 2 }
|
41
|
+
return { available_version: GemVersion.new(version_hash[:newest]),
|
42
|
+
current_version: GemVersion.new(version_hash[:installed]) }
|
43
|
+
else
|
15
44
|
#
|
16
45
|
# Sample lines from `bundle outdated` look like this:
|
17
46
|
#
|
@@ -20,20 +49,12 @@ module GemFresh
|
|
20
49
|
# * bootstrap-multiselect-rails (0.9.5 > 0.0.4)
|
21
50
|
# * byebug (3.5.1 > 2.5.0)
|
22
51
|
# * enum_field (0.2.0 bff7873 > 0.2.0)
|
23
|
-
# or this:
|
24
|
-
# * responders (newest 2.1.0, installed 1.1.2) in group "default"
|
25
|
-
# * resque-retry (newest 1.4.0, installed 1.3.2) in group "default"
|
26
|
-
# * resque-status (newest 0.5.0, installed 0.4.1, requested = 0.4.1) in group "default"
|
27
|
-
# * rspec (newest 3.3.0, installed 3.2.0, requested ~> 3.2.0) in groups "development, test"
|
28
52
|
#
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
@gem_info[gem_name] = { available_version: GemVersion.new(version_numbers[0]),
|
35
|
-
current_version: GemVersion.new(version_numbers[1]) }
|
36
|
-
end
|
53
|
+
versions = data_string.split(" > ").map(&:strip) # ["0.2.0 bff7873", "0.2.0"]
|
54
|
+
versions = versions.map{|v| v.split(/\s/).first} # ["0.2.0", "0.2.0"]
|
55
|
+
return { available_version: GemVersion.new(versions.first),
|
56
|
+
current_version: GemVersion.new(versions.last) }
|
57
|
+
end
|
37
58
|
end
|
38
59
|
|
39
60
|
def raw_gem_info_from_bundler
|
data/lib/gem_fresh/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem_fresh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anne Geiersbach
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- lib/gem_fresh/railtie.rb
|
63
63
|
- lib/gem_fresh/reporter.rb
|
64
64
|
- lib/gem_fresh/version.rb
|
65
|
+
- lib/tasks/metrics.rake
|
65
66
|
homepage: https://github.com/dmcouncil/gem_fresh
|
66
67
|
licenses:
|
67
68
|
- MIT
|