gem_fresh 0.1.1 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Code Climate](https://codeclimate.com/github/dmcouncil/gem_fresh/badges/gpa.svg)](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
|