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.
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.2.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