diff options
author | mms <git@sapka.me> | 2024-11-10 00:20:05 +0100 |
---|---|---|
committer | mms <git@sapka.me> | 2024-11-10 00:20:05 +0100 |
commit | 68d7eb07d88338f28c40a5ba68061a7f4e35f340 (patch) | |
tree | 7c1e0ab62ff2a2d9cd89ae1bd113759bb3077f13 /lib/some.rb | |
parent | 2b84ba48039818cf52f6acf3c06610212bf6f7c5 (diff) |
feat: dsl
Diffstat (limited to 'lib/some.rb')
-rw-r--r-- | lib/some.rb | 45 |
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 |