sup 1.0 → 1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/checks.yml +58 -0
  3. data/.rubocop.yml +5 -0
  4. data/CONTRIBUTORS +5 -2
  5. data/Gemfile +5 -1
  6. data/History.txt +33 -0
  7. data/Manifest.txt +171 -0
  8. data/README.md +9 -4
  9. data/Rakefile +40 -1
  10. data/bin/sup-add +4 -8
  11. data/bin/sup-sync-back-maildir +1 -1
  12. data/contrib/nix/Gemfile +22 -0
  13. data/contrib/nix/Gemfile.lock +80 -0
  14. data/contrib/nix/README +7 -0
  15. data/contrib/nix/gem-install-shell.nix +12 -0
  16. data/contrib/nix/gemset.nix +339 -0
  17. data/contrib/nix/ruby2.4-Gemfile.lock +81 -0
  18. data/contrib/nix/ruby2.4-gemset.nix +309 -0
  19. data/contrib/nix/ruby2.4-shell.nix +30 -0
  20. data/contrib/nix/ruby2.5-Gemfile.lock +81 -0
  21. data/contrib/nix/ruby2.5-gemset.nix +309 -0
  22. data/contrib/nix/ruby2.5-shell.nix +30 -0
  23. data/contrib/nix/ruby2.6-Gemfile.lock +83 -0
  24. data/contrib/nix/ruby2.6-gemset.nix +319 -0
  25. data/contrib/nix/ruby2.6-shell.nix +30 -0
  26. data/contrib/nix/ruby2.7-shell.nix +23 -0
  27. data/contrib/nix/ruby3.0-shell.nix +23 -0
  28. data/contrib/nix/ruby3.1-shell.nix +23 -0
  29. data/contrib/nix/ruby3.2-shell.nix +23 -0
  30. data/contrib/nix/ruby3.3-shell.nix +23 -0
  31. data/contrib/nix/test-all-rubies.sh +6 -0
  32. data/doc/Hooks.txt +1 -1
  33. data/ext/mkrf_conf_xapian.rb +12 -6
  34. data/lib/sup/colormap.rb +1 -1
  35. data/lib/sup/crypto.rb +1 -1
  36. data/lib/sup/hook.rb +1 -1
  37. data/lib/sup/index.rb +4 -4
  38. data/lib/sup/keymap.rb +1 -1
  39. data/lib/sup/maildir.rb +5 -5
  40. data/lib/sup/mbox.rb +5 -5
  41. data/lib/sup/message.rb +8 -7
  42. data/lib/sup/message_chunks.rb +27 -19
  43. data/lib/sup/modes/completion_mode.rb +0 -1
  44. data/lib/sup/modes/console_mode.rb +1 -1
  45. data/lib/sup/modes/file_browser_mode.rb +2 -2
  46. data/lib/sup/modes/label_list_mode.rb +1 -1
  47. data/lib/sup/modes/search_list_mode.rb +2 -2
  48. data/lib/sup/modes/thread_view_mode.rb +1 -2
  49. data/lib/sup/rfc2047.rb +21 -6
  50. data/lib/sup/source.rb +8 -2
  51. data/lib/sup/textfield.rb +0 -1
  52. data/lib/sup/thread.rb +20 -21
  53. data/lib/sup/util.rb +31 -53
  54. data/lib/sup/version.rb +1 -1
  55. data/lib/sup.rb +12 -8
  56. data/man/sup-add.1 +39 -39
  57. data/man/sup-config.1 +31 -27
  58. data/man/sup-dump.1 +34 -35
  59. data/man/sup-import-dump.1 +36 -32
  60. data/man/sup-psych-ify-config-files.1 +29 -25
  61. data/man/sup-recover-sources.1 +32 -28
  62. data/man/sup-sync-back-maildir.1 +34 -30
  63. data/man/sup-sync.1 +40 -36
  64. data/man/sup-tweak-labels.1 +36 -32
  65. data/man/sup.1 +41 -37
  66. data/shell.nix +1 -0
  67. data/sup.gemspec +6 -4
  68. data/test/dummy_source.rb +21 -15
  69. data/test/fixtures/embedded-message.eml +34 -0
  70. data/test/fixtures/non-ascii-header-in-nested-message.eml +36 -0
  71. data/test/fixtures/non-ascii-header.eml +8 -0
  72. data/test/fixtures/rfc2047-header-encoding.eml +15 -0
  73. data/test/fixtures/text-attachments-with-charset.eml +15 -1
  74. data/test/fixtures/utf8-header.eml +17 -0
  75. data/test/integration/test_maildir.rb +3 -0
  76. data/test/integration/test_mbox.rb +4 -1
  77. data/test/integration/test_sup-add.rb +83 -0
  78. data/test/integration/test_sup-sync-back-maildir.rb +40 -0
  79. data/test/test_crypto.rb +44 -0
  80. data/test/test_header_parsing.rb +11 -3
  81. data/test/test_helper.rb +7 -4
  82. data/test/test_message.rb +124 -32
  83. data/test/test_messages_dir.rb +13 -15
  84. data/test/unit/test_horizontal_selector.rb +4 -4
  85. data/test/unit/test_locale_fiddler.rb +1 -1
  86. data/test/unit/util/test_query.rb +1 -1
  87. data/test/unit/util/test_string.rb +3 -3
  88. data/test/unit/util/test_uri.rb +2 -2
  89. metadata +69 -18
  90. data/.travis.yml +0 -18
  91. data/bin/sup-psych-ify-config-files +0 -21
  92. data/test/integration/test_label_service.rb +0 -18
  93. data/test/test_yaml_migration.rb +0 -85
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 304755e3fd6b2e9aa86139810adb852249b93d7491471f17b2bd57e84b25489b
4
- data.tar.gz: 0c13ac3dd70310cae00eb59bcc2a90d13f8748e07fd3b38e74e9a7893cd18c1f
3
+ metadata.gz: 9b3d74175eddced998ccf3d918989ba1f90781bb0f2432df5cc11ae2cf3a5ba9
4
+ data.tar.gz: f415405432adaa8fcfa9a10640107da0cce2575afee758902b934b137e1077e3
5
5
  SHA512:
