chotto 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/chotto +28 -0
  3. data/lib/chotto.rb +58 -0
  4. metadata +46 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9c41d0ab7f3b4a69a3ddc7386d5246476f177dbb2494f35323829fc00156df00
4
+ data.tar.gz: e3a675154168eb084157975d87efc4ab52446b160d4e53a6dbb687eb2ada1054
5
+ SHA512:
6
+ metadata.gz: c4108b72fba8e744a832d8c8238d99951b3070afbc7a710ec7d96cbff84b9ae7a908972dacad76fee9be2703c8240f43c73c073b64c28d1258d45c788f9eded7
7
+ data.tar.gz: 91243ec3f65d27ec16f85d005bdea9b09d4fe04ca58b798cce5501f123a4099ed268d0c765007b5230059d6d91e8e9b5d78cc12d4a849dc93cc6c4af9b51dd7e
data/bin/chotto ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'optparse'
5
+ require_relative '../lib/chotto'
6
+
7
+ CONFIG_FILEPATH = 'chotto/config.rb'
8
+ XDG_HOME = ENV.fetch('XDG_CONFIG_HOME', "#{Dir.home}/.config")
9
+ def start_chotto(options)
10
+ Chotto.configure do
11
+ config.only_new = options.fetch(:only_new, false)
12
+ end
13
+
14
+ config_file = File.read("#{XDG_HOME}/#{CONFIG_FILEPATH}")
15
+ instance_eval(config_file)
16
+ eval_rules(options)
17
+ end
18
+
19
+ options = {}
20
+ OptionParser.new do |opts|
21
+ opts.banner = 'Usage: chotto [options]'
22
+
23
+ opts.on('-n', '--new', 'Run only for new mesages') do |v|
24
+ options[:only_new] = v
25
+ end
26
+ end.parse!
27
+
28
+ start_chotto(options)
data/lib/chotto.rb ADDED
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'notmuch'
4
+ require 'pry'
5
+
6
+ require_relative '../filters/mailing_lists_filter'
7
+ require_relative '../filters/spam_filter'
8
+ require_relative 'chotto/config'
9
+ require_relative 'chotto/database'
10
+ require_relative 'chotto/helpers'
11
+ require_relative 'chotto/message'
12
+ require_relative 'chotto/message_thread'
13
+ require_relative 'chotto/messages'
14
+ require_relative 'chotto/ruleset'
15
+ require_relative 'chotto/token'
16
+ require_relative 'chotto/token_group'
17
+
18
+ module Chotto
19
+ class << self
20
+ attr_reader :rule_sets, :config
21
+
22
+ def configure(&block)
23
+ @rule_sets ||= []
24
+ @config ||= force_fresh_config
25
+
26
+ instance_eval(&block)
27
+ end
28
+
29
+ def force_fresh_config
30
+ @db = nil
31
+ @rule_sets = []
32
+ @config = Config.new(
33
+ db_class: ::Notmuch::Database
34
+ )
35
+ end
36
+
37
+ def db
38
+ @db ||= Database.new(path: config.database_path, db_class: config.db_class)
39
+ end
40
+
41
+ def rule_set(name, &block)
42
+ @rule_sets << RuleSet.new(name, db, config.only_new, block)
43
+ end
44
+
45
+ def close_db
46
+ db.close
47
+ end
48
+
49
+ def include_rule(rule)
50
+ rule.call
51
+ end
52
+ end
53
+ end
54
+
55
+ def eval_rules(_options = {})
56
+ Chotto.rule_sets.each(&:run)
57
+ Chotto.close_db
58
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chotto
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - mms
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-11-27 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: chotto@sapka.me
15
+ executables:
16
+ - chotto
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/chotto
21
+ - lib/chotto.rb
22
+ homepage: https://crys.site/projects/chotto
23
+ licenses:
24
+ - BSD-3-Clause
25
+ metadata:
26
+ source_code_uri: https://cgit.crys.site/chotto
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubygems_version: 3.5.16
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Initial tagging script for Notmuch
46
+ test_files: []