# frozen_string_literal: true require 'notmuch' require 'pry' require_relative 'chotto/config' require_relative 'chotto/database' require_relative 'chotto/helpers' require_relative 'chotto/message' require_relative 'chotto/messages' require_relative 'chotto/ruleset' module Chotto class << self attr_reader :rule_sets, :config def configure(&block) @rule_sets ||= [] @config ||= force_fresh_config instance_eval(&block) end def force_fresh_config @db = nil @rule_sets = [] @config = Config.new( db_class: ::Notmuch::Database ) end def db @db ||= Database.new(path: config.database_path, db_class: config.db_class) end def rule_set(name, &block) @rule_sets << RuleSet.new(name, db, block) end def close_db db.close end end end def eval_rules(options = {}) Chotto.configure do config.only_new = options.fetch(:only_new, false) end Chotto.rule_sets.each(&:run) Chotto.close_db end