6
- metadata.gz: 62e6e7e76826426f53870b6fe8d8959777752360b6ff9aca1e5644e33e2e31b399b251007a4dc5a439f68419610a2a99b32a005117615d1d293c16283379150d
7
- data.tar.gz: 3cb2caa77a89ba1595365a93975e3caa006065a73787e075a2672e23670ecb3384c0f5c3a0e7bdb141fa31a3668e2870991097ece67de9d2d6b9a3fe1cbb2324
6
+ metadata.gz: 1e3f012755517d29e9c2c0f5df80eac0432390bcbdd3108e32f921794aeafb2e791e9e6ff64b0663d1c1495b0040ebb1bbe8c006113380b787715ba85edf34dd
7
+ data.tar.gz: bc829f5939d98acd30f8c241b4f4defd3d6e8c09bde0a39802e28a5a2ecb78a15d7d7e4f25aa7456e0ddd6e20d01453d0715d8947942c74808c65037720fb25b
@@ -0,0 +1,58 @@
1
+ name: checks
2
+ on:
3
+ push:
4
+ branches:
5
+ - develop
6
+ pull_request:
7
+ branches:
8
+ - develop
9
+ permissions:
10
+ contents: read
11
+ jobs:
12
+ rake-ci:
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ os:
17
+ - ubuntu-latest
18
+ - macos-latest
19
+ ruby-version:
20
+ - '2.4'
21
+ - '2.5'
22
+ - '2.6'
23
+ - '2.7'
24
+ - '3.0'
25
+ - '3.1'
26
+ - '3.2'
27
+ - '3.3'
28
+ runs-on: ${{ matrix.os }}
29
+ env:
30
+ nixfile: "contrib/nix/ruby${{ matrix.ruby-version }}-shell.nix"
31
+ steps:
32
+ - name: Check out source
33
+ uses: actions/checkout@v3
34
+ with:
35
+ submodules: recursive
36
+ - name: Cache nix store
37
+ uses: actions/cache@v3
38
+ id: nix-cache
39
+ with:
40
+ path: /tmp/nixcache
41
+ key: nix-store-${{ matrix.os }}-ruby${{ matrix.ruby-version }}-${{ hashFiles('contrib/nix/**') }}
42
+ restore-keys: |
43
+ nix-store-${{ matrix.os }}-ruby${{ matrix.ruby-version }}-
44
+ nix-store-
45
+ - name: Install bash on MacOS
46
+ run: brew install bash
47
+ if: runner.os == 'macOS'
48
+ - name: Install nix
49
+ uses: nixbuild/nix-quick-install-action@v21
50
+ - name: Import nix cache
51
+ run: |
52
+ if [ -f /tmp/nixcache ] ; then
53
+ nix-store --import </tmp/nixcache
54
+ fi
55
+ - name: Run Rake ci task
56
+ run: nix-shell "$nixfile" --run 'rake ci'
57
+ - name: Export nix cache
58
+ run: nix-store --export $(nix-store -qR $(nix-build --no-out-link "$nixfile" -A inputDerivation | tail -n1)) >/tmp/nixcache
data/.rubocop.yml ADDED
@@ -0,0 +1,5 @@
1
+ require:
2
+ - rubocop-packaging
3
+
4
+ AllCops:
5
+ DisabledByDefault: true
data/CONTRIBUTORS CHANGED
@@ -1,23 +1,23 @@
1
1
  William Morgan <william at the twitter dot coms>
