warning-shot 0.8.9 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +1 -0
- data/bin/warning-shot +11 -0
- data/lib/warning_shot/base_extensions.rb +8 -0
- data/lib/warning_shot/dep_checker.rb +7 -3
- data/lib/warning_shot/gem_handler.rb +40 -81
- data/lib/warning_shot/version.rb +2 -4
- data/lib/warning_shot.rb +9 -5
- metadata +3 -2
data/Manifest.txt
CHANGED
@@ -23,6 +23,7 @@ images/ruby_fail.png
|
|
23
23
|
lib/warning_shot.rb
|
24
24
|
lib/warning_shot/dep_checker.rb
|
25
25
|
lib/warning_shot/template_generator.rb
|
26
|
+
lib/warning_shot/base_extensions.rb
|
26
27
|
lib/warning_shot/gem_handler.rb
|
27
28
|
lib/warning_shot/config_parser.rb
|
28
29
|
lib/warning_shot/test_script.rb
|
data/bin/warning-shot
CHANGED
@@ -49,6 +49,17 @@ BANNER
|
|
49
49
|
"Default: Not Generated! (If specified, default is '.')") { |OPTIONS[:templates]| }
|
50
50
|
opts.on("-h", "--help",
|
51
51
|
"Show this help message.") { puts opts; exit }
|
52
|
+
opts.on("-d", "--debug","Enable debugging."){
|
53
|
+
begin
|
54
|
+
require "ruby-debug"
|
55
|
+
Debugger.start
|
56
|
+
Debugger.settings[:autoeval] = true if Debugger.respond_to?(:settings)
|
57
|
+
puts "Debugger enabled"
|
58
|
+
rescue LoadError
|
59
|
+
puts "You need to install ruby-debug to run the server in debugging mode. With gems, use 'gem install ruby-debug'"
|
60
|
+
exit
|
61
|
+
end
|
62
|
+
}
|
52
63
|
|
53
64
|
begin
|
54
65
|
opts.parse!(ARGV)
|
@@ -189,14 +189,18 @@ module RippleNetworks
|
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
192
|
-
if self.options[:gems] && @gh.
|
193
|
-
gem_errors = @gh.
|
192
|
+
if self.options[:gems] && @gh.failed_installs.size > 0
|
193
|
+
gem_errors = @gh.failed_installs.size
|
194
194
|
record "#{gem_errors} gems failed to install:"
|
195
|
-
@gh.
|
195
|
+
@gh.failed_installs.each do |gem,message|
|
196
196
|
record "\t#{gem}: #{message}"
|
197
197
|
end
|
198
198
|
end
|
199
199
|
|
200
|
+
@gh.installed_gems.each do |gem|
|
201
|
+
record("#{gem.name} v. #{gem.version} was installed!",:info)
|
202
|
+
end
|
203
|
+
|
200
204
|
record("#{gem_errors} gems had errors", :error) if gem_errors > 0
|
201
205
|
@errors += gem_errors
|
202
206
|
|
@@ -1,3 +1,9 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubygems/rubygems_version'
|
3
|
+
require 'rubygems/defaults'
|
4
|
+
require 'rubygems/installer'
|
5
|
+
require 'rubygems/dependency_installer'
|
6
|
+
|
1
7
|
module RippleNetworks
|
2
8
|
module WarningShot
|
3
9
|
class GemHandler
|
@@ -5,28 +11,17 @@ module RippleNetworks
|
|
5
11
|
CONDITIONAL_RGX = /[^\d]*/.freeze
|
6
12
|
VERSION_RGX = /[\d\.]+/.freeze
|
7
13
|
|
8
|
-
|
9
|
-
require "./lib/warning_shot/gem_handler.rb"
|
10
|
-
gems = ["rake:>0.0.0","merb:>=0.4.0"]
|
11
|
-
include RippleNetworks::WarningShot
|
12
|
-
gh = GemHandler.new(gems)
|
13
|
-
gh.add(["RedCloth:>2.4.0"])
|
14
|
-
gh.remove(["merb"])
|
15
|
-
gh.add("merb:>=0.5.0")
|
16
|
-
gh.remove("RedCloth")
|
17
|
-
=end
|
18
|
-
|
19
|
-
attr_reader :gems, :missing_gems, :errors
|
14
|
+
attr_reader :gems_to_install, :missing_gems, :failed_installs, :installed_gems
|
20
15
|
|
21
16
|
|
22
17
|
def initialize(gem_list,do_install=false,install_dir=nil)
|
23
|
-
|
24
|
-
@gri = Gem::RemoteInstaller.new
|
18
|
+
|
25
19
|
@install_dir ||= Gem.dir
|
26
20
|
|
27
21
|
@missing_gems = {}
|
28
|
-
@
|
29
|
-
@
|
22
|
+
@installed_gems = []
|
23
|
+
@gems_to_install = split(gem_list)
|
24
|
+
@failed_installs = {}
|
30
25
|
|
31
26
|
check_gems
|
32
27
|
|
@@ -46,38 +41,49 @@ module RippleNetworks
|
|
46
41
|
|
47
42
|
|
48
43
|
def add(gems)
|
49
|
-
@
|
44
|
+
@gems_to_install.merge!(split(gems))
|
50
45
|
check_gems
|
51
46
|
end
|
52
47
|
|
53
48
|
|
54
49
|
def remove(gems)
|
55
|
-
gems.collect { |g| @
|
50
|
+
gems.collect { |g| @gems_to_install.delete(g) }
|
56
51
|
check_gems
|
57
52
|
end
|
58
53
|
|
59
54
|
|
60
55
|
def install!
|
61
|
-
failed_installs =
|
62
|
-
@errors = {}
|
56
|
+
@failed_installs = {}
|
63
57
|
|
58
|
+
#RubyGems DependencyInstaller installs all dependencies, and the gem, woot!
|
64
59
|
@missing_gems.each do |gem_name,gem_version|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
60
|
+
begin
|
61
|
+
dep_inst = Gem::DependencyInstaller.new(gem_name,gem_version,{:install_dir => @install_dir})
|
62
|
+
rescue Exception => e
|
63
|
+
#Invalid Gem Name / Version
|
64
|
+
@failed_installs[gem_name] = "Bad gem name or version #{gem_name} #{gem_version}"
|
65
|
+
end
|
66
|
+
|
67
|
+
#Determine what dependencies are missing
|
68
|
+
dep_inst.gather_dependencies
|
69
|
+
|
70
|
+
#Install missing dependencies
|
71
|
+
begin
|
72
|
+
dep_inst.install
|
73
|
+
@installed_gems.push(*dep_inst.installed_gems)
|
74
|
+
rescue Errno::EACCES => e
|
75
|
+
@failed_installs[gem_name] = "Invalid permissions . . . try running w/ sudo"
|
76
|
+
rescue Gem::FilePermissionError => e
|
77
|
+
@failed_installs[gem_name] = "Invalid permissions . . . try running w/ sudo"
|
78
|
+
rescue Exception => e
|
79
|
+
@failed_installs[gem_name] = e.message
|
80
|
+
end
|
76
81
|
end
|
77
82
|
|
83
|
+
Gem::cache.refresh!
|
78
84
|
check_gems
|
79
85
|
|
80
|
-
return failed_installs == 0
|
86
|
+
return @failed_installs.length == 0
|
81
87
|
end
|
82
88
|
|
83
89
|
|
@@ -150,63 +156,16 @@ module RippleNetworks
|
|
150
156
|
|
151
157
|
|
152
158
|
private
|
153
|
-
|
154
|
-
def install_dependencies(gem_name,gem_version)
|
155
|
-
#Find Dependencies
|
156
|
-
begin
|
157
|
-
deps = @gri.find_gem_to_install gem_name, gem_version
|
158
|
-
rescue Exception => e
|
159
|
-
#Invalid Gem Name / Version
|
160
|
-
return [false,"Bad gem name or version #{gem_name} #{gem_version}"]
|
161
|
-
end
|
162
|
-
|
163
|
-
#Determine what dependencies are missing
|
164
|
-
missing_deps = @gri.find_dependencies_not_installed deps[0].dependencies
|
165
|
-
|
166
|
-
#Install missing dependencies
|
167
|
-
begin
|
168
|
-
installed_deps = @gri.install_dependencies(missing_deps,true,@install_dir)
|
169
|
-
rescue Errno::EACCES => e
|
170
|
-
return [false, "Invalid permissions . . . try running w/ sudo"]
|
171
|
-
rescue Gem::FilePermissionError => e
|
172
|
-
return [false, "Invalid permissions . . . try running w/ sudo"]
|
173
|
-
rescue Exception => e
|
174
|
-
return [false,e.message]
|
175
|
-
end
|
176
|
-
|
177
|
-
return [true]
|
178
|
-
|
179
|
-
#Check that the number of missing dependencies is equal to the number installed
|
180
|
-
#if installed_deps.length == missing_deps.length
|
181
|
-
#else
|
182
|
-
#end
|
183
|
-
end
|
184
|
-
|
185
|
-
|
186
|
-
def install_gem(gem_name,gem_version)
|
187
|
-
begin
|
188
|
-
@gri.install(gem_name,gem_version,true,@install_dir)
|
189
|
-
return [true]
|
190
|
-
rescue Errno::EACCES => e
|
191
|
-
return [false, "Invalid permissions . . . try running w/ sudo"]
|
192
|
-
rescue Gem::FilePermissionError => e
|
193
|
-
return [false, "Invalid permissions... try running w/ sudo"]
|
194
|
-
rescue Exception => e
|
195
|
-
return [false,e.message]
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
|
-
|
200
159
|
=begin rdoc
|
201
160
|
*Name*:: check_gems
|
202
161
|
*Access*:: private
|
203
|
-
*Description*:: Checks to see if the @
|
162
|
+
*Description*:: Checks to see if the @gems_to_install are installed, results stored in @missing_gems
|
204
163
|
*Last_Edited*:: Tue Feb 19 15:09:00 PST 2008
|
205
164
|
=end
|
206
165
|
def check_gems
|
207
166
|
@missing_gems = {}
|
208
167
|
|
209
|
-
@
|
168
|
+
@gems_to_install.each do |gem_name,gem_version|
|
210
169
|
gem_info = installed?(gem_name,gem_version)
|
211
170
|
@missing_gems[gem_name] = gem_version unless gem_info[:installed]
|
212
171
|
end
|
data/lib/warning_shot/version.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
|
-
#sudo rm -r ./pkg/w*; rake package;sudo gem install ./pkg/*.gem; warning-shot -h
|
2
|
-
|
3
1
|
module RippleNetworks
|
4
2
|
module WarningShot #:nodoc:
|
5
3
|
module VERSION #:nodoc:
|
6
4
|
MAJOR = 0
|
7
|
-
MINOR =
|
8
|
-
TINY =
|
5
|
+
MINOR = 9
|
6
|
+
TINY = 0
|
9
7
|
RC = 1
|
10
8
|
|
11
9
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
data/lib/warning_shot.rb
CHANGED
@@ -7,6 +7,7 @@ require 'net/https'
|
|
7
7
|
require 'uri'
|
8
8
|
|
9
9
|
|
10
|
+
|
10
11
|
#IMPORTANT remember to add new includes to Manifest.txt
|
11
12
|
Dir.glob(File.join(File.dirname(__FILE__), "warning_shot/*.rb")).each {|f|
|
12
13
|
require f
|
@@ -21,14 +22,17 @@ include RippleNetworks::WarningShot
|
|
21
22
|
http://www.ruby-doc.org/stdlib/libdoc/optparse/rdoc/classes/OptionParser.html
|
22
23
|
=end
|
23
24
|
|
25
|
+
|
24
26
|
=begin
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
27
|
+
TODOs
|
28
|
+
-->Output message for installed gems
|
29
|
+
-->False negatives=> saysnot installed when it actually is...
|
30
|
+
-->Implement a WarningShot.logger.(info,fatal,etc...) instead of current logging mechanism
|
31
|
+
====>In programatic interface take a logger and override (for passing in external loggers)
|
32
|
+
-->Further de-couple the dep_checker class
|
33
|
+
-->Update GemHandler#installed? to use Gem::Requirement#satisfied_by?
|
29
34
|
|
30
35
|
|
31
|
-
=begin
|
32
36
|
sudo rm -r ./pkg/w*; sudo rake package;sudo gem install ./pkg/*.gem; warning-shot -h
|
33
37
|
sudo gem uninstall warning_shot; sudo gem install ../../WarningShot-ADC/trunk/pkg/*.gem;rm -rf ./config/warning_shot/;warning-shot --templates=./config/warning_shot;warning-shot -vfg
|
34
38
|
=end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warning-shot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cory O'Daniel
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-03-12 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -51,6 +51,7 @@ files:
|
|
51
51
|
- lib/warning_shot.rb
|
52
52
|
- lib/warning_shot/dep_checker.rb
|
53
53
|
- lib/warning_shot/template_generator.rb
|
54
|
+
- lib/warning_shot/base_extensions.rb
|
54
55
|
- lib/warning_shot/gem_handler.rb
|
55
56
|
- lib/warning_shot/config_parser.rb
|
56
57
|
- lib/warning_shot/test_script.rb
|