mailmate 0.2.0 → 1.0.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.
- checksums.yaml +4 -4
- data/README.md +76 -9
- data/exe/mailmate-mcp +8 -0
- data/exe/mm-mailboxes +8 -0
- data/exe/mmopen +8 -0
- data/exe/mmtags +8 -0
- data/lib/mailmate/cli/mailboxes.rb +142 -0
- data/lib/mailmate/cli/message.rb +63 -12
- data/lib/mailmate/cli/modify.rb +122 -4
- data/lib/mailmate/cli/open.rb +71 -0
- data/lib/mailmate/cli/search.rb +222 -76
- data/lib/mailmate/cli/tags.rb +93 -0
- data/lib/mailmate/config.rb +4 -1
- data/lib/mailmate/eml_lookup.rb +23 -3
- data/lib/mailmate/index_reader.rb +49 -12
- data/lib/mailmate/mcp.rb +394 -0
- data/lib/mailmate/mid_url.rb +30 -10
- data/lib/mailmate/part_lookup.rb +62 -0
- data/lib/mailmate/version.rb +1 -1
- data/lib/mailmate.rb +24 -0
- metadata +28 -1
data/lib/mailmate.rb
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
# Mailmate.compile_filter(string) → filter AST root
|
|
10
10
|
# Mailmate::Identity.mine?(addr) → is this address one of mine?
|
|
11
11
|
# Mailmate::IndexReader.for(name) → decoded Database.noindex/Headers/<name>
|
|
12
|
+
# Mailmate::PartLookup.body_parts_of(envelope_id) → child body-part-ids of an envelope
|
|
12
13
|
# Mailmate::EmlLookup.path_for(eml_id) → eml-id → absolute path
|
|
13
14
|
# Mailmate::HeaderReader.header(path, name) → read one header from an .eml
|
|
14
15
|
# Mailmate::MidUrl.for(message_id) → build a mid:%3C...%3E URL
|
|
@@ -41,6 +42,7 @@ require_relative "mailmate/lexer"
|
|
|
41
42
|
require_relative "mailmate/parser"
|
|
42
43
|
require_relative "mailmate/message"
|
|
43
44
|
require_relative "mailmate/index_reader"
|
|
45
|
+
require_relative "mailmate/part_lookup"
|
|
44
46
|
require_relative "mailmate/attributes"
|
|
45
47
|
require_relative "mailmate/operators"
|
|
46
48
|
require_relative "mailmate/evaluator"
|
|
@@ -50,6 +52,28 @@ require_relative "mailmate/var_resolver"
|
|
|
50
52
|
require_relative "mailmate/filter_classifier"
|
|
51
53
|
|
|
52
54
|
module Mailmate
|
|
55
|
+
# First-run bootstrap. If ~/.config/mailmate/config.yml is missing,
|
|
56
|
+
# interactively run `mmdiscover` (TTY callers) or warn once and continue
|
|
57
|
+
# with built-in defaults (non-TTY: MCP server, scripts, cron jobs).
|
|
58
|
+
#
|
|
59
|
+
# Idempotent: only checks once per process. Triggered automatically by
|
|
60
|
+
# `Mailmate.config`, so every CLI and the MCP server pick it up without
|
|
61
|
+
# extra wiring.
|
|
62
|
+
def self.ensure_configured!(stdin: $stdin, stderr: $stderr)
|
|
63
|
+
return if @configured_checked
|
|
64
|
+
@configured_checked = true
|
|
65
|
+
return if File.exist?(Config::DEFAULT_CONFIG_PATH)
|
|
66
|
+
|
|
67
|
+
if stdin.tty?
|
|
68
|
+
stderr.puts "mailmate: no config found at #{Config::DEFAULT_CONFIG_PATH} — running first-run setup (mmdiscover)."
|
|
69
|
+
require_relative "mailmate/cli/discover"
|
|
70
|
+
Mailmate::CLI::Discover.run([])
|
|
71
|
+
Mailmate::Config.reload!
|
|
72
|
+
else
|
|
73
|
+
stderr.puts "mailmate: no config at #{Config::DEFAULT_CONFIG_PATH}; using built-in defaults. Run `mmdiscover` once in a terminal for identity-aware output."
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
53
77
|
def self.compile_filter(str)
|
|
54
78
|
Parser.parse(Lexer.lex(str))
|
|
55
79
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mailmate
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brian Murphy-Dye
|
|
@@ -37,6 +37,20 @@ dependencies:
|
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '3.0'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: reverse_markdown
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '3.0'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '3.0'
|
|
40
54
|
- !ruby/object:Gem::Dependency
|
|
41
55
|
name: minitest
|
|
42
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -79,31 +93,42 @@ description: |
|
|
|
79
93
|
email:
|
|
80
94
|
- brian@murphydye.com
|
|
81
95
|
executables:
|
|
96
|
+
- mailmate-mcp
|
|
97
|
+
- mm-mailboxes
|
|
82
98
|
- mm-modify
|
|
83
99
|
- mm-send
|
|
84
100
|
- mmdiscover
|
|
85
101
|
- mmmessage
|
|
102
|
+
- mmopen
|
|
86
103
|
- mmsearch
|
|
104
|
+
- mmtags
|
|
87
105
|
extensions: []
|
|
88
106
|
extra_rdoc_files: []
|
|
89
107
|
files:
|
|
90
108
|
- LICENSE.txt
|
|
91
109
|
- README.md
|
|
92
110
|
- config.yml.example
|
|
111
|
+
- exe/mailmate-mcp
|
|
112
|
+
- exe/mm-mailboxes
|
|
93
113
|
- exe/mm-modify
|
|
94
114
|
- exe/mm-send
|
|
95
115
|
- exe/mmdiscover
|
|
96
116
|
- exe/mmmessage
|
|
117
|
+
- exe/mmopen
|
|
97
118
|
- exe/mmsearch
|
|
119
|
+
- exe/mmtags
|
|
98
120
|
- lib/mailmate.rb
|
|
99
121
|
- lib/mailmate/applescript_driver.rb
|
|
100
122
|
- lib/mailmate/ast.rb
|
|
101
123
|
- lib/mailmate/attributes.rb
|
|
102
124
|
- lib/mailmate/cli/discover.rb
|
|
125
|
+
- lib/mailmate/cli/mailboxes.rb
|
|
103
126
|
- lib/mailmate/cli/message.rb
|
|
104
127
|
- lib/mailmate/cli/modify.rb
|
|
128
|
+
- lib/mailmate/cli/open.rb
|
|
105
129
|
- lib/mailmate/cli/search.rb
|
|
106
130
|
- lib/mailmate/cli/send.rb
|
|
131
|
+
- lib/mailmate/cli/tags.rb
|
|
107
132
|
- lib/mailmate/config.rb
|
|
108
133
|
- lib/mailmate/duplicate_scanner.rb
|
|
109
134
|
- lib/mailmate/eml_lookup.rb
|
|
@@ -114,10 +139,12 @@ files:
|
|
|
114
139
|
- lib/mailmate/index_reader.rb
|
|
115
140
|
- lib/mailmate/lexer.rb
|
|
116
141
|
- lib/mailmate/mailbox_graph.rb
|
|
142
|
+
- lib/mailmate/mcp.rb
|
|
117
143
|
- lib/mailmate/message.rb
|
|
118
144
|
- lib/mailmate/mid_url.rb
|
|
119
145
|
- lib/mailmate/operators.rb
|
|
120
146
|
- lib/mailmate/parser.rb
|
|
147
|
+
- lib/mailmate/part_lookup.rb
|
|
121
148
|
- lib/mailmate/platform_error.rb
|
|
122
149
|
- lib/mailmate/source_resolver.rb
|
|
123
150
|
- lib/mailmate/var_resolver.rb
|