2
2
  Rich Lane <rlane at the club.cc.cmu dot edus>
3
3
  Gaute Hope <eg at the gaute.vetsj dot coms>
4
+ Dan Callaghan <djc at the djc.id dot aus>
4
5
  Whyme Lyu <callme5long at the gmail dot coms>
5
6
  Hamish Downer <dmishd at the gmail dot coms>
6
7
  Zeger-Jan van de Weg <mail at the zjvandeweg dot nls>
7
8
  Damien Leone <damien.leone at the fensalir dot frs>
8
9
  Sascha Silbe <sascha-pgp at the silbe dot orgs>
10
+ Iain Parris <ipv2.vcs at the parris dot orgs>
9
11
  Eric Weikl <eric.weikl at the gmx dot nets>
10
12
  Paweł Wilk <siefca at the gnu dot orgs>
11
13
  Matthieu Rakotojaona <matthieu.rakotojaona at the gmail dot coms>
12
14
  Ismo Puustinen <ismo at the iki dot fis>
13
- Dan Callaghan <djc at the djc.id dot aus>
14
15
  Nicolas Pouillard <nicolas.pouillard at the gmail dot coms>
15
16
  Michael Stapelberg <michael at the stapelberg dot des>
16
17
  Eric Sherman <hyperbolist at the gmail dot coms>
17
18
  Tero Tilus <tero at the tilus dot nets>
18
19
  Ben Walton <bwalton at the artsci.utoronto dot cas>
19
20
  Scott Bonds <scott at the ggr dot coms>
20
- Iain Parris <ipv2.vcs at the parris dot orgs>
21
21
  Mike Stipicevic <stipim at the rpi dot edus>
22
22
  Martin Bähr <mbaehr at the societyserver dot orgs>
23
23
  Timon Vonk <timonv at the gmail dot coms>
@@ -87,6 +87,9 @@ Todd Eisenberger <teisenbe at the andrew.cmu dot edus>
87
87
  Johannes Larsen <mail at the johslarsen dot nets>
88
88
  Steven Schmeiser <steven at the schmeiser dot orgs>
89
89
  Steven Walter <swalter at the monarch.(none)>
90
+ Patrice Duroux <patrice.duroux at the gmail dot coms>
91
+ gclv <gh at the sg.ggoncalves dot mes>
92
+ Utkarsh Gupta <utkarsh at the debian dot orgs>
90
93
  Michael Dwyer <mdwyer at the michaelmdwyer dot coms>
91
94
  Kyle Hunt <Kyle_Hunt at the ymail dot coms>
92
95
  William A. Kennington III <william at the wkennington dot coms>
data/Gemfile CHANGED
@@ -2,7 +2,11 @@ source 'https://rubygems.org/'
2
2
 
3
3
  if !RbConfig::CONFIG['arch'].include?('openbsd')
4
4
  # update version in ext/mkrf_conf_xapian.rb as well.
5
- gem 'xapian-ruby', '~> 1.2'
5
+ if /^2\.0\./ =~ RUBY_VERSION
6
+ gem 'xapian-ruby', ['~> 1.2', '< 1.3.6']
7
+ else
8
+ gem 'xapian-ruby', '~> 1.2'
9
+ end
6
10
  end
7
11
 
8
12
  gemspec
