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,339 @@
1
+ {
2
+ ast = {
3
+ groups = ["default"];
4
+ platforms = [];
5
+ source = {
6
+ remotes = ["https://rubygems.org"];
7
+ sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y";
8
+ type = "gem";
9
+ };
10
+ version = "2.4.2";
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 = "1d2y2qh6xml4w6p15kaz1v2ryb8p3nm6yy5x5mfygdrxgpsc63rd";
48
+ type = "gem";
49
+ };
50
+ version = "1.0.9";
51
+ };
52
+ gpgme = {
53
+ dependencies = ["mini_portile2"];
54
+ groups = ["default"];
55
+ platforms = [];
56
+ source = {
57
+ remotes = ["https://rubygems.org"];
58
+ sha256 = "010wr6nnifi952bx4v5c49q25yx1g8lhib5wiv2sg7bip3yvlyy8";
59
+ type = "gem";
60
+ };
61
+ version = "2.0.23";
62
+ };
63
+ highline = {
64
+ groups = ["default"];
65
+ platforms = [];
66
+ source = {
67
+ remotes = ["https://rubygems.org"];
68
+ sha256 = "0yclf57n2j3cw8144ania99h1zinf8q3f5zrhqa754j6gl95rp9d";
69
+ type = "gem";
70
+ };
71
+ version = "2.0.3";
72
+ };
73
+ json = {
74
+ groups = ["default"];
75
+ platforms = [];
76
+ source = {
77
+ remotes = ["https://rubygems.org"];
78
+ sha256 = "0yk5d10yvspkc5jyvx9gc1a9pn1z8v4k2hvjk1l88zixwf3wf3cl";
79
+ type = "gem";
80
+ };
81
+ version = "2.6.2";
82
+ };
83
+ locale = {
84
+ groups = ["default"];
85
+ platforms = [];
86
+ source = {
87
+ remotes = ["https://rubygems.org"];
88
+ sha256 = "0997465kxvpxm92fiwc2b16l49mngk7b68g5k35ify0m3q0yxpdn";
89
+ type = "gem";
90
+ };
91
+ version = "2.1.3";
92
+ };
93
+ lockfile = {
94
+ groups = ["default"];
95
+ platforms = [];
96
+ source = {
97
+ remotes = ["https://rubygems.org"];
98
+ sha256 = "0dij3ijywylvfgrpi2i0k17f6w0wjhnjjw0k9030f54z56cz7jrr";
99
+ type = "gem";
100
+ };
101
+ version = "2.1.3";
102
+ };
103
+ method_source = {
104
+ groups = ["default"];
105
+ platforms = [];
106
+ source = {
107
+ remotes = ["https://rubygems.org"];
108
+ sha256 = "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp";
109
+ type = "gem";
110
+ };
111
+ version = "1.0.0";
112
+ };
113
+ mime-types = {
114
+ dependencies = ["mime-types-data"];
115
+ groups = ["default"];
116
+ platforms = [];
117
+ source = {
118
+ remotes = ["https://rubygems.org"];
119
+ sha256 = "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb";
120
+ type = "gem";
121
+ };
122
+ version = "3.4.1";
123
+ };
124
+ mime-types-data = {
125
+ groups = ["default"];
126
+ platforms = [];
127
+ source = {
128
+ remotes = ["https://rubygems.org"];
129
+ sha256 = "003gd7mcay800k2q4pb2zn8lwwgci4bhi42v2jvlidm8ksx03i6q";
130
+ type = "gem";
131
+ };
132
+ version = "3.2022.0105";
133
+ };
134
+ mini_portile2 = {
135
+ groups = ["default"];
136
+ platforms = [];
137
+ source = {
138
+ remotes = ["https://rubygems.org"];
139
+ sha256 = "1kl9c3kdchjabrihdqfmcplk3lq4cw1rr9f378y6q22qwy5dndvs";
140
+ type = "gem";
141
+ };
142
+ version = "2.8.5";
143
+ };
144
+ minitest = {
145
+ groups = ["default"];
146
+ platforms = [];
147
+ source = {
148
+ remotes = ["https://rubygems.org"];
149
+ sha256 = "14a9ign0hj3z3j4cpfplj2djaskx3skzyx4fl3x53d7saxmhrgn1";
150
+ type = "gem";
151
+ };
152
+ version = "5.16.2";
153
+ };
154
+ ncursesw = {
155
+ groups = ["default"];
156
+ platforms = [];
157
+ source = {
158
+ remotes = ["https://rubygems.org"];
159
+ sha256 = "0qlfhp9b445g0qp9kkdiylfjlpfzrv6nqvry4ar6y0yacn0zr5y8";
160
+ type = "gem";
161
+ };
162
+ version = "1.4.11";
163
+ };
164
+ optimist = {
165
+ groups = ["default"];
166
+ platforms = [];
167
+ source = {
168
+ remotes = ["https://rubygems.org"];
169
+ sha256 = "1vg2chy1cfmdj6c1gryl8zvjhhmb3plwgyh1jfnpq4fnfqv7asrk";
170
+ type = "gem";
171
+ };
172
+ version = "3.0.1";
173
+ };
174
+ parallel = {
175
+ groups = ["default"];
176
+ platforms = [];
177
+ source = {
178
+ remotes = ["https://rubygems.org"];
179
+ sha256 = "07vnk6bb54k4yc06xnwck7php50l09vvlw1ga8wdz0pia461zpzb";
180
+ type = "gem";
181
+ };
182
+ version = "1.22.1";
183
+ };
184
+ parser = {
185
+ dependencies = ["ast"];
186
+ groups = ["default"];
187
+ platforms = [];
188
+ source = {
189
+ remotes = ["https://rubygems.org"];
190
+ sha256 = "0xhfghgidj8cbdnqp01f7kvnrv1f60izpkd9dhxsvpdzkfsdg97d";
191
+ type = "gem";
192
+ };
193
+ version = "3.1.2.0";
194
+ };
195
+ pry = {
196
+ dependencies = ["coderay" "method_source"];
197
+ groups = ["default"];
198
+ platforms = [];
199
+ source = {
200
+ remotes = ["https://rubygems.org"];
201
+ sha256 = "0m445x8fwcjdyv2bc0glzss2nbm1ll51bq45knixapc7cl3dzdlr";
202
+ type = "gem";
203
+ };
204
+ version = "0.14.1";
205
+ };
206
+ rainbow = {
207
+ groups = ["default"];
208
+ platforms = [];
209
+ source = {
210
+ remotes = ["https://rubygems.org"];
211
+ sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
212
+ type = "gem";
213
+ };
214
+ version = "3.1.1";
215
+ };
216
+ rake = {
217
+ groups = ["default"];
218
+ platforms = [];
219
+ source = {
220
+ remotes = ["https://rubygems.org"];
221
+ sha256 = "15whn7p9nrkxangbs9hh75q585yfn66lv0v2mhj6q6dl6x8bzr2w";
222
+ type = "gem";
223
+ };
224
+ version = "13.0.6";
225
+ };
226
+ regexp_parser = {
227
+ groups = ["default"];
228
+ platforms = [];
229
+ source = {
230
+ remotes = ["https://rubygems.org"];
231
+ sha256 = "1rfd3q17p7q7pa67844q8b16ipy6ksh8mkzynpm1zldqbb9x4xm0";
232
+ type = "gem";
233
+ };
234
+ version = "2.5.0";
235
+ };
236
+ rexml = {
237
+ groups = ["default"];
238
+ platforms = [];
239
+ source = {
240
+ remotes = ["https://rubygems.org"];
241
+ sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
242
+ type = "gem";
243
+ };
244
+ version = "3.2.5";
245
+ };
246
+ rmail = {
247
+ groups = ["default"];
248
+ platforms = [];
249
+ source = {
250
+ remotes = ["https://rubygems.org"];
251
+ sha256 = "0m5npkmv764m725wzjzasgf3k8q5anf3vfr6k2cac1xj6jc8lcqi";
252
+ type = "gem";
253
+ };
254
+ version = "1.1.4";
255
+ };
256
+ rr = {
257
+ groups = ["default"];
258
+ platforms = [];
259
+ source = {
260
+ remotes = ["https://rubygems.org"];
261
+ sha256 = "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp";
262
+ type = "gem";
263
+ };
264
+ version = "1.2.1";
265
+ };
266
+ rubocop = {
267
+ dependencies = ["json" "parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
268
+ groups = ["default"];
269
+ platforms = [];
270
+ source = {
271
+ remotes = ["https://rubygems.org"];
272
+ sha256 = "09k371m1l177ca8w70hfbjb1w0hasfb46pxp4w6yw92kk71akll2";
273
+ type = "gem";
274
+ };
275
+ version = "1.32.0";
276
+ };
277
+ rubocop-ast = {
278
+ dependencies = ["parser"];
279
+ groups = ["default"];
280
+ platforms = [];
281
+ source = {
282
+ remotes = ["https://rubygems.org"];
283
+ sha256 = "0h8q3gwqs8afshjd2l52ywf48md9rskr3q2y4fydgm536vvahjgm";
284
+ type = "gem";
285
+ };
286
+ version = "1.19.1";
287
+ };
288
+ rubocop-packaging = {
289
+ dependencies = ["rubocop"];
290
+ groups = ["default"];
291
+ platforms = [];
292
+ source = {
293
+ remotes = ["https://rubygems.org"];
294
+ sha256 = "0bzjd1077v96pyp62jg7s8ndxqbdhfnrdpdnmgi7h88xw22fp5xf";
295
+ type = "gem";
296
+ };
297
+ version = "0.5.1";
298
+ };
299
+ ruby-progressbar = {
300
+ groups = ["default"];
301
+ platforms = [];
302
+ source = {
303
+ remotes = ["https://rubygems.org"];
304
+ sha256 = "02nmaw7yx9kl7rbaan5pl8x5nn0y4j5954mzrkzi9i3dhsrps4nc";
305
+ type = "gem";
306
+ };
307
+ version = "1.11.0";
308
+ };
309
+ unicode = {
310
+ groups = ["default"];
311
+ platforms = [];
312
+ source = {
313
+ remotes = ["https://rubygems.org"];
314
+ sha256 = "1mx9lwzy021lpcqql5kn4yi20njhf5h7c7wxm2fx51p1r2zr9wj2";
315
+ type = "gem";
316
+ };
317
+ version = "0.4.4.5";
318
+ };
319
+ unicode-display_width = {
320
+ groups = ["default"];
321
+ platforms = [];
322
+ source = {
323
+ remotes = ["https://rubygems.org"];
324
+ sha256 = "1nlfck6z986fngp0r74maswmyb1rcksc8xc3mfpw9cj23c3s8zwn";
325
+ type = "gem";
326
+ };
327
+ version = "2.2.0";
328
+ };
329
+ xapian-ruby = {
330
+ groups = ["default"];
331
+ platforms = [];
332
+ source = {
333
+ remotes = ["https://rubygems.org"];
334
+ sha256 = "1z8arjkd0nlj6zv9in2sihmbwpbd17a10lsv7nwii7z0jjscyxpp";
335
+ type = "gem";
336
+ };
337
+ version = "1.4.18";
338
+ };
339
+ }
@@ -0,0 +1,26 @@
1
+ let
2
+ pkgs = import (builtins.fetchGit {
3
+ url = "https://github.com/NixOS/nixpkgs";
4
+ ref = "refs/heads/master";
5
+ rev = "3ef1d2a9602c18f8742e1fb63d5ae9867092e3d6";
6
+ }) {};
7
+ gems = pkgs.bundlerEnv {
8
+ name = "ruby2.6-gems-for-sup";
9
+ ruby = pkgs.ruby_2_6;
10
+ gemfile = ./Gemfile;
11
+ lockfile = ./ruby2.6-Gemfile.lock;
12
+ gemset = ./ruby2.6-gemset.nix;
13
+ gemConfig = pkgs.defaultGemConfig // {
14
+ fiddle = attrs: {
15
+ buildInputs = [ pkgs.libffi ];
16
+ };
17
+ # Workaround: remove rake from nativeBuildInputs, otherwise it causes
18
+ # xapian-bindings to build against the default Ruby version
19
+ # instead of our chosen version.
20
+ xapian-ruby = attrs: pkgs.defaultGemConfig.xapian-ruby attrs // {
21
+ dependencies = [ "rake" ];
22
+ nativeBuildInputs = [ pkgs.pkg-config ];
23
+ };
24
+ };
25
+ };
26
+ in pkgs.mkShell { packages = [ gems gems.wrappedRuby pkgs.pandoc ]; }
@@ -0,0 +1,91 @@
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.24)
10
+ mini_portile2 (~> 2.7)
11
+ highline (3.0.1)
12
+ json (2.7.2)
13
+ language_server-protocol (3.17.0.3)
14
+ locale (2.1.4)
15
+ lockfile (2.1.3)
16
+ method_source (1.1.0)
17
+ mime-types (3.5.2)
18
+ mime-types-data (~> 3.2015)
19
+ mime-types-data (3.2024.0305)
20
+ mini_portile2 (2.8.6)
21
+ minitest (5.22.3)
22
+ ncursesw (1.4.11)
23
+ optimist (3.1.0)
24
+ parallel (1.24.0)
25
+ parser (3.3.0.5)
26
+ ast (~> 2.4.1)
27
+ racc
28
+ pry (0.14.2)
29
+ coderay (~> 1.1)
30
+ method_source (~> 1.0)
31
+ racc (1.7.3)
32
+ rainbow (3.1.1)
33
+ rake (13.2.1)
34
+ regexp_parser (2.9.0)
35
+ rexml (3.2.6)
36
+ rmail (1.1.4)
37
+ rr (1.2.1)
38
+ rubocop (1.63.2)
39
+ json (~> 2.3)
40
+ language_server-protocol (>= 3.17.0)
41
+ parallel (~> 1.10)
42
+ parser (>= 3.3.0.2)
43
+ rainbow (>= 2.2.2, < 4.0)
44
+ regexp_parser (>= 1.8, < 3.0)
45
+ rexml (>= 3.2.5, < 4.0)
46
+ rubocop-ast (>= 1.31.1, < 2.0)
47
+ ruby-progressbar (~> 1.7)
48
+ unicode-display_width (>= 2.4.0, < 3.0)
49
+ rubocop-ast (1.31.2)
50
+ parser (>= 3.3.0.4)
51
+ rubocop-packaging (0.5.2)
52
+ rubocop (>= 1.33, < 2.0)
53
+ ruby-progressbar (1.13.0)
54
+ unicode (0.4.4.5)
55
+ unicode-display_width (2.5.0)
56
+ xapian-ruby (1.4.22)
57
+
58
+ PLATFORMS
59
+ aarch64-linux
60
+ x86_64-darwin-17
61
+ x86_64-darwin-18
62
+ x86_64-darwin-19
63
+ x86_64-darwin-20
64
+ x86_64-darwin-21
65
+ x86_64-darwin-22
66
+ x86_64-linux
67
+
68
+ DEPENDENCIES
69
+ benchmark
70
+ bundler (>= 1.3, < 3)
71
+ chronic
72
+ fiddle
73
+ gpgme (>= 2.0.2)
74
+ highline
75
+ locale (~> 2.0)
76
+ lockfile
77
+ mime-types (> 2.0)
78
+ minitest (~> 5.5)
79
+ ncursesw (~> 1.4.0)
80
+ optimist
81
+ pry
82
+ rake
83
+ rmail (>= 1.1.2, < 2)
84
+ rr (~> 1.1)
85
+ rubocop-packaging
86
+ unicode (~> 0.4.4)
87
+ unicode-display_width
88
+ xapian-ruby (~> 1.2)
89
+
90
+ BUNDLED WITH
91
+ 2.4.22