sup 1.0 → 1.2

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 (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
+ }