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 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