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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2deeca659d41796ea26f4b6bed0ef6e115c732c9
4
- data.tar.gz: 775e5b4e6be6f1c53739a622f6808a759f5d49a7
3
+ metadata.gz: 889bacc2aaf73f34a96a60eb81f64ac11b3a6282
4
+ data.tar.gz: 10b2f31c5c0948b64e9e7e1ec13766629b04088f
5
5
  SHA512:
6
- metadata.gz: 65094f85476f668380dc7b10ed6433036dbefc83e7f0bc909615d56f7ea6bae9fe70e18064a1b00f323520365a0a980c19e48bd337b02199ca2406e071756881
7
- data.tar.gz: ded1915dd8ad5096672cbaeb54e7dd04f39e85dc33f996c036df8a1385f2123a2ff7877e9b9a5f115ef7b563ea3cc4bfa3468bf9d15d8609de7179f0bf4855cf
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).
@@ -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 Gemfresh.rb." #TODO: why not?
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
@@ -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 Gemfresh.rb file:\n"
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
@@ -7,11 +7,40 @@ module GemFresh
7
7
  figure_out_outdated_gems
8
8
  end
9
9
 
10
- private
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
- words = line.split
30
- words_that_contain_version_numbers = words.select {|word| word =~ /\d+\.\d+/ }
31
- version_numbers = words_that_contain_version_numbers.map {|word| word.gsub(/[\(\),]/, '') }
32
- line =~ /\A\s*\*\s+(\S+)/
33
- gem_name = $1
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
@@ -1,3 +1,3 @@
1
1
  module GemFresh
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -0,0 +1,6 @@
1
+ namespace :metrics do
2
+ desc "display outdated gem version metrics"
3
+ task :outdated_gems => :environment do
4
+ GemFresh::Reporter.new.report
5
+ end
6
+ end
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.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-02-08 00:00:00.000000000 Z
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