# 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' require_relative 'chotto/token' require_relative 'chotto/token_group' require_relative 'chotto/message_thread' require_relative '../filters/mailing_lists_filter' 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, config.only_new, block) end def close_db db.close end def include_rule(rule) rule.call end end end def eval_rules(_options = {}) Chotto.rule_sets.each(&:run) Chotto.close_db end