warning-shot 0.8.9 → 0.9.0
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.
- 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
|