sup 1.1 → 1.3

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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/checks.yml +40 -38
  3. data/.gitmodules +1 -0
  4. data/CONTRIBUTORS +3 -1
  5. data/History.txt +32 -3
  6. data/Manifest.txt +34 -1
  7. data/README.md +0 -1
  8. data/bin/sup-sync-back-maildir +1 -1
  9. data/contrib/nix/Gemfile +24 -0
  10. data/contrib/nix/Gemfile.lock +101 -0
  11. data/contrib/nix/README +7 -0
  12. data/contrib/nix/gem-install-shell.nix +14 -0
  13. data/contrib/nix/gemset.nix +391 -0
  14. data/contrib/nix/ruby2.4-Gemfile.lock +85 -0
  15. data/contrib/nix/ruby2.4-gemset.nix +329 -0
  16. data/contrib/nix/ruby2.4-shell.nix +26 -0
  17. data/contrib/nix/ruby2.5-Gemfile.lock +85 -0
  18. data/contrib/nix/ruby2.5-gemset.nix +329 -0
  19. data/contrib/nix/ruby2.5-shell.nix +26 -0
  20. data/contrib/nix/ruby2.6-Gemfile.lock +87 -0
  21. data/contrib/nix/ruby2.6-gemset.nix +339 -0
  22. data/contrib/nix/ruby2.6-shell.nix +26 -0
  23. data/contrib/nix/ruby2.7-Gemfile.lock +91 -0
  24. data/contrib/nix/ruby2.7-gemset.nix +359 -0
  25. data/contrib/nix/ruby2.7-shell.nix +14 -0
  26. data/contrib/nix/ruby3.0-Gemfile.lock +91 -0
  27. data/contrib/nix/ruby3.0-gemset.nix +359 -0
  28. data/contrib/nix/ruby3.0-shell.nix +14 -0
  29. data/contrib/nix/ruby3.1-shell.nix +25 -0
  30. data/contrib/nix/ruby3.2-shell.nix +25 -0
  31. data/contrib/nix/ruby3.3-shell.nix +25 -0
  32. data/contrib/nix/ruby3.4-shell.nix +36 -0
  33. data/contrib/nix/test-all-rubies.sh +6 -0
  34. data/doc/Hooks.txt +1 -1
  35. data/ext/mkrf_conf_xapian.rb +2 -2
  36. data/lib/sup/crypto.rb +8 -6
  37. data/lib/sup/index.rb +2 -2
  38. data/lib/sup/maildir.rb +5 -1
  39. data/lib/sup/mbox.rb +26 -8
  40. data/lib/sup/message.rb +15 -12
  41. data/lib/sup/modes/console_mode.rb +1 -1
  42. data/lib/sup/modes/edit_message_mode.rb +5 -5
  43. data/lib/sup/thread.rb +20 -20
  44. data/lib/sup/util.rb +12 -7
  45. data/lib/sup/version.rb +1 -1
  46. data/man/sup-add.1 +40 -40
  47. data/man/sup-config.1 +30 -26
  48. data/man/sup-dump.1 +38 -38
  49. data/man/sup-import-dump.1 +41 -37
  50. data/man/sup-psych-ify-config-files.1 +32 -28
  51. data/man/sup-recover-sources.1 +39 -35
  52. data/man/sup-sync-back-maildir.1 +39 -34
  53. data/man/sup-sync.1 +50 -46
  54. data/man/sup-tweak-labels.1 +43 -38
  55. data/man/sup.1 +42 -38
  56. data/shell.nix +1 -0
  57. data/sup.gemspec +2 -0
  58. data/test/dummy_source.rb +6 -0
  59. data/test/fixtures/embedded-message-rfc6532.eml +33 -0
  60. data/test/fixtures/invalid-date.eml +8 -0
  61. data/test/gnupg_test_home/private-keys-v1.d/26C05E44706A8E230B3255BB9532B34DC9420232.key +42 -0
  62. data/test/gnupg_test_home/private-keys-v1.d/D187ADC90EC4DEB7047678EAA37E33A53A465D47.key +5 -0
  63. data/test/gnupg_test_home/private-keys-v1.d/FB2D9BD3B1BE90B5BCF697781F8404224B0FCF5B.key +5 -0
  64. data/test/gnupg_test_home/pubring.gpg +0 -0
  65. data/test/gnupg_test_home/receiver_pubring.gpg +0 -0
  66. data/test/gnupg_test_home/receiver_secring.gpg +0 -0
  67. data/test/gnupg_test_home/regen_keys.sh +11 -2
  68. data/test/gnupg_test_home/secring.gpg +0 -0
  69. data/test/gnupg_test_home/sup-test-2@foo.bar.asc +20 -20
  70. data/test/integration/test_maildir.rb +18 -1
  71. data/test/integration/test_mbox.rb +13 -0
  72. data/test/integration/test_sup-sync-back-maildir.rb +40 -0
  73. data/test/test_crypto.rb +108 -71
  74. data/test/test_header_parsing.rb +2 -2
  75. data/test/test_message.rb +42 -0
  76. data/test/unit/test_contact.rb +1 -1
  77. data/test/unit/test_edit_message_mode.rb +94 -0
  78. data/test/unit/test_person.rb +3 -3
  79. data/test/unit/test_rmail_message.rb +36 -0
  80. data/test/unit/util/test_string.rb +3 -3
  81. metadata +73 -5
  82. data/test/gnupg_test_home/private-keys-v1.d/306D2EE90FF0014B5B9FD07E265C751791674140.key +0 -0
