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 +4 -4
- data/gemfresh.gemspec +4 -4
- data/lib/gem_fresh/outdated.rb +51 -42
- data/lib/gem_fresh/version.rb +1 -1
- metadata +6 -5
- data/.travis.yml +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f2733babeb742036bb0c5f44ca989e134c9e3d1
|
4
|
+
data.tar.gz: 13578767e4031328f1d254c6031637d0bb8a5a01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 491cc3b12198368dfaf858ed87b862f0a931bb433e0c3f121e677f4ef3ae20d9233e56b8dd7212fd114dc1649200d607d2f26f4c5be4b0f70b735b82f3981133
|
7
|
+
data.tar.gz: 6e4e72337ca1fff60ee28f349bea9ce89892c96b7cf0924cda9824630fd085e6c50fa82a455fa96c9ac43874c129e96f59e5bf6be73124b37871f597e173dd4f
|
data/gemfresh.gemspec
CHANGED
@@ -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.
|
22
|
-
spec.
|
21
|
+
spec.add_dependency "bundler", "~> 1.9"
|
22
|
+
spec.add_dependency "rake", "~> 10.0"
|
23
23
|
end
|
data/lib/gem_fresh/outdated.rb
CHANGED
@@ -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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
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
|
-
|
62
|
-
|
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
|
data/lib/gem_fresh/version.rb
CHANGED
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.
|
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-
|
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: :
|
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: :
|
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
|
data/.travis.yml
DELETED