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