@@ -0,0 +1,391 @@
1
+ {
2
+ ast = {
3
+ groups = ["default"];
4
+ platforms = [];
5
+ source = {
6
+ remotes = ["https://rubygems.org"];
7
+ sha256 = "10yknjyn0728gjn6b5syynvrvrwm66bhssbxq8mkhshxghaiailm";
8
+ type = "gem";
9
+ };
10
+ version = "2.4.3";
11
+ };
12
+ benchmark = {
13
+ groups = ["default"];
14
+ platforms = [];
15
+ source = {
16
+ remotes = ["https://rubygems.org"];
17
+ sha256 = "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg";
18
+ type = "gem";
19
+ };
20
+ version = "0.4.0";
21
+ };
22
+ chronic = {
23
+ groups = ["default"];
24
+ platforms = [];
25
+ source = {
26
+ remotes = ["https://rubygems.org"];
27
+ sha256 = "1hrdkn4g8x7dlzxwb1rfgr8kw3bp4ywg5l4y4i9c2g5cwv62yvvn";
28
+ type = "gem";
29
+ };
30
+ version = "0.10.2";
31
+ };
32
+ coderay = {
33
+ groups = ["default"];
34
+ platforms = [];
35
+ source = {
36
+ remotes = ["https://rubygems.org"];
37
+ sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw";
38
+ type = "gem";
39
+ };
40
+ version = "1.1.3";
41
+ };
42
+ fiddle = {
43
+ groups = ["default"];
44
+ platforms = [];
45
+ source = {
46
+ remotes = ["https://rubygems.org"];
47
+ sha256 = "1as92bp6pgkab73kj3mh5d1idjr9wykczz7r9i1pkn82wq4xks3r";
48
+ type = "gem";
49
+ };
50
+ version = "1.1.6";
51
+ };
52
+ gpgme = {
53
+ dependencies = ["mini_portile2"];
54
+ groups = ["default"];
55
+ platforms = [];
56
+ source = {
57
+ remotes = ["https://rubygems.org"];
58
+ sha256 = "0r1vmql7w7ka5xzj1aqf8pk2a4sv0znwj2zkg1fgvd5b89qcvv2k";
59
+ type = "gem";
60
+ };
61
+ version = "2.0.24";
62
+ };
63
+ highline = {
64
+ dependencies = ["reline"];
65
+ groups = ["default"];
66
+ platforms = [];
67
+ source = {
68
+ remotes = ["https://rubygems.org"];
69
+ sha256 = "0jmvyhjp2v3iq47la7w6psrxbprnbnmzz0hxxski3vzn356x7jv7";
70
+ type = "gem";
71
+ };
72
+ version = "3.1.2";
73
+ };
74
+ io-console = {
75
+ groups = ["default"];
76
+ platforms = [];
77
+ source = {
78
+ remotes = ["https://rubygems.org"];
79
+ sha256 = "18pgvl7lfjpichdfh1g50rpz0zpaqrpr52ybn9liv1v9pjn9ysnd";
80
+ type = "gem";
81
+ };
82
+ version = "0.8.0";
83
+ };
84
+ json = {
85
+ groups = ["default"];
86
+ platforms = [];
87
+ source = {
88
+ remotes = ["https://rubygems.org"];
89
+ sha256 = "01lbdaizhkxmrw4y8j3wpvsryvnvzmg0pfs56c52laq2jgdfmq1l";
90
+ type = "gem";
91
+ };
92
+ version = "2.10.2";
93
+ };
94
+ language_server-protocol = {
95
+ groups = ["default"];
96
+ platforms = [];
97
+ source = {
98
+ remotes = ["https://rubygems.org"];
99
+ sha256 = "0scnz2fvdczdgadvjn0j9d49118aqm3hj66qh8sd2kv6g1j65164";
100
+ type = "gem";
101
+ };
102
+ version = "3.17.0.4";
103
+ };
104
+ locale = {
105
+ groups = ["default"];
106
+ platforms = [];
107
+ source = {
108
+ remotes = ["https://rubygems.org"];
109
+ sha256 = "107pm4ccmla23z963kyjldgngfigvchnv85wr6m69viyxxrrjbsj";
110
+ type = "gem";
111
+ };
112
+ version = "2.1.4";
113
+ };
114
+ lockfile = {
115
+ groups = ["default"];
116
+ platforms = [];
117
+ source = {
118
+ remotes = ["https://rubygems.org"];
119
+ sha256 = "0dij3ijywylvfgrpi2i0k17f6w0wjhnjjw0k9030f54z56cz7jrr";
120
+ type = "gem";
121
+ };
122
+ version = "2.1.3";
123
+ };
124
+ logger = {
125
+ groups = ["default"];
126
+ platforms = [];
127
+ source = {
128
+ remotes = ["https://rubygems.org"];
129
+ sha256 = "00q2zznygpbls8asz5knjvvj2brr3ghmqxgr83xnrdj4rk3xwvhr";
130
+ type = "gem";
131
+ };
132
+ version = "1.7.0";
133
+ };
134
+ method_source = {
135
+ groups = ["default"];
136
+ platforms = [];
137
+ source = {
138
+ remotes = ["https://rubygems.org"];
139
+ sha256 = "1igmc3sq9ay90f8xjvfnswd1dybj1s3fi0dwd53inwsvqk4h24qq";
140
+ type = "gem";
141
+ };
142
+ version = "1.1.0";
143
+ };
144
+ mime-types = {
145
+ dependencies = ["logger" "mime-types-data"];
146
+ groups = ["default"];
147
+ platforms = [];
148
+ source = {
149
+ remotes = ["https://rubygems.org"];
150
+ sha256 = "1bv08jvx1g9ifjdyrp5hgalxkv7qxwfmfx0ba43ncrbfda7182b1";
151
+ type = "gem";
152
+ };
153
+ version = "3.6.2";
154
+ };
155
+ mime-types-data = {
156
+ groups = ["default"];
157
+ platforms = [];
158
+ source = {
159
+ remotes = ["https://rubygems.org"];
160
+ sha256 = "1h0rhy0zf4ssrdr6cyliqijxga94cd64ij2gkw6jdx3bww1cap25";
161
+ type = "gem";
162
+ };
163
+ version = "3.2025.0402";
164
+ };
165
+ mini_portile2 = {
166
+ groups = ["default"];
167
+ platforms = [];
168
+ source = {
169
+ remotes = ["https://rubygems.org"];
170
+ sha256 = "0x8asxl83msn815lwmb2d7q5p29p7drhjv5va0byhk60v9n16iwf";
171
+ type = "gem";
172
+ };
173
+ version = "2.8.8";
174
+ };
175
+ minitest = {
176
+ groups = ["default"];
177
+ platforms = [];
178
+ source = {
179
+ remotes = ["https://rubygems.org"];
180
+ sha256 = "0mn7q9yzrwinvfvkyjiz548a4rmcwbmz2fn9nyzh4j1snin6q6rr";
181
+ type = "gem";
182
+ };
183
+ version = "5.25.5";
184
+ };
185
+ ncursesw = {
186
+ groups = ["default"];
187
+ platforms = [];
188
+ source = {
189
+ remotes = ["https://rubygems.org"];
190
+ sha256 = "0qlfhp9b445g0qp9kkdiylfjlpfzrv6nqvry4ar6y0yacn0zr5y8";
191
+ type = "gem";
192
+ };
193
+ version = "1.4.11";
194
+ };
195
+ optimist = {
196
+ groups = ["default"];
197
+ platforms = [];
198
+ source = {
199
+ remotes = ["https://rubygems.org"];
200
+ sha256 = "0kp3f8g7g7cbw5vfkmpdv71pphhpcxk3lpc892mj9apkd7ys1y4c";
201
+ type = "gem";
202
+ };
203
+ version = "3.2.1";
204
+ };
205
+ parallel = {
206
+ groups = ["default"];
207
+ platforms = [];
208
+ source = {
209
+ remotes = ["https://rubygems.org"];
210
+ sha256 = "1vy7sjs2pgz4i96v5yk9b7aafbffnvq7nn419fgvw55qlavsnsyq";
211
+ type = "gem";
212
+ };
213
+ version = "1.26.3";
214
+ };
215
+ parser = {
216
+ dependencies = ["ast" "racc"];
217
+ groups = ["default"];
218
+ platforms = [];
219
+ source = {
220
+ remotes = ["https://rubygems.org"];
221
+ sha256 = "1awq9rswd3mj8sr5acp1ca6nbkk57zpw8388j7w163i8fhi2h9ib";
222
+ type = "gem";
223
+ };
224
+ version = "3.3.7.4";
225
+ };
226
+ pry = {
227
+ dependencies = ["coderay" "method_source"];
228
+ groups = ["default"];
229
+ platforms = [];
230
+ source = {
231
+ remotes = ["https://rubygems.org"];
232
+ sha256 = "0ssv704qg75mwlyagdfr9xxbzn1ziyqgzm0x474jkynk8234pm8j";
233
+ type = "gem";
234
+ };
235
+ version = "0.15.2";
236
+ };
237
+ racc = {
238
+ groups = ["default"];
239
+ platforms = [];
240
+ source = {
241
+ remotes = ["https://rubygems.org"];
242
+ sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa";
243
+ type = "gem";
244
+ };
245
+ version = "1.8.1";
246
+ };
247
+ rainbow = {
248
+ groups = ["default"];
249
+ platforms = [];
250
+ source = {
251
+ remotes = ["https://rubygems.org"];
252
+ sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
253
+ type = "gem";
254
+ };
255
+ version = "3.1.1";
256
+ };
257
+ rake = {
258
+ groups = ["default"];
259
+ platforms = [];
260
+ source = {
261
+ remotes = ["https://rubygems.org"];
262
+ sha256 = "17850wcwkgi30p7yqh60960ypn7yibacjjha0av78zaxwvd3ijs6";
263
+ type = "gem";
264
+ };
265
+ version = "13.2.1";
266
+ };
267
+ regexp_parser = {
268
+ groups = ["default"];
269
+ platforms = [];
270
+ source = {
271
+ remotes = ["https://rubygems.org"];
272
+ sha256 = "1ndxm0xnv27p4gv6xynk6q41irckj76q1jsqpysd9h6f86hhp841";
273
+ type = "gem";
274
+ };
275
+ version = "2.9.0";
276
+ };
277
+ reline = {
278
+ dependencies = ["io-console"];
279
+ groups = ["default"];
280
+ platforms = [];
281
+ source = {
282
+ remotes = ["https://rubygems.org"];
283
+ sha256 = "1yvm0svcdk6377ng6l00g39ldkjijbqg4whdg2zcsa8hrgbwkz0s";
284
+ type = "gem";
285
+ };
286
+ version = "0.6.1";
287
+ };
288
+ rexml = {
289
+ groups = ["default"];
290
+ platforms = [];
291
+ source = {
292
+ remotes = ["https://rubygems.org"];
293
+ sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0";
294
+ type = "gem";
295
+ };
296
+ version = "3.2.6";
297
+ };
298
+ rmail = {
299
+ groups = ["default"];
300
+ platforms = [];
301
+ source = {
302
+ remotes = ["https://rubygems.org"];
303
+ sha256 = "0m5npkmv764m725wzjzasgf3k8q5anf3vfr6k2cac1xj6jc8lcqi";
304
+ type = "gem";
305
+ };
306
+ version = "1.1.4";
307
+ };
308
+ rr = {
309
+ groups = ["default"];
310
+ platforms = [];
311
+ source = {
312
+ remotes = ["https://rubygems.org"];
313
+ sha256 = "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp";
314
+ type = "gem";
315
+ };
316
+ version = "1.2.1";
317
+ };
318
+ rubocop = {
319
+ dependencies = ["json" "language_server-protocol" "parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
320
+ groups = ["default"];
321
+ platforms = [];
322
+ source = {
323
+ remotes = ["https://rubygems.org"];
324
+ sha256 = "1dmj955zbvhlrzzag6hc77xdyyzn8ihvffpjalnzn5asxhz7jcdl";
325
+ type = "gem";
326
+ };
327
+ version = "1.63.2";
328
+ };
329
+ rubocop-ast = {
330
+ dependencies = ["parser"];
331
+ groups = ["default"];
332
+ platforms = [];
333
+ source = {
334
+ remotes = ["https://rubygems.org"];
335
+ sha256 = "1v3q8n48w8h809rqbgzihkikr4g3xk72m1na7s97jdsmjjq6y83w";
336
+ type = "gem";
337
+ };
338
+ version = "1.31.2";
339
+ };
340
+ rubocop-packaging = {
341
+ dependencies = ["rubocop"];
342
+ groups = ["default"];
343
+ platforms = [];
344
+ source = {
345
+ remotes = ["https://rubygems.org"];
346
+ sha256 = "1iqgsbpj7y8ksddbb9gj5vpzs2y8202khyk2mcc165kkfmvm6rx3";
347
+ type = "gem";
348
+ };
349
+ version = "0.5.2";
350
+ };
351
+ ruby-progressbar = {
352
+ groups = ["default"];
353
+ platforms = [];
354
+ source = {
355
+ remotes = ["https://rubygems.org"];
356
+ sha256 = "0cwvyb7j47m7wihpfaq7rc47zwwx9k4v7iqd9s1xch5nm53rrz40";
357
+ type = "gem";
358
+ };
359
+ version = "1.13.0";
360
+ };
361
+ unicode = {
362
+ groups = ["default"];
363
+ platforms = [];
364
+ source = {
365
+ remotes = ["https://rubygems.org"];
366
+ sha256 = "1mx9lwzy021lpcqql5kn4yi20njhf5h7c7wxm2fx51p1r2zr9wj2";
367
+ type = "gem";
368
+ };
369
+ version = "0.4.4.5";
370
+ };
371
+ unicode-display_width = {
372
+ groups = ["default"];
373
+ platforms = [];
374
+ source = {
375
+ remotes = ["https://rubygems.org"];
376
+ sha256 = "1d0azx233nags5jx3fqyr23qa2rhgzbhv8pxp46dgbg1mpf82xky";
377
+ type = "gem";
378
+ };
379
+ version = "2.5.0";
380
+ };
381
+ xapian-ruby = {
382
+ groups = ["default"];
383
+ platforms = [];
384
+ source = {
385
+ remotes = ["https://rubygems.org"];
386
+ sha256 = "0070gc3q3j41wxajakhj8vpyp2p18j1rhl20cpcj645vccgvqd21";
387
+ type = "gem";
388
+ };
389
+ version = "1.4.27";
390
+ };
391
+ }
@@ -0,0 +1,85 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ ast (2.4.2)
5
+ benchmark (0.4.0)
6
+ chronic (0.10.2)
7
+ coderay (1.1.3)
8
+ fiddle (1.0.9)
9
+ gpgme (2.0.20)
10
+ mini_portile2 (~> 2.3)
11
+ highline (2.0.3)
12
+ locale (2.1.3)
13
+ lockfile (2.1.3)
14
+ method_source (1.0.0)
15
+ mime-types (3.4.1)
16
+ mime-types-data (~> 3.2015)
17
+ mime-types-data (3.2022.0105)
18
+ mini_portile2 (2.8.0)
19
+ minitest (5.15.0)
20
+ ncursesw (1.4.11)
21
+ optimist (3.0.1)
22
+ parallel (1.20.1)
23
+ parser (3.1.2.0)
24
+ ast (~> 2.4.1)
25
+ pry (0.14.1)
26
+ coderay (~> 1.1)
27
+ method_source (~> 1.0)
28
+ rainbow (3.1.1)
29
+ rake (13.0.6)
30
+ regexp_parser (2.5.0)
31
+ rexml (3.2.5)
32
+ rmail (1.1.4)
33
+ rr (1.2.1)
34
+ rubocop (1.12.1)
35
+ parallel (~> 1.10)
36
+ parser (>= 3.0.0.0)
37
+ rainbow (>= 2.2.2, < 4.0)
38
+ regexp_parser (>= 1.8, < 3.0)
39
+ rexml
40
+ rubocop-ast (>= 1.2.0, < 2.0)
41
+ ruby-progressbar (~> 1.7)
42
+ unicode-display_width (>= 1.4.0, < 3.0)
43
+ rubocop-ast (1.4.1)
44
+ parser (>= 2.7.1.5)
45
+ rubocop-packaging (0.5.1)
46
+ rubocop (>= 0.89, < 2.0)
47
+ ruby-progressbar (1.11.0)
48
+ unicode (0.4.4.5)
49
+ unicode-display_width (2.2.0)
50
+ xapian-ruby (1.4.18)
51
+
52
+ PLATFORMS
53
+ aarch64-linux
54
+ x86_64-darwin-17
55
+ x86_64-darwin-18
56
+ x86_64-darwin-19
57
+ x86_64-darwin-20
58
+ x86_64-darwin-21
59
+ x86_64-darwin-22
60
+ x86_64-linux
61
+
62
+ DEPENDENCIES
63
+ benchmark
64
+ bundler (>= 1.3, < 3)
65
+ chronic
66
+ fiddle
67
+ gpgme (>= 2.0.2)
68
+ highline
69
+ locale (~> 2.0)
70
+ lockfile
71
+ mime-types (> 2.0)
72
+ minitest (~> 5.5)
73
+ ncursesw (~> 1.4.0)
74
+ optimist
75
+ pry
76
+ rake
77
+ rmail (>= 1.1.2, < 2)
78
+ rr (~> 1.1)
79
+ rubocop-packaging
80
+ unicode (~> 0.4.4)
81
+ unicode-display_width
82
+ xapian-ruby (~> 1.2)
83
+
84
+ BUNDLED WITH
85
+ 2.2.20