gem_fresh 0.1.3 → 0.1.4

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 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