data/History.txt CHANGED
@@ -1,3 +1,36 @@
1
+ == 1.2 / 2024-04-21
2
+
3
+ * #619: Sup is now compatible with and tested on Ruby 3.2 and Ruby 3.3.
4
+ (Dan Callaghan)
5
+ * #603: Fixed deprecated usage of Enumerator.new, which caused a crash on
6
+ Ruby 3+. (Gui Goncalves)
7
+ * OutOfSyncSourceErrors now show an error message in the thread view in place
8
+ of the out-of-sync message body, instead of crashing. (Dan Callaghan)
9
+ * #613: When installing Sup as a gem, the dependency on xapian-ruby is now
10
+ skipped if the SUP_SKIP_XAPIAN_GEM_INSTALL environment variable is set.
11
+ Previously it was skipped unconditionally on OpenBSD only. (Dan Callaghan)
12
+
13
+ == 1.1 / 2022-05-23
14
+
15
+ * #588, #577: Sup is now compatible with and tested on Ruby 3.0 and Ruby 3.1.
16
+ (Dan Callaghan)
17
+ * When the Sup gem installs xapian-ruby, it will install to the user gem
18
+ directory if the system gem directory is not writable. (Iain Parris)
19
+ * #571: To and From addresses of enclosed messages are now displayed normally,
20
+ instead of as Redwood::Person objects. (Iain Parris)
21
+ * #570: Fixed wording when displaying enclosed messages without Date header.
22
+ (Iain Parris)
23
+ * #205, #602: UTF-8 header values are now accepted and handled correctly, as
24
+ per RFC6532. (Dan Callaghan)
25
+ * #585: Text/plain attachments with invalid charset are now displayed as
26
+ US-ASCII (with high bytes replaced) instead of crashing. (Dan Callaghan)
27
+ * #424: Spaces are now accepted in RFC2047-encoded header words, even though
28
+ the RFC forbids them. (Dan Callaghan)
29
+ * Invalid RFC2047-encoded header words are now displayed in their raw form,
30
+ rather than trying to forcibly transcode them to UTF-8, as per the RFC's
31
+ recommendation. (Dan Callaghan)
32
+ * Sup now decodes UTF-7 correctly instead of crashing. (Dan Callaghan)
33
+
1
34
  == 1.0 / 2020-07-12
2
35
 
3
36
  No changes. The version number is incremented to 1.0 to reflect the fact that
