gem_fresh 0.1.3 → 0.1.4

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: 889bacc2aaf73f34a96a60eb81f64ac11b3a6282
4
- data.tar.gz: 10b2f31c5c0948b64e9e7e1ec13766629b04088f
3
+ metadata.gz: 1f2733babeb742036bb0c5f44ca989e134c9e3d1
4
+ data.tar.gz: 13578767e4031328f1d254c6031637d0bb8a5a01
5
5
  SHA512:
6
- metadata.gz: 68436a8406863783bd9105e82eccb2f319d8b5a5edee200d22b8012571038ee1c1b79f256c3435d1833d5ef34168b2c2daa71a6b3a112d3befe65aa46f06f507
7
- data.tar.gz: 1fb5f4e100cacc8d1bab875550b7f6c867bfef3cf02752626d1805e0f73ee7860d28b17157245573243380896b2ce550146b1efcab9abad6a67f01b8ec3cc13b
6
+ metadata.gz: 491cc3b12198368dfaf858ed87b862f0a931bb433e0c3f121e677f4ef3ae20d9233e56b8dd7212fd114dc1649200d607d2f26f4c5be4b0f70b735b82f3981133
7
+ data.tar.gz: 6e4e72337ca1fff60ee28f349bea9ce89892c96b7cf0924cda9824630fd085e6c50fa82a455fa96c9ac43874c129e96f59e5bf6be73124b37871f597e173dd4f
@@ -6,8 +6,8 @@ require 'gem_fresh/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "gem_fresh"
8
8
  spec.version = GemFresh::VERSION
9
- spec.authors = ["Anne Geiersbach"]
10
- spec.email = ["annasazi@gmail.com"]
9
+ spec.authors = ["Anne Geiersbach", "Parker Morse"]
10
+ spec.email = ["annasazi@gmail.com", "flashesofpanic@gmail.com"]
11
11
 
12
12
  spec.summary = %q{Quantifying the freshness of your gems.}
13
13
  spec.homepage = "https://github.com/dmcouncil/gem_fresh"
@@ -18,6 +18,6 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.9"
22
- spec.add_development_dependency "rake", "~> 10.0"
21
+ spec.add_dependency "bundler", "~> 1.9"
22
+ spec.add_dependency "rake", "~> 10.0"
23
23
  end
@@ -4,6 +4,7 @@ module GemFresh
4
4
  attr_reader :gem_info
5
5
 
6
6
  def initialize
7
+ @bundler_version = GemVersion.new(::Bundler::VERSION)
7
8
  figure_out_outdated_gems
8
9
  end
9
10
 
@@ -12,54 +13,62 @@ module GemFresh
12
13
  def figure_out_outdated_gems
13
14
  @gem_info ={}
14
15
  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)
16
+ if @bundler_version.major <= 1 && @bundler_version.minor < 12
17
+ line =~ /\A\s*\*\s+(\S+)\s+\((.+)\).*\Z/
18
+ gem_name = $1
19
+ version_data = $2
20
+ if @bundler_version.minor < 10
21
+ @gem_info[gem_name] = extract_older_bundler_data(version_data)
22
+ else
23
+ @gem_info[gem_name] = extract_newer_bundler_data(version_data)
24
+ end
25
+ else
26
+ # Output from the --porcelain flag is simpler
27
+ line =~ /\A(\S+)\s+\((.+)\).*\Z/
28
+ gem_name = $1
29
+ version_data = $2
30
+ @gem_info[gem_name] = extract_newer_bundler_data(version_data)
31
+ end
19
32
  end
20
33
  end
