aboutsummaryrefslogtreecommitdiff
path: root/lib/some.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/some.rb')
-rw-r--r--lib/some.rb45
1 files changed, 29 insertions, 16 deletions
diff --git a/lib/some.rb b/lib/some.rb
index 9a802dd..446fba2 100644
--- a/lib/some.rb
+++ b/lib/some.rb
@@ -4,31 +4,44 @@ require 'notmuch'
require 'pry'
require_relative 'some/database'
+require_relative 'some/config'
require_relative 'some/message'
require_relative 'some/messages'
require_relative 'some/helpers'
+require_relative 'some/ruleset'
module Some
- class Some
- def initialize
- @db = Database.new(path: '/home/mms/mail')
- end
+ class << self
+ attr_accessor :config
+ attr_reader :db, :rule_sets
+
+ def configure(&block)
+ @config ||= Config.new
+ @rule_sets = []
- def with_filter(filter_string)
- db.query(filter_string).search_messages.each do |msg|
- yield Message.new(msg: msg)
- end
- rescue StandardError => e
- p e
+ instance_eval(&block)
+
+ @db = Database.new(path: config.database_path)
end
- private
+ def rule_set(name, &block)
+ @rule_sets << RuleSet.new(name, block)
+ end
+ end
+end
- attr_reader :db
+def eval_rules
+ Some.rule_sets.each do |rule_set|
+ rule_set.run
end
end
-p Some::Messages.new
- .filter(from: 'janek', tags: [1, 2])
- .or.filter(subject: 'a')
- .query_string
+CONFIG_FILEPATH = 'some/config.rb'
+XDG_HOME = ENV.fetch('XDG_CONFIG_HOME', "#{Dir.home}/.config")
+def start_some
+ config_file = File.read("#{XDG_HOME}/#{CONFIG_FILEPATH}")
+ instance_eval(config_file)
+ eval_rules
+end
+
+start_some