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 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)
@@ -0,0 +1,8 @@
1
+ module Kernel
2
+ unless Kernel.respond_to?(:debugger)
3
+ #Provide a debugger method if the debugger is turned off, stops NoMethodError
4
+ def debugger
5
+ puts "=-=-=-=-=Debugger was request, but debugging is not enabled (warning-shot -d)=-=-=-=-="
6
+ end
7
+ end
8
+ end
@@ -189,14 +189,18 @@ module RippleNetworks
189
189
  end
190
190
  end
191
191
 
192
- if self.options[:gems] && @gh.errors.size > 0
193
- gem_errors = @gh.errors.size
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.errors.each do |gem,message|
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
- =begin
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
- Gem.manage_gems
24
- @gri = Gem::RemoteInstaller.new
18
+
25
19
  @install_dir ||= Gem.dir
26
20
 
27
21
  @missing_gems = {}
28
- @gems = split(gem_list)
29
- @errors = {}
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
- @gems.merge!(split(gems))
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| @gems.delete(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 = 0
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
- dep_installed, dep_message = install_dependencies(gem_name,gem_version)
66
- if dep_installed
67
- gem_install, gem_message = install_gem(gem_name,gem_version)
68
- unless gem_install
69
- failed_installs += 1
70
- @errors[gem_name] = gem_message
71
- end
72
- else
73
- failed_installs += 1
74
- @errors[gem_name] = gem_message
75
- end
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 @gems are installed, results stored in @missing_gems
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
- @gems.each do |gem_name,gem_version|
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
@@ -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
8
- TINY = 9
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
- TODO
26
- -GET RAILS/MERB connection, (via config/boot, etc) (load in begin/rescue)
27
- = if fail, and vars present, continue
28
- =end
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.8.9
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-02-26 00:00:00 -08:00
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