21
34
 
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
44
- #
45
- # Sample lines from `bundle outdated` look like this:
46
- #
47
- # * airbrake (4.1.0 > 3.1.3)
48
- # * annotate (2.6.5 > 2.6.0.beta2) Gemfile specifies "= 2.6.0.beta2"
49
- # * bootstrap-multiselect-rails (0.9.5 > 0.0.4)
50
- # * byebug (3.5.1 > 2.5.0)
51
- # * enum_field (0.2.0 bff7873 > 0.2.0)
52
- #
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
35
+ def extract_newer_bundler_data(version_data)
36
+ #
37
+ # Sample lines from `bundle outdated` look like this (without the leading * in some versions):
38
+ #
39
+ # * rspec-rails (newest 3.4.0, installed 3.2.3, requested ~> 3.2.3) in groups "development, test"
40
+ # * zeus (newest 0.15.4, installed 0.13.3) in group "test"
41
+ # * websocket-driver (newest 0.6.3, installed 0.5.4)
42
+ #
43
+ versions = version_data.split(', ').map(&:strip).map(&:split) # [["newest", "4.2.5"], ["installed", "3.2.22"], ["requested", "=", "3.2.22"]]
44
+ version_hash = {}
45
+ versions.each { |v| version_hash[v.first.to_sym] = v.last unless v.size > 2 }
46
+ return { available_version: GemVersion.new(version_hash[:newest]),
47
+ current_version: GemVersion.new(version_hash.try(:installed, version_hash[:newest])) }
48
+ end
49
+
50
+ def extract_older_bundler_data(version_data)
51
+ #
52
+ # Sample lines from `bundle outdated` look like this:
53
+ #
54
+ # * airbrake (4.1.0 > 3.1.3)
55
+ # * annotate (2.6.5 > 2.6.0.beta2) Gemfile specifies "= 2.6.0.beta2"
56
+ # * bootstrap-multiselect-rails (0.9.5 > 0.0.4)
57
+ # * byebug (3.5.1 > 2.5.0)
58
+ # * enum_field (0.2.0 bff7873 > 0.2.0)
59
+ #
60
+ versions = version_data.split(" > ").map(&:strip) # ["0.2.0 bff7873", "0.2.0"]
61
+ versions = versions.map{|v| v.split(/\s/).first} # ["0.2.0", "0.2.0"]
62
+ return { available_version: GemVersion.new(versions.first),
63
+ current_version: GemVersion.new(versions.last) }
58
64
  end
59
65
 
60
66
  def raw_gem_info_from_bundler
61
- output = %x{ bundle outdated }
62
- just_the_gem_lines = output.split("\n").map(&:strip).select do |line|
67
+ if @bundler_version.major > 1 || (@bundler_version.major == 1 && @bundler_version.minor >= 12)
68
+ # All lines are useful when using the --porcelain flag
69
+ return %x{ bundle outdated --porcelain }
70
+ end
71
+ just_the_gem_lines = %x{ bundle outdated }.split("\n").map(&:strip).select do |line|
63
72
  line =~ /\A\s*\*\s+\w/
64
73
  end
65
74
  just_the_gem_lines
@@ -1,3 +1,3 @@
1
1
  module GemFresh
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_fresh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anne Geiersbach
8
+ - Parker Morse
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2016-03-07 00:00:00.000000000 Z
12
+ date: 2016-06-06 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -17,7 +18,7 @@ dependencies:
17
18
  - - ~>
18
19
  - !ruby/object:Gem::Version
19
20
  version: '1.9'
20
- type: :development
21
+ type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
@@ -31,7 +32,7 @@ dependencies:
31
32
  - - ~>
32
33
  - !ruby/object:Gem::Version
33
34
  version: '10.0'
34
- type: :development
35
+ type: :runtime
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
@@ -41,13 +42,13 @@ dependencies:
41
42
  description:
42
43
  email:
43
44
  - annasazi@gmail.com
45
+ - flashesofpanic@gmail.com
44
46
  executables: []
45
47
  extensions: []
46
48
  extra_rdoc_files: []
47
49
  files:
48
50
  - .gitignore
49
51
  - .rspec
50
- - .travis.yml
51
52
  - Gemfile
52
53
  - LICENSE.txt
53
54
  - README.md
@@ -1,3 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.0.0