sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 1f28445ddb655d4a19d5a35cbbea05f7c0887c8a
parent b5dd3d6ea7ff947a4ef58e8b04dd0b9402a0ab27
Author: Rich Lane <rlane@club.cc.cmu.edu>
Date:   Mon,  7 Jun 2010 09:06:41 -0700

deinstantiate all managers on finish

Diffstat:
M lib/sup.rb | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/lib/sup.rb b/lib/sup.rb
@@ -120,7 +120,15 @@ module Redwood
     o
   end
 
+  def managers
+    %w(HookManager SentManager ContactManager LabelManager AccountManager
+    DraftManager UpdateManager PollManager CryptoManager UndoManager
+    SourceManager SearchManager IdleManager).map { |x| Redwood.const_get x.to_sym }
+  end
+
   def start
+    managers.each { |x| fail "#{x} already instantiated" if x.instantiated? }
+
     FileUtils.mkdir_p Redwood::BASE_DIR
     $config = load_config Redwood::CONFIG_FN
     @log_io = File.open(Redwood::LOG_FN, 'a')
@@ -131,21 +139,19 @@ module Redwood
     Redwood::LabelManager.init Redwood::LABEL_FN
     Redwood::AccountManager.init $config[:accounts]
     Redwood::DraftManager.init Redwood::DRAFT_DIR
-    Redwood::UpdateManager.init
-    Redwood::PollManager.init
-    Redwood::CryptoManager.init
-    Redwood::UndoManager.init
-    Redwood::SourceManager.init
     Redwood::SearchManager.init Redwood::SEARCH_FN
-    Redwood::IdleManager.init
+
+    managers.each { |x| x.init unless x.instantiated? }
   end
 
   def finish
     Redwood::LabelManager.save if Redwood::LabelManager.instantiated?
     Redwood::ContactManager.save if Redwood::ContactManager.instantiated?
-    Redwood::BufferManager.deinstantiate! if Redwood::BufferManager.instantiated?
     Redwood::SearchManager.save if Redwood::SearchManager.instantiated?
     Redwood::Logger.remove_sink @log_io
+
+    managers.each { |x| x.deinstantiate! if x.instantiated? }
+
     @log_io.close
     @log_io = nil
     $config = nil
@@ -287,7 +293,7 @@ EOS
 
   module_function :save_yaml_obj, :load_yaml_obj, :start, :finish,
                   :report_broken_sources, :check_library_version_against,
-                  :load_config
+                  :load_config, :managers
 end
 
 require "sup/util"