gemtronics 0.5.3 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/gemtronics +24 -0
- data/lib/gemtronics/definition.rb +19 -0
- data/lib/gemtronics/manager.rb +22 -0
- metadata +2 -2
data/bin/gemtronics
CHANGED
@@ -22,6 +22,30 @@ require 'fileutils'
|
|
22
22
|
require 'yaml'
|
23
23
|
|
24
24
|
case command
|
25
|
+
when 'outdated', 'outdated?'
|
26
|
+
require 'benchmark'
|
27
|
+
path = ARGV[1] || File.join('config', 'gemtronics.rb')
|
28
|
+
Gemtronics.load(path)
|
29
|
+
puts "Please wait while we check the versions of your gems (This may take a few minutes)\n"
|
30
|
+
list = {}
|
31
|
+
elapsed = Benchmark.realtime {
|
32
|
+
list = Gemtronics.find_out_of_date_gems(true)
|
33
|
+
}
|
34
|
+
if list.empty?
|
35
|
+
puts ''
|
36
|
+
puts 'All of your gems are up to date!'
|
37
|
+
puts ''
|
38
|
+
else
|
39
|
+
puts ''
|
40
|
+
puts "There are #{list.size} out of date gem(s)."
|
41
|
+
puts ''
|
42
|
+
list.each do |gemdef|
|
43
|
+
puts "#{gemdef.name}\n\t#{gemdef.version} --> #{gemdef.update_version}"
|
44
|
+
end
|
45
|
+
puts ''
|
46
|
+
end
|
47
|
+
puts "-------------"
|
48
|
+
puts "Completed in #{elapsed} seconds."
|
25
49
|
when 'install'
|
26
50
|
path = ARGV[2] || File.join('config', 'gemtronics.rb')
|
27
51
|
Gemtronics.load(path)
|
@@ -9,6 +9,8 @@ module Gemtronics
|
|
9
9
|
# Get/set the source of the gem. Defaults to <tt>http://gems.rubyforge.org</tt>
|
10
10
|
attr_accessor :source
|
11
11
|
|
12
|
+
attr_accessor :update_version # :nodoc:
|
13
|
+
|
12
14
|
# Returns true/false if the gem should be required. Defaults to <tt>true</tt>.
|
13
15
|
def load?
|
14
16
|
# method built dynamically. This is just a stub for RDoc.
|
@@ -113,6 +115,23 @@ module Gemtronics
|
|
113
115
|
end
|
114
116
|
end
|
115
117
|
|
118
|
+
def has_update?
|
119
|
+
cmd = "gem list --remote ^#{self.name}$"
|
120
|
+
res = `#{cmd}`
|
121
|
+
return false unless res.is_a?(String)
|
122
|
+
res.match(/^#{self.name}\s\(([\d\.]+)/)
|
123
|
+
ext_v = $1
|
124
|
+
return false if ext_v.nil?
|
125
|
+
self.version.match(/[^\d]{0,2}(.+)$/)
|
126
|
+
v = $1
|
127
|
+
self.update_version = ext_v
|
128
|
+
return ext_v > v ? self : false
|
129
|
+
end
|
130
|
+
|
131
|
+
def <=>(other)
|
132
|
+
"#{self.name.downcase}-#{self.version}" <=> "#{other.name.downcase}-#{other.version}"
|
133
|
+
end
|
134
|
+
|
116
135
|
private
|
117
136
|
def self.build_method(name, defval = nil, key = name) # :nodoc:
|
118
137
|
define_method(name) do
|
data/lib/gemtronics/manager.rb
CHANGED
@@ -207,6 +207,28 @@ module Gemtronics
|
|
207
207
|
return res
|
208
208
|
end
|
209
209
|
|
210
|
+
def find_out_of_date_gems(indicate = false)
|
211
|
+
tested = []
|
212
|
+
outdated = []
|
213
|
+
self.groups.each do |name, group|
|
214
|
+
group.gems.each do |g|
|
215
|
+
unless tested.include?("#{g.name}-#{g.version}")
|
216
|
+
if indicate
|
217
|
+
$stdout.write('.')
|
218
|
+
$stdout.flush
|
219
|
+
end
|
220
|
+
v = g.has_update?
|
221
|
+
# puts "!!!#{g.name} #{v}"
|
222
|
+
if v
|
223
|
+
outdated << v
|
224
|
+
end
|
225
|
+
tested << "#{g.name}-#{g.version}"
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
return outdated.sort
|
230
|
+
end
|
231
|
+
|
210
232
|
def for_rails(config = nil, options = {})
|
211
233
|
options = {:gemtronics_path => File.join(RAILS_ROOT, 'config', 'gemtronics.rb'),
|
212
234
|
:group => RAILS_ENV}.merge(options)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemtronics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- markbates
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-18 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|