lib/sup.rb in sup-0.0.2 vs lib/sup.rb in sup-0.0.3

- old
+ new

@@ -2,34 +2,47 @@ require 'yaml' require 'zlib' require 'thread' require 'fileutils' -Thread.abort_on_exception = true # make debugging possible - class Object ## this is for debugging purposes because i keep calling #id on the ## wrong object and i want it to throw an exception def id - raise "wrong id called" + raise "wrong id called on #{self.inspect}" end end module Redwood - VERSION = "0.0.2" + VERSION = "0.0.3" - BASE_DIR = File.join(ENV["HOME"], ".sup") + BASE_DIR = ENV["SUP_BASE"] || File.join(ENV["HOME"], ".sup") CONFIG_FN = File.join(BASE_DIR, "config.yaml") SOURCE_FN = File.join(BASE_DIR, "sources.yaml") LABEL_FN = File.join(BASE_DIR, "labels.txt") + PERSON_FN = File.join(BASE_DIR, "people.txt") CONTACT_FN = File.join(BASE_DIR, "contacts.txt") DRAFT_DIR = File.join(BASE_DIR, "drafts") SENT_FN = File.join(BASE_DIR, "sent.mbox") YAML_DOMAIN = "masanjin.net" YAML_DATE = "2006-10-01" +## record exceptions thrown in threads nicely + $exception = nil + def reporting_thread + ::Thread.new do + begin + yield + rescue Exception => e + $exception ||= e + raise + end + end + end + module_function :reporting_thread + ## one-stop shop for yamliciousness def register_yaml klass, props vars = props.map { |p| "@#{p}" } path = klass.name.gsub(/::/, "/") @@ -59,10 +72,27 @@ YAML::load_file fn end end end - module_function :register_yaml, :save_yaml_obj, :load_yaml_obj + def start + Redwood::PersonManager.new Redwood::PERSON_FN + Redwood::SentManager.new Redwood::SENT_FN + Redwood::ContactManager.new Redwood::CONTACT_FN + Redwood::LabelManager.new Redwood::LABEL_FN + Redwood::AccountManager.new $config[:accounts] + Redwood::DraftManager.new Redwood::DRAFT_DIR + Redwood::UpdateManager.new + Redwood::PollManager.new + end + + def finish + Redwood::LabelManager.save + Redwood::ContactManager.save + Redwood::PersonManager.save + end + + module_function :register_yaml, :save_yaml_obj, :load_yaml_obj, :start, :finish end ## set up default configuration file if File.exists? Redwood::CONFIG_FN $config = Redwood::load_yaml_obj Redwood::CONFIG_FN