data/Manifest.txt ADDED
@@ -0,0 +1,171 @@
1
+ .github/workflows/checks.yml
2
+ .gitignore
3
+ .gitmodules
4
+ .rubocop.yml
5
+ CONTRIBUTORS
6
+ Gemfile
7
+ HACKING
8
+ History.txt
9
+ LICENSE
10
+ Manifest.txt
11
+ README.md
12
+ Rakefile
13
+ ReleaseNotes
14
+ bin/sup
15
+ bin/sup-add
16
+ bin/sup-config
17
+ bin/sup-dump
18
+ bin/sup-import-dump
19
+ bin/sup-recover-sources
20
+ bin/sup-sync
21
+ bin/sup-sync-back-maildir
22
+ bin/sup-tweak-labels
23
+ contrib/colorpicker.rb
24
+ contrib/completion/_sup.bash
25
+ contrib/completion/_sup.zsh
26
+ contrib/nix/Gemfile
27
+ contrib/nix/Gemfile.lock
28
+ contrib/nix/README
29
+ contrib/nix/gem-install-shell.nix
30
+ contrib/nix/gemset.nix
31
+ contrib/nix/ruby2.4-Gemfile.lock
32
+ contrib/nix/ruby2.4-gemset.nix
33
+ contrib/nix/ruby2.4-shell.nix
34
+ contrib/nix/ruby2.5-Gemfile.lock
35
+ contrib/nix/ruby2.5-gemset.nix
36
+ contrib/nix/ruby2.5-shell.nix
37
+ contrib/nix/ruby2.6-Gemfile.lock
38
+ contrib/nix/ruby2.6-gemset.nix
39
+ contrib/nix/ruby2.6-shell.nix
40
+ contrib/nix/ruby2.7-shell.nix
41
+ contrib/nix/ruby3.0-shell.nix
42
+ contrib/nix/ruby3.1-shell.nix
43
+ contrib/nix/ruby3.2-shell.nix
44
+ contrib/nix/ruby3.3-shell.nix
45
+ contrib/nix/test-all-rubies.sh
46
+ devel/console.sh
47
+ devel/count-loc.sh
48
+ devel/load-index.rb
49
+ devel/profile.rb
50
+ devel/start-console.rb
51
+ doc/FAQ.txt
52
+ doc/Hooks.txt
53
+ doc/Philosophy.txt
54
+ doc/wiki
55
+ ext/mkrf_conf_xapian.rb
56
+ lib/sup.rb
57
+ lib/sup/account.rb
58
+ lib/sup/buffer.rb
59
+ lib/sup/colormap.rb
60
+ lib/sup/contact.rb
61
+ lib/sup/crypto.rb
62
+ lib/sup/draft.rb
63
+ lib/sup/hook.rb
64
+ lib/sup/horizontal_selector.rb
65
+ lib/sup/idle.rb
66
+ lib/sup/index.rb
67
+ lib/sup/interactive_lock.rb
68
+ lib/sup/keymap.rb
69
+ lib/sup/label.rb
70
+ lib/sup/logger.rb
71
+ lib/sup/logger/singleton.rb
72
+ lib/sup/maildir.rb
73
+ lib/sup/mbox.rb
74
+ lib/sup/message.rb
75
+ lib/sup/message_chunks.rb
76
+ lib/sup/mode.rb
77
+ lib/sup/modes/buffer_list_mode.rb
78
+ lib/sup/modes/completion_mode.rb
79
+ lib/sup/modes/compose_mode.rb
80
+ lib/sup/modes/console_mode.rb
81
+ lib/sup/modes/contact_list_mode.rb
82
+ lib/sup/modes/edit_message_async_mode.rb
83
+ lib/sup/modes/edit_message_mode.rb
84
+ lib/sup/modes/file_browser_mode.rb
85
+ lib/sup/modes/forward_mode.rb
86
+ lib/sup/modes/help_mode.rb
87
+ lib/sup/modes/inbox_mode.rb
88
+ lib/sup/modes/label_list_mode.rb
89
+ lib/sup/modes/label_search_results_mode.rb
90
+ lib/sup/modes/line_cursor_mode.rb
91
+ lib/sup/modes/log_mode.rb
92
+ lib/sup/modes/person_search_results_mode.rb
93
+ lib/sup/modes/poll_mode.rb
94
+ lib/sup/modes/reply_mode.rb
95
+ lib/sup/modes/resume_mode.rb
96
+ lib/sup/modes/scroll_mode.rb
97
+ lib/sup/modes/search_list_mode.rb
98
+ lib/sup/modes/search_results_mode.rb
99
+ lib/sup/modes/text_mode.rb
100
+ lib/sup/modes/thread_index_mode.rb
101
+ lib/sup/modes/thread_view_mode.rb
102
+ lib/sup/person.rb
103
+ lib/sup/poll.rb
104
+ lib/sup/rfc2047.rb
105
+ lib/sup/search.rb
106
+ lib/sup/sent.rb
107
+ lib/sup/service/label_service.rb
108
+ lib/sup/source.rb
109
+ lib/sup/tagger.rb
110
+ lib/sup/textfield.rb
111
+ lib/sup/thread.rb
112
+ lib/sup/time.rb
113
+ lib/sup/undo.rb
114
+ lib/sup/update.rb
115
+ lib/sup/util.rb
116
+ lib/sup/util/axe.rb
117
+ lib/sup/util/locale_fiddler.rb
118
+ lib/sup/util/ncurses.rb
119
+ lib/sup/util/path.rb
120
+ lib/sup/util/query.rb
121
+ lib/sup/util/uri.rb
122
+ lib/sup/version.rb
123
+ shell.nix
124
+ sup.gemspec
125
+ test/dummy_source.rb
126
+ test/fixtures/bad-content-transfer-encoding-1.eml
127
+ test/fixtures/binary-content-transfer-encoding-2.eml
128
+ test/fixtures/blank-header-fields.eml
129
+ test/fixtures/contacts.txt
130
+ test/fixtures/embedded-message.eml
131
+ test/fixtures/mailing-list-header.eml
132
+ test/fixtures/malicious-attachment-names.eml
133
+ test/fixtures/missing-from-to.eml
134
+ test/fixtures/missing-line.eml
135
+ test/fixtures/multi-part-2.eml
136
+ test/fixtures/multi-part.eml
137
+ test/fixtures/no-body.eml
138
+ test/fixtures/non-ascii-header-in-nested-message.eml
139
+ test/fixtures/non-ascii-header.eml
140
+ test/fixtures/rfc2047-header-encoding.eml
141
+ test/fixtures/simple-message.eml
142
+ test/fixtures/text-attachments-with-charset.eml
143
+ test/fixtures/utf8-header.eml
144
+ test/fixtures/zimbra-quote-with-bottom-post.eml
145
+ test/gnupg_test_home/.gpg-v21-migrated
146
+ test/gnupg_test_home/gpg.conf
147
+ test/gnupg_test_home/private-keys-v1.d/306D2EE90FF0014B5B9FD07E265C751791674140.key
148
+ test/gnupg_test_home/pubring.gpg
149
+ test/gnupg_test_home/receiver_pubring.gpg
150
+ test/gnupg_test_home/receiver_secring.gpg
151
+ test/gnupg_test_home/regen_keys.sh
152
+ test/gnupg_test_home/secring.gpg
153
+ test/gnupg_test_home/sup-test-2@foo.bar.asc
154
+ test/integration/test_maildir.rb
155
+ test/integration/test_mbox.rb
156
+ test/integration/test_sup-add.rb
157
+ test/integration/test_sup-sync-back-maildir.rb
158
+ test/test_crypto.rb
159
+ test/test_header_parsing.rb
160
+ test/test_helper.rb
161
+ test/test_message.rb
162
+ test/test_messages_dir.rb
163
+ test/test_yaml_regressions.rb
164
+ test/unit/service/test_label_service.rb
165
+ test/unit/test_contact.rb
166
+ test/unit/test_horizontal_selector.rb
167
+ test/unit/test_locale_fiddler.rb
168
+ test/unit/test_person.rb
169
+ test/unit/util/test_query.rb
170
+ test/unit/util/test_string.rb
171
+ test/unit/util/test_uri.rb
data/README.md CHANGED
@@ -38,7 +38,6 @@ Please report bugs to the [GitHub issue tracker](https://github.com/sup-heliotro
38
38
  * [Homepage](https://sup-heliotrope.github.io/)
39
39
  * [Code repository](https://github.com/sup-heliotrope/sup)
40
40
  * [Wiki](https://github.com/sup-heliotrope/sup/wiki)
41
- * IRC: [#sup @ freenode.net](http://webchat.freenode.net/?channels=#sup)
42
41
  * Mailing list: supmua@googlegroups.com (subscribe: supmua+subscribe@googlegroups.com, archive: https://groups.google.com/d/forum/supmua )
43
42
 
44
43
  ## Maintenance status
@@ -57,9 +56,15 @@ some alternatives to consider:
57
56
  * [Notmuch](https://notmuchmail.org/) was inspired by Sup. There are a wide
58
57
  variety of [Notmuch clients](https://notmuchmail.org/frontends/) available.
59
58
  The most similar to Sup's look-and-feel is
60
- [Alot](https://github.com/pazz/alot) &mdash; also a curses-based frontend.
61
- Alot even ships with a built-in
62
- [Sup theme](https://github.com/pazz/alot/blob/master/extra/themes/sup)!
59
+ [Alot](https://github.com/pazz/alot) &mdash; also a curses-based front end.
60
+ Alot even ships with a
61
+ [built-in](https://github.com/pazz/alot/blob/master/extra/themes/sup)
62
+ [Sup theme](https://github.com/pazz/alot/wiki/Gallery#user-content-theme-sup)!
63
+
64
+ * [mu](https://www.djcbsoftware.nl/code/mu/) /
65
+ [mu4e](https://www.djcbsoftware.nl/code/mu/mu4e.html). Like Sup, a search-based
66
+ email back end, and also implemented using Xapian. The emacs-based front end
67
+ [is quite different](https://www.djcbsoftware.nl/code/mu/mu4e/Other-mail-clients.html).
63
68
 
64
69
  ## License
65
70
 
data/Rakefile CHANGED
@@ -1,6 +1,10 @@
1
1
  require 'rake/testtask'
2
2
  require "bundler/gem_tasks"
3
3
 
4
+ # Manifest.txt file in same folder as this Rakefile
5
+ manifest_filename = "#{File.dirname(__FILE__)}/Manifest.txt"
6
+ git_ls_files_command = "git ls-files | LC_ALL=C sort"
7
+
4
8
  Rake::TestTask.new(:test) do |test|
5
9
  test.libs << 'test'
6
10
  test.test_files = FileList.new('test/**/test_*.rb')
@@ -9,7 +13,7 @@ end
9
13
  task :default => :test
10
14
 
11
15
  task :build => [:man]
12
- task :travis => [:test, :build]
16
+ task :ci => [:test, :rubocop_packaging, :check_manifest, :build]
13
17
 
14
18
  def test_pandoc
15
19
  return system("pandoc -v > /dev/null 2>&1")
@@ -50,3 +54,38 @@ task :clean do
50
54
  FileUtils.rm_r d if Dir.exist? d
51
55
  end
52
56
  end
57
+
58
+ task :manifest do
59
+ manifest = `#{git_ls_files_command}`
60
+ if $?.success? then
61
+ puts "Writing `git ls-files` output to #{manifest_filename}"
62
+ File.write(manifest_filename, manifest, mode: 'w')
63
+ else
64
+ abort "Failed to generate Manifest.txt (with `git ls-files`)"
65
+ end
66
+ end
67
+
68
+ task :check_manifest do
69
+ manifest = `#{git_ls_files_command}`
70
+ manifest_file_contents = File.read(manifest_filename)
71
+ if manifest == manifest_file_contents
72
+ puts "Manifest.txt OK"
73
+ else
74
+ puts "Manifest from `git ls-files`:\n#{manifest}"
75
+ STDERR.puts "Manifest.txt outdated. Please commit an updated Manifest.txt"
76
+ STDERR.puts "To generate Manifest.txt, run: rake manifest"
77
+ abort "Manifest.txt does not match `git ls-files`"
78
+ end
79
+ end
80
+
81
+ task :rubocop_packaging do
82
+ if /^2\.[012]\./ =~ RUBY_VERSION
83
+ puts "skipping rubocop-packaging checks on unsupported Ruby #{RUBY_VERSION}"
84
+ next
85
+ end
86
+ if system("rubocop --only Packaging")
87
+ puts "rubocop-packaging checks OK"
88
+ else
89
+ abort "rubocop-packaging checks failed"
90
+ end
91
+ end
data/bin/sup-add CHANGED
@@ -94,18 +94,14 @@ begin
94
94
  next
95
95
  end
96
96
 
97
- parsed_uri = URI(URI.escape(uri))
98
-
99
97
  source =
100
- case parsed_uri.scheme
101
- when "maildir"
98
+ case uri
99
+ when /^maildir:/
102
100
  Redwood::Maildir.new uri, !$opts[:unusual], $opts[:archive], $opts[:sync_back], nil, labels
103
- when "mbox"
101
+ when /^mbox:/
104
102
  Redwood::MBox.new uri, !$opts[:unusual], $opts[:archive], nil, labels
105
103
  when nil
106
- Optimist::die "Sources must be specified with an URI"
107
- else
108
- Optimist::die "Unknown source type #{parsed_uri.scheme.inspect}"
104
+ Optimist::die "Sources must be specified with a maildir:// or mbox:// URI"
109
105
  end
110
106
  @cli.say "Adding #{source}..."
111
107
  Redwood::SourceManager.add_source source
@@ -94,7 +94,7 @@ begin
94
94
  next if STDIN.gets.chomp.downcase == 'n'
95
95
  end
96
96
 
97
- infos = Enumerator.new(index, :each_source_info, s.id).to_a
97
+ infos = index.enum_for(:each_source_info, s.id).to_a
98
98
  counter = 0
99
99
  infos.each do |info|
100
100
  print "\rSynchronizing '#{s.uri}'... #{((counter += 1)/infos.size.to_f*100).to_i}%"
@@ -0,0 +1,22 @@
1
+ source "https://rubygems.org/"
2
+
3
+ gem "xapian-ruby", "~> 1.2"
4
+ gem "ncursesw", "~> 1.4.0"
5
+ gem "rmail", ">= 1.1.2", "< 2"
6
+ gem "highline"
7
+ gem "optimist"
8
+ gem "lockfile"
9
+ gem "mime-types", "> 2.0"
10
+ gem "locale", "~> 2.0"
11
+ gem "chronic"
12
+ gem "unicode", "~> 0.4.4"
13
+ gem "unicode-display_width"
14
+ gem "string-scrub" if /^2\.0\./ =~ RUBY_VERSION
15
+
16
+ gem "bundler", ">= 1.3", "< 3"
17
+ gem "rake"
18
+ gem "minitest", "~> 5.5"
19
+ gem "rr", "~> 1.1"
20
+ gem "gpgme", ">= 2.0.2"
21
+ gem "pry"
22
+ gem "rubocop-packaging" unless /^2\.[012]\./ =~ RUBY_VERSION
@@ -0,0 +1,80 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ ast (2.4.2)
5
+ chronic (0.10.2)
6
+ coderay (1.1.3)
7
+ gpgme (2.0.24)
8
+ mini_portile2 (~> 2.7)
9
+ highline (3.0.1)
10
+ json (2.7.2)
11
+ language_server-protocol (3.17.0.3)
12
+ locale (2.1.4)
13
+ lockfile (2.1.3)
14
+ method_source (1.1.0)
15
+ mime-types (3.5.2)
16
+ mime-types-data (~> 3.2015)
17
+ mime-types-data (3.2024.0305)
18
+ mini_portile2 (2.8.6)
19
+ minitest (5.22.3)
20
+ ncursesw (1.4.11)
21
+ optimist (3.1.0)
22
+ parallel (1.24.0)
23
+ parser (3.3.0.5)
24
+ ast (~> 2.4.1)
25
+ racc
26
+ pry (0.14.2)
27
+ coderay (~> 1.1)
28
+ method_source (~> 1.0)
29
+ racc (1.7.3)
30
+ rainbow (3.1.1)
31
+ rake (13.2.1)
32
+ regexp_parser (2.9.0)
33
+ rexml (3.2.6)
34
+ rmail (1.1.4)
35
+ rr (1.2.1)
36
+ rubocop (1.63.2)
37
+ json (~> 2.3)
38
+ language_server-protocol (>= 3.17.0)
39
+ parallel (~> 1.10)
40
+ parser (>= 3.3.0.2)
41
+ rainbow (>= 2.2.2, < 4.0)
42
+ regexp_parser (>= 1.8, < 3.0)
43
+ rexml (>= 3.2.5, < 4.0)
44
+ rubocop-ast (>= 1.31.1, < 2.0)
45
+ ruby-progressbar (~> 1.7)
46
+ unicode-display_width (>= 2.4.0, < 3.0)
47
+ rubocop-ast (1.31.2)
48
+ parser (>= 3.3.0.4)
49
+ rubocop-packaging (0.5.2)
50
+ rubocop (>= 1.33, < 2.0)
51
+ ruby-progressbar (1.13.0)
52
+ unicode (0.4.4.4)
53
+ unicode-display_width (2.5.0)
54
+ xapian-ruby (1.4.22)
55
+
56
+ PLATFORMS
57
+ aarch64-linux
58
+
59
+ DEPENDENCIES
60
+ bundler (>= 1.3, < 3)
61
+ chronic
62
+ gpgme (>= 2.0.2)
63
+ highline
64
+ locale (~> 2.0)
65
+ lockfile
66
+ mime-types (> 2.0)
67
+ minitest (~> 5.5)
68
+ ncursesw (~> 1.4.0)
69
+ optimist
70
+ pry
71
+ rake
72
+ rmail (>= 1.1.2, < 2)
73
+ rr (~> 1.1)
74
+ rubocop-packaging
75
+ unicode (~> 0.4.4)
76
+ unicode-display_width
77
+ xapian-ruby (~> 1.2)
78
+
79
+ BUNDLED WITH
80
+ 2.4.22
@@ -0,0 +1,7 @@
1
+ After updating Gemfile, regenerate Gemfile.lock and gemset.nix:
2
+
3
+ nix-shell -p bundix --run 'bundix --gemfile=contrib/nix/Gemfile --lockfile=contrib/nix/Gemfile.lock --gemset=contrib/nix/gemset.nix -l'
4
+
5
+ Test gem installation:
6
+
7
+ nix-shell contrib/nix/gem-install-shell.nix --run 'gem install --verbose -i ./asdf ./pkg/sup-999.gem'
@@ -0,0 +1,12 @@
1
+ { pkgs ? import <nixpkgs> {} }:
2
+ pkgs.mkShell {
3
+ packages = with pkgs; [
4
+ ncurses
5
+ ncurses.dev
6
+ libuuid
7
+ libuuid.dev
8
+ ruby_3_2
9
+ zlib
10
+ zlib.dev
11
+ ];
12
+ }