aboutsummaryrefslogtreecommitdiff
path: root/lib/some.rb
diff options
context:
space:
mode:
authormms <git@sapka.me>2024-11-10 00:20:05 +0100
committermms <git@sapka.me>2024-11-10 00:20:05 +0100
commit68d7eb07d88338f28c40a5ba68061a7f4e35f340 (patch)
tree7c1e0ab62ff2a2d9cd89ae1bd113759bb3077f13 /lib/some.rb
parent2b84ba48039818cf52f6acf3c06610212bf6f7c5 (diff)
feat: dsl
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