commit b5dd3d6ea7ff947a4ef58e8b04dd0b9402a0ab27
parent 3fb8aa45914ab05002e87192995abf791d584684
Author: Rich Lane <rlane@club.cc.cmu.edu>
Date: Mon, 7 Jun 2010 08:11:42 -0700
move HookManager singleton instantiation to Redwood.start
Diffstat:
4 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/bin/sup b/bin/sup
@@ -58,6 +58,7 @@ No return value.
EOS
if $opts[:list_hooks]
+ Redwood.start
Redwood::HookManager.print_hooks
exit
end
@@ -95,8 +96,6 @@ global_keymap = Keymap.new do |k|
kk.add :run_keybindings_hook, "Rerun keybindings hook", 'k'
end
end
-
-Redwood::Keymap.run_hook global_keymap
## the following magic enables wide characters when used with a ruby
## ncurses.so that's been compiled against libncursesw. (note the w.) why
@@ -173,6 +172,7 @@ begin
end
HookManager.run "startup"
+ Redwood::Keymap.run_hook global_keymap
debug "starting curses"
Redwood::Logger.remove_sink $stderr
diff --git a/lib/sup.rb b/lib/sup.rb
@@ -125,6 +125,7 @@ module Redwood
$config = load_config Redwood::CONFIG_FN
@log_io = File.open(Redwood::LOG_FN, 'a')
Redwood::Logger.add_sink @log_io
+ Redwood::HookManager.init Redwood::HOOK_DIR
Redwood::SentManager.init $config[:sent_source] || 'sup://sent'
Redwood::ContactManager.init Redwood::CONTACT_FN
Redwood::LabelManager.init Redwood::LABEL_FN
@@ -292,11 +293,6 @@ end
require "sup/util"
require "sup/hook"
-## we have to initialize this guy first, because other classes must
-## reference it in order to register hooks, and they do that at parse
-## time.
-Redwood::HookManager.init Redwood::HOOK_DIR
-
## everything we need to get logging working
require "sup/logger"
Redwood::Logger.init.add_sink $stderr
diff --git a/lib/sup/hook.rb b/lib/sup/hook.rb
@@ -61,10 +61,15 @@ class HookManager
include Singleton
+ @descs = {}
+
+ class << self
+ attr_reader :descs
+ end
+
def initialize dir
@dir = dir
@hooks = {}
- @descs = {}
@contexts = {}
@tags = {}
@@ -90,17 +95,17 @@ class HookManager
result
end
- def register name, desc
+ def self.register name, desc
@descs[name] = desc
end
def print_hooks f=$stdout
puts <<EOS
-Have #{@descs.size} registered hooks:
+Have #{HookManager.descs.size} registered hooks:
EOS
- @descs.sort.each do |name, desc|
+ HookManager.descs.sort.each do |name, desc|
f.puts <<EOS
#{name}
#{"-" * name.length}
diff --git a/test/test_server.rb b/test/test_server.rb
@@ -65,6 +65,7 @@ class TestServer < Test::Unit::TestCase
EM.spawn_reactor_thread
@path = Dir.mktmpdir
socket_path = File.join(@path, 'socket')
+ Redwood::HookManager.init File.join(@path, 'hooks')
Redwood::SourceManager.init
Redwood::SourceManager.load_sources File.join(@path, 'sources.yaml')
Redwood::Index.init @path
@@ -79,7 +80,7 @@ class TestServer < Test::Unit::TestCase
def teardown
FileUtils.rm_r @path if passed?
puts "not cleaning up #{@path}" unless passed?
- %w(Index SearchManager SourceManager).each do |x|
+ %w(Index SearchManager SourceManager HookManager).each do |x|
Redwood.const_get(x.to_sym).deinstantiate!
end
EM.kill_reactor_thread