sup 0.22.1 → 1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/checks.yml +70 -0
- data/.gitignore +1 -3
- data/.rubocop.yml +5 -0
- data/CONTRIBUTORS +14 -5
- data/Gemfile +6 -1
- data/History.txt +76 -0
- data/Manifest.txt +149 -0
- data/README.md +32 -5
- data/Rakefile +40 -1
- data/bin/sup +7 -5
- data/bin/sup-add +16 -20
- data/bin/sup-config +30 -44
- data/bin/sup-dump +2 -2
- data/bin/sup-import-dump +4 -4
- data/bin/sup-sync +3 -3
- data/bin/sup-sync-back-maildir +2 -2
- data/bin/sup-tweak-labels +5 -5
- data/ext/mkrf_conf_xapian.rb +10 -4
- data/lib/sup/colormap.rb +1 -1
- data/lib/sup/crypto.rb +17 -8
- data/lib/sup/hook.rb +9 -9
- data/lib/sup/index.rb +20 -7
- data/lib/sup/keymap.rb +1 -1
- data/lib/sup/logger.rb +1 -1
- data/lib/sup/maildir.rb +4 -4
- data/lib/sup/mbox.rb +4 -4
- data/lib/sup/message.rb +26 -15
- data/lib/sup/message_chunks.rb +29 -20
- data/lib/sup/mode.rb +1 -0
- data/lib/sup/modes/completion_mode.rb +0 -1
- data/lib/sup/modes/contact_list_mode.rb +1 -0
- data/lib/sup/modes/file_browser_mode.rb +2 -2
- data/lib/sup/modes/label_list_mode.rb +1 -1
- data/lib/sup/modes/reply_mode.rb +3 -1
- data/lib/sup/modes/search_list_mode.rb +2 -2
- data/lib/sup/modes/thread_index_mode.rb +1 -1
- data/lib/sup/modes/thread_view_mode.rb +15 -13
- data/lib/sup/rfc2047.rb +21 -6
- data/lib/sup/source.rb +9 -3
- data/lib/sup/textfield.rb +0 -1
- data/lib/sup/thread.rb +0 -1
- data/lib/sup/util/axe.rb +17 -0
- data/lib/sup/util/ncurses.rb +3 -3
- data/lib/sup/util.rb +42 -67
- data/lib/sup/version.rb +10 -1
- data/lib/sup.rb +13 -8
- data/man/sup-add.1 +34 -55
- data/man/sup-config.1 +23 -36
- data/man/sup-dump.1 +25 -35
- data/man/sup-import-dump.1 +33 -54
- data/man/sup-psych-ify-config-files.1 +25 -34
- data/man/sup-recover-sources.1 +34 -49
- data/man/sup-sync-back-maildir.1 +39 -60
- data/man/sup-sync.1 +49 -79
- data/man/sup-tweak-labels.1 +35 -58
- data/man/sup.1 +50 -62
- data/sup.gemspec +12 -9
- data/test/dummy_source.rb +21 -15
- data/test/fixtures/embedded-message.eml +34 -0
- data/test/fixtures/mailing-list-header.eml +80 -0
- data/test/fixtures/non-ascii-header-in-nested-message.eml +36 -0
- data/test/fixtures/non-ascii-header.eml +8 -0
- data/test/fixtures/rfc2047-header-encoding.eml +15 -0
- data/test/fixtures/text-attachments-with-charset.eml +60 -0
- data/test/fixtures/utf8-header.eml +17 -0
- data/test/fixtures/zimbra-quote-with-bottom-post.eml +27 -0
- data/test/gnupg_test_home/gpg.conf +2 -1
- data/test/gnupg_test_home/private-keys-v1.d/306D2EE90FF0014B5B9FD07E265C751791674140.key +0 -0
- data/test/gnupg_test_home/pubring.gpg +0 -0
- data/test/gnupg_test_home/receiver_pubring.gpg +0 -0
- data/test/gnupg_test_home/receiver_secring.gpg +0 -0
- data/test/gnupg_test_home/regen_keys.sh +69 -18
- data/test/gnupg_test_home/secring.gpg +0 -0
- data/test/gnupg_test_home/sup-test-2@foo.bar.asc +20 -22
- data/test/integration/test_mbox.rb +1 -1
- data/test/integration/test_sup-add.rb +83 -0
- data/test/test_crypto.rb +46 -0
- data/test/test_header_parsing.rb +9 -1
- data/test/test_helper.rb +7 -4
- data/test/test_message.rb +188 -22
- data/test/test_messages_dir.rb +13 -15
- data/test/unit/test_horizontal_selector.rb +4 -4
- data/test/unit/test_locale_fiddler.rb +1 -1
- data/test/unit/util/test_query.rb +10 -4
- data/test/unit/util/test_string.rb +9 -3
- data/test/unit/util/test_uri.rb +2 -2
- metadata +93 -51
- data/.travis.yml +0 -13
- data/bin/sup-psych-ify-config-files +0 -21
- data/test/gnupg_test_home/key1.gen +0 -15
- data/test/gnupg_test_home/key2.gen +0 -15
- data/test/gnupg_test_home/key_ecc.gen +0 -13
- data/test/gnupg_test_home/private-keys-v1.d/719C7455A7169C6EE8819C6E91002E4F9DD00A65.key +0 -1
- data/test/gnupg_test_home/private-keys-v1.d/8A130806A754AA29D59487D76BD355040D9F26C0.key +0 -0
- data/test/gnupg_test_home/private-keys-v1.d/B7AA46B22BD8A6AD1B4F266C19A3B124A32DDD71.key +0 -0
- data/test/gnupg_test_home/private-keys-v1.d/FA64ACD7CC871371BDF57285A6CDF0E618827783.key +0 -0
- data/test/integration/test_label_service.rb +0 -18
- data/test/test_yaml_migration.rb +0 -85
data/man/sup-sync.1
CHANGED
@@ -1,106 +1,84 @@
|
|
1
|
-
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
|
+
.\"
|
3
|
+
.TH "SUP-SYNC" "1" "April 9, 2012" "Sup User Manual" ""
|
4
|
+
.hy
|
2
5
|
.SH NAME
|
3
6
|
.PP
|
4
|
-
sup
|
7
|
+
sup-sync - sychronize the Sup index with message sources
|
5
8
|
.SH SYNOPSIS
|
6
9
|
.PP
|
7
|
-
sup
|
10
|
+
sup-sync [\f[I]options\f[R]] source \&...
|
8
11
|
.SH DESCRIPTION
|
9
12
|
.PP
|
10
13
|
Synchronizes the Sup index with one or more message sources by adding
|
11
14
|
messages, deleting messages, or changing message state in the index as
|
12
15
|
appropriate.
|
13
16
|
.PP
|
14
|
-
|
15
|
-
and all user
|
17
|
+
\[lq]Message state\[rq] means read/unread, archived/inbox,
|
18
|
+
starred/unstarred, and all user-defined labels on each message.
|
16
19
|
.PP
|
17
|
-
|
18
|
-
keeps about a message.
|
19
|
-
Sup
|
20
|
+
\[lq]Default source state\[rq] refers to any state that a source itself
|
21
|
+
has keeps about a message.
|
22
|
+
Sup-sync uses this information when adding a new message to the index.
|
20
23
|
The source state is typically limited to read/unread, archived/inbox
|
21
24
|
status and a single label based on the source name.
|
22
|
-
Messages using the default source state are placed in the inbox
|
23
|
-
not archived) and unstarred.
|
25
|
+
Messages using the default source state are placed in the inbox
|
26
|
+
(i.e.\ not archived) and unstarred.
|
24
27
|
.PP
|
25
28
|
If no sources are given, sync from all usual sources.
|
26
|
-
Supported source URI schemes can be seen by running
|
29
|
+
Supported source URI schemes can be seen by running \[lq]sup-add
|
30
|
+
--help\[rq].
|
27
31
|
.SH MESSAGE STATE OPTIONS
|
28
32
|
.TP
|
29
|
-
|
33
|
+
--asis
|
30
34
|
If the message is already in the index, preserve its state.
|
31
35
|
Otherwise, use default source state (default)
|
32
|
-
.RS
|
33
|
-
.RE
|
34
36
|
.TP
|
35
|
-
|
36
|
-
Restore message state from a dump file created with sup
|
37
|
-
If a message is not in this dumpfile, act as
|
38
|
-
.RS
|
39
|
-
.RE
|
37
|
+
--restore dumpfile
|
38
|
+
Restore message state from a dump file created with sup-dump.
|
39
|
+
If a message is not in this dumpfile, act as --asis
|
40
40
|
.TP
|
41
|
-
|
41
|
+
--discard
|
42
42
|
Discard any message state in the index and use the default source state.
|
43
|
-
\f[B]Dangerous!\f[]
|
44
|
-
.RS
|
45
|
-
.RE
|
43
|
+
\f[B]Dangerous!\f[R]
|
46
44
|
.TP
|
47
|
-
|
45
|
+
-x, -
|
48
46
|
When using the default source state, mark messages as archived.
|
49
|
-
.RS
|
50
|
-
.RE
|
51
47
|
.TP
|
52
|
-
|
48
|
+
-r, --read
|
53
49
|
When using the default source state, mark messages as read.
|
54
|
-
.RS
|
55
|
-
.RE
|
56
50
|
.TP
|
57
|
-
|
58
|
-
When using the default source state, also apply these user
|
59
|
-
labels (a comma
|
60
|
-
.RS
|
61
|
-
.RE
|
51
|
+
--extra-labels \f[I]STRING\f[R]
|
52
|
+
When using the default source state, also apply these user-defined
|
53
|
+
labels (a comma-separated list) (default)
|
62
54
|
.SH OTHER OPTIONS
|
63
55
|
.TP
|
64
|
-
|
65
|
-
Print message ids as they\[
|
66
|
-
.RS
|
67
|
-
.RE
|
56
|
+
-v, --verbose
|
57
|
+
Print message ids as they\[cq]re processed.
|
68
58
|
.TP
|
69
|
-
|
59
|
+
-o, --optimize
|
70
60
|
As the final operation, optimize the index.
|
71
|
-
.RS
|
72
|
-
.RE
|
73
61
|
.TP
|
74
|
-
|
62
|
+
--all-sources
|
75
63
|
Scan over all sources.
|
76
|
-
.RS
|
77
|
-
.RE
|
78
64
|
.TP
|
79
|
-
|
80
|
-
Don\[
|
81
|
-
Probably only useful with
|
82
|
-
.RS
|
83
|
-
.RE
|
65
|
+
-n, --dry-run
|
66
|
+
Don\[cq]t actually modify the index.
|
67
|
+
Probably only useful with --verbose.
|
84
68
|
.TP
|
85
|
-
|
69
|
+
--version
|
86
70
|
Show version information
|
87
|
-
.RS
|
88
|
-
.RE
|
89
71
|
.TP
|
90
|
-
|
72
|
+
-h, --help
|
91
73
|
Show help message
|
92
|
-
.RS
|
93
|
-
.RE
|
94
74
|
.SH FILES
|
95
75
|
.TP
|
96
|
-
|
76
|
+
$HOME/.sup/sources.yaml
|
97
77
|
Configuration file for Sup mail sources
|
98
|
-
.RS
|
99
|
-
.RE
|
100
78
|
.SH SEE ALSO
|
101
79
|
.PP
|
102
|
-
sup(1), sup
|
103
|
-
sup
|
80
|
+
sup(1), sup-add(1), sup-config(1), sup-dump(1),
|
81
|
+
sup-sync-back-maildir(1), sup-tweak-labels(1)
|
104
82
|
.SH REPORTING BUGS
|
105
83
|
.PP
|
106
84
|
You are welcome to submit bug reports to the Sup issue tracker, located
|
@@ -109,39 +87,31 @@ at
|
|
109
87
|
<https://github.com/sup-heliotrope/sup/issues>
|
110
88
|
.SH CONTACT INFORMATION
|
111
89
|
.TP
|
112
|
-
|
113
|
-
<
|
114
|
-
.RS
|
115
|
-
.RE
|
90
|
+
The Sup web page:
|
91
|
+
<https://sup-heliotrope.github.io/>
|
116
92
|
.TP
|
117
|
-
|
93
|
+
Code repository:
|
118
94
|
<https://github.com/sup-heliotrope/sup/>
|
119
|
-
.RS
|
120
|
-
.RE
|
121
95
|
.TP
|
122
|
-
|
96
|
+
Sup Wiki:
|
123
97
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
124
|
-
.RS
|
125
|
-
.RE
|
126
98
|
.TP
|
127
|
-
|
128
|
-
#sup
|
129
|
-
.RS
|
130
|
-
.RE
|
99
|
+
Sup IRC channel:
|
100
|
+
#sup \[at] freenode.net
|
131
101
|
.TP
|
132
|
-
|
133
|
-
supmua
|
102
|
+
Mailing list:
|
103
|
+
supmua\[at]googlegroups.com
|
134
104
|
.RS
|
135
105
|
.PP
|
136
|
-
supmua+subscribe
|
106
|
+
supmua+subscribe\[at]googlegroups.com
|
137
107
|
.PP
|
138
108
|
Archives: <https://groups.google.com/d/forum/supmua/>
|
139
109
|
.RE
|
140
110
|
.SH COPYRIGHT
|
141
111
|
.PP
|
142
|
-
Copyright
|
112
|
+
Copyright \[co] 2006-2009 William Morgan <mworgan-sup@masanjin.net>
|
143
113
|
.PP
|
144
|
-
Copyright
|
114
|
+
Copyright \[at] 2013-2014 Sup developers
|
145
115
|
.PP
|
146
116
|
Permission is granted to copy and distribute this manual under the terms
|
147
117
|
of the GNU General Public License; either version 2 or (at your option)
|
data/man/sup-tweak-labels.1
CHANGED
@@ -1,69 +1,54 @@
|
|
1
|
-
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
|
+
.\"
|
3
|
+
.TH "SUP-TWEAK-LABELS" "1" "April 9, 2012" "Sup User Manuel" ""
|
4
|
+
.hy
|
2
5
|
.SH NAME
|
3
6
|
.PP
|
4
|
-
sup
|
5
|
-
index
|
7
|
+
sup-tweak-labels - batch modification of message state already in index
|
6
8
|
.SH SYNOPSIS
|
7
9
|
.PP
|
8
|
-
sup
|
10
|
+
sup-tweak-labels [\f[I]options\f[R]] source \&...
|
9
11
|
.SH DESCRIPTION
|
10
12
|
.PP
|
11
13
|
Batch modification of message state for messages already in the index.
|
12
14
|
.PP
|
13
|
-
Supported source URI schemes can be seen by running
|
15
|
+
Supported source URI schemes can be seen by running \[lq]sup-add
|
16
|
+
--help\[rq].
|
14
17
|
.SH OPTIONS
|
15
18
|
.TP
|
16
|
-
|
17
|
-
One or more labels (comma
|
19
|
+
-a \f[I]STRING\f[R], --add \f[I]STRING\f[R]
|
20
|
+
One or more labels (comma-separated) to add to every message from the
|
18
21
|
specified sources (default: )
|
19
|
-
.RS
|
20
|
-
.RE
|
21
22
|
.TP
|
22
|
-
|
23
|
-
One or more labels (comma
|
23
|
+
-r \f[I]STRING\f[R], --remove \f[I]STRING\f[R]
|
24
|
+
One or more labels (comma-separated) to remove from every message from
|
24
25
|
the specified sources, if those labels are present (default: )
|
25
|
-
.RS
|
26
|
-
.RE
|
27
26
|
.TP
|
28
|
-
|
27
|
+
-q \f[I]QUERY\f[R], --query \f[I]QUERY\f[R]
|
29
28
|
A Sup search query
|
30
|
-
.RS
|
31
|
-
.RE
|
32
29
|
.SH OTHER OPTIONS
|
33
30
|
.TP
|
34
|
-
|
35
|
-
Print message ids as they\[
|
36
|
-
.RS
|
37
|
-
.RE
|
31
|
+
-v, --verbose
|
32
|
+
Print message ids as they\[cq]re processed
|
38
33
|
.TP
|
39
|
-
|
40
|
-
Print message names and subjects as they\[
|
41
|
-
.RS
|
42
|
-
.RE
|
34
|
+
-e, --very-verbose
|
35
|
+
Print message names and subjects as they\[cq]re processed
|
43
36
|
.TP
|
44
|
-
|
37
|
+
--all-sources
|
45
38
|
Scan over all sources
|
46
|
-
.RS
|
47
|
-
.RE
|
48
39
|
.TP
|
49
|
-
|
50
|
-
Don\[
|
51
|
-
Probably only useful with
|
52
|
-
.RS
|
53
|
-
.RE
|
40
|
+
-n, --dry-run
|
41
|
+
Don\[cq]t actually modify the index.
|
42
|
+
Probably only useful with --verbose
|
54
43
|
.TP
|
55
|
-
|
44
|
+
--version
|
56
45
|
Show version information
|
57
|
-
.RS
|
58
|
-
.RE
|
59
46
|
.TP
|
60
|
-
|
47
|
+
-h, --help
|
61
48
|
Show help message
|
62
|
-
.RS
|
63
|
-
.RE
|
64
49
|
.SH SEE ALSO
|
65
50
|
.PP
|
66
|
-
sup(1), sup
|
51
|
+
sup(1), sup-add(1)
|
67
52
|
.SH REPORTING BUGS
|
68
53
|
.PP
|
69
54
|
You are welcome to submit bug reports to the Sup issue tracker, located
|
@@ -72,39 +57,31 @@ at
|
|
72
57
|
<https://github.com/sup-heliotrope/sup/issues>
|
73
58
|
.SH CONTACT INFORMATION
|
74
59
|
.TP
|
75
|
-
|
76
|
-
<
|
77
|
-
.RS
|
78
|
-
.RE
|
60
|
+
The Sup web page:
|
61
|
+
<https://sup-heliotrope.github.io/>
|
79
62
|
.TP
|
80
|
-
|
63
|
+
Code repository:
|
81
64
|
<https://github.com/sup-heliotrope/sup/>
|
82
|
-
.RS
|
83
|
-
.RE
|
84
65
|
.TP
|
85
|
-
|
66
|
+
Sup Wiki:
|
86
67
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
87
|
-
.RS
|
88
|
-
.RE
|
89
68
|
.TP
|
90
|
-
|
91
|
-
#sup
|
92
|
-
.RS
|
93
|
-
.RE
|
69
|
+
Sup IRC channel:
|
70
|
+
#sup \[at] freenode.net
|
94
71
|
.TP
|
95
|
-
|
96
|
-
supmua
|
72
|
+
Mailing list:
|
73
|
+
supmua\[at]googlegroups.com
|
97
74
|
.RS
|
98
75
|
.PP
|
99
|
-
supmua+subscribe
|
76
|
+
supmua+subscribe\[at]googlegroups.com
|
100
77
|
.PP
|
101
78
|
Archives: <https://groups.google.com/d/forum/supmua/>
|
102
79
|
.RE
|
103
80
|
.SH COPYRIGHT
|
104
81
|
.PP
|
105
|
-
Copyright
|
82
|
+
Copyright \[co] 2006-2009 William Morgan <mworgan-sup@masanjin.net>
|
106
83
|
.PP
|
107
|
-
Copyright
|
84
|
+
Copyright \[at] 2013-2014 Sup developers
|
108
85
|
.PP
|
109
86
|
Permission is granted to copy and distribute this manual under the terms
|
110
87
|
of the GNU General Public License; either version 2 or (at your option)
|
data/man/sup.1
CHANGED
@@ -1,85 +1,81 @@
|
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
|
+
.\"
|
1
3
|
.TH "SUP" "1" "April 8, 2014" "Sup User Manual" ""
|
4
|
+
.hy
|
2
5
|
.SH NAME
|
3
6
|
.PP
|
4
|
-
sup
|
7
|
+
sup - a curses-based email client
|
5
8
|
.SH SYNOPSIS
|
6
9
|
.PP
|
7
|
-
sup [\f[I]options\f[]]
|
10
|
+
sup [\f[I]options\f[R]]
|
8
11
|
.SH DESCRIPTION
|
9
12
|
.PP
|
10
|
-
Sup is a console
|
13
|
+
Sup is a console-based email client for people with a lot of email.
|
11
14
|
.PP
|
12
15
|
It presents an interface of a list of threads, which are each
|
13
16
|
hierarchical collections email messages.
|
14
17
|
Threads can have multiple tags applied to them.
|
15
|
-
It supports a very fast full
|
18
|
+
It supports a very fast full-text search, automatic contact-list
|
16
19
|
management, custom code insertion via a Ruby hook system, and more.
|
17
|
-
If you
|
18
|
-
long
|
20
|
+
If you\[cq]re the type of person who treats email as an extension of
|
21
|
+
your long-term memory, Sup is for you.
|
19
22
|
.SH OPTIONS
|
20
23
|
.TP
|
21
|
-
|
24
|
+
-l, --list-hooks
|
22
25
|
List all hooks and descriptions, and quit.
|
23
|
-
|
24
|
-
.
|
26
|
+
Use \[en]hooks-matching to filter
|
27
|
+
.TP
|
28
|
+
-m, --hooks-matching=<s>
|
29
|
+
If given, list all hooks and descriptions matching the given pattern.
|
30
|
+
Needs the \[en]list-hooks option (default: )
|
25
31
|
.TP
|
26
|
-
|
32
|
+
-n, --no-threads
|
27
33
|
Turn off threading.
|
28
34
|
Helps with debugging.
|
29
35
|
(Necessarily disables background polling for new messages.)
|
30
|
-
.RS
|
31
|
-
.RE
|
32
36
|
.TP
|
33
|
-
|
34
|
-
Don\[
|
35
|
-
.RS
|
36
|
-
.RE
|
37
|
+
-o, --no-initial-poll
|
38
|
+
Don\[cq]t poll for new messages when starting.
|
37
39
|
.TP
|
38
|
-
|
40
|
+
-s \f[I]QUERY\f[R], --search \f[I]QUERY\f[R]
|
39
41
|
Search for this query upon startup
|
40
|
-
.RS
|
41
|
-
.RE
|
42
42
|
.TP
|
43
|
-
|
43
|
+
-c \f[I]STRING\f[R], --compose \f[I]STRING\f[R]
|
44
44
|
Compose message to this recipient upon startup
|
45
|
-
.RS
|
46
|
-
.RE
|
47
45
|
.TP
|
48
|
-
|
46
|
+
-j \f[I]STRING\f[R], --subject \f[I]STRING\f[R]
|
49
47
|
When composing, use this subject
|
50
|
-
.RS
|
51
|
-
.RE
|
52
48
|
.TP
|
53
|
-
|
49
|
+
-v, --version
|
54
50
|
Print version and exit
|
55
|
-
.RS
|
56
|
-
.RE
|
57
51
|
.TP
|
58
|
-
|
52
|
+
-h, --help
|
59
53
|
Show brief help message
|
60
|
-
.
|
61
|
-
.
|
54
|
+
.SH ENVIRONMENT
|
55
|
+
.TP
|
56
|
+
SUP_LOG_LEVEL
|
57
|
+
Set log level verbosity.
|
58
|
+
Valid values ordered by decresing verbosity: debug info warn error.
|
59
|
+
Default log level is info.
|
60
|
+
.TP
|
61
|
+
SUP_BASE\[rs]
|
62
|
+
Specify home directory for configuration files and xapian index,
|
63
|
+
defaults to: $HOME/.sup.
|
62
64
|
.SH FILES
|
63
65
|
.TP
|
64
|
-
|
66
|
+
$HOME/.sup/config.yaml
|
65
67
|
Configuration file for Sup
|
66
|
-
.RS
|
67
|
-
.RE
|
68
68
|
.TP
|
69
|
-
|
69
|
+
$HOME/.sup/sources.yaml
|
70
70
|
Configuration file for Sup mail sources
|
71
|
-
.RS
|
72
|
-
.RE
|
73
71
|
.TP
|
74
|
-
|
72
|
+
$HOME/.sup/colors.yaml
|
75
73
|
Color theme for Sup
|
76
|
-
.RS
|
77
|
-
.RE
|
78
74
|
.SH SEE ALSO
|
79
75
|
.PP
|
80
|
-
mail(1), sup
|
81
|
-
sup
|
82
|
-
sup
|
76
|
+
mail(1), sup-add(1), sup-config(1), sup-dump(1), sup-import-dump(1),
|
77
|
+
sup-recover-sources(1), sup-sync(1), sup-sync-back-maildir(1),
|
78
|
+
sup-tweak-labels(1)
|
83
79
|
.SH REPORTING BUGS
|
84
80
|
.PP
|
85
81
|
You are welcome to submit bug reports to the Sup issue tracker, located
|
@@ -88,39 +84,31 @@ at
|
|
88
84
|
<https://github.com/sup-heliotrope/sup/issues>
|
89
85
|
.SH CONTACT INFORMATION
|
90
86
|
.TP
|
91
|
-
|
92
|
-
<
|
93
|
-
.RS
|
94
|
-
.RE
|
87
|
+
The Sup web page:
|
88
|
+
<https://sup-heliotrope.github.io/>
|
95
89
|
.TP
|
96
|
-
|
90
|
+
Code repository:
|
97
91
|
<https://github.com/sup-heliotrope/sup/>
|
98
|
-
.RS
|
99
|
-
.RE
|
100
92
|
.TP
|
101
|
-
|
93
|
+
Sup Wiki:
|
102
94
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
103
|
-
.RS
|
104
|
-
.RE
|
105
95
|
.TP
|
106
|
-
|
107
|
-
#sup
|
108
|
-
.RS
|
109
|
-
.RE
|
96
|
+
Sup IRC channel:
|
97
|
+
#sup \[at] freenode.net
|
110
98
|
.TP
|
111
|
-
|
112
|
-
supmua
|
99
|
+
Mailing list:
|
100
|
+
supmua\[at]googlegroups.com
|
113
101
|
.RS
|
114
102
|
.PP
|
115
|
-
supmua+subscribe
|
103
|
+
supmua+subscribe\[at]googlegroups.com
|
116
104
|
.PP
|
117
105
|
Archives: <https://groups.google.com/d/forum/supmua/>
|
118
106
|
.RE
|
119
107
|
.SH COPYRIGHT
|
120
108
|
.PP
|
121
|
-
Copyright
|
109
|
+
Copyright \[co] 2006-2009 William Morgan <mworgan-sup@masanjin.net>
|
122
110
|
.PP
|
123
|
-
Copyright
|
111
|
+
Copyright \[at] 2013-2014 Sup developers
|
124
112
|
.PP
|
125
113
|
Permission is granted to copy and distribute this manual under the terms
|
126
114
|
of the GNU General Public License; either version 2 or (at your option)
|
data/sup.gemspec
CHANGED
@@ -4,13 +4,13 @@ require 'sup/version'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "sup"
|
7
|
-
s.version = ENV["REL"] || (::Redwood::VERSION
|
7
|
+
s.version = ENV["REL"] || (/-git-/ =~ ::Redwood::VERSION ? "999" : ::Redwood::VERSION)
|
8
8
|
s.date = Time.now.strftime "%Y-%m-%d"
|
9
9
|
s.authors = ["William Morgan", "Gaute Hope", "Hamish Downer", "Matthieu Rakotojaona"]
|
10
10
|
s.email = "supmua@googlegroups.com"
|
11
11
|
s.summary = "A console-based email client with the best features of GMail, mutt and Emacs"
|
12
|
-
s.homepage = "
|
13
|
-
s.license = 'GPL-2'
|
12
|
+
s.homepage = "https://sup-heliotrope.github.io/"
|
13
|
+
s.license = 'GPL-2.0'
|
14
14
|
s.description = <<-DESC
|
15
15
|
Sup is a console-based email client for people with a lot of email.
|
16
16
|
|
@@ -32,7 +32,7 @@ SUP: please note that our old mailing lists have been shut down,
|
|
32
32
|
https://github.com/sup-heliotrope/sup/wiki/Installation%3A-OpenBSD.
|
33
33
|
EOF
|
34
34
|
|
35
|
-
s.files =
|
35
|
+
s.files = File.read("Manifest.txt").split
|
36
36
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
37
37
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
38
38
|
s.require_paths = ["lib"]
|
@@ -51,20 +51,23 @@ SUP: please note that our old mailing lists have been shut down,
|
|
51
51
|
## ext/mkrf_conf_xapian.rb and Gemfile.
|
52
52
|
|
53
53
|
s.add_runtime_dependency "ncursesw", "~> 1.4.0"
|
54
|
-
s.add_runtime_dependency "rmail
|
54
|
+
s.add_runtime_dependency "rmail", ">= 1.1.2", "< 2"
|
55
55
|
s.add_runtime_dependency "highline"
|
56
|
-
s.add_runtime_dependency "
|
56
|
+
s.add_runtime_dependency "optimist"
|
57
57
|
s.add_runtime_dependency "lockfile"
|
58
58
|
s.add_runtime_dependency "mime-types", "> 2.0"
|
59
59
|
s.add_runtime_dependency "locale", "~> 2.0"
|
60
|
-
s.add_runtime_dependency "chronic"
|
60
|
+
s.add_runtime_dependency "chronic"
|
61
61
|
s.add_runtime_dependency "unicode", "~> 0.4.4"
|
62
|
+
s.add_runtime_dependency "unicode-display_width"
|
63
|
+
s.add_runtime_dependency "string-scrub" if /^2\.0\./ =~ RUBY_VERSION
|
62
64
|
|
63
|
-
s.add_development_dependency "bundler", "
|
65
|
+
s.add_development_dependency "bundler", ">= 1.3", "< 3"
|
64
66
|
s.add_development_dependency "rake"
|
65
|
-
s.add_development_dependency 'minitest', '~> 5.5
|
67
|
+
s.add_development_dependency 'minitest', '~> 5.5'
|
66
68
|
s.add_development_dependency "rr", "~> 1.1"
|
67
69
|
s.add_development_dependency "gpgme", ">= 2.0.2"
|
68
70
|
s.add_development_dependency "pry"
|
71
|
+
s.add_development_dependency "rubocop-packaging" unless /^2\.[012]\./ =~ RUBY_VERSION
|
69
72
|
|
70
73
|
end
|
data/test/dummy_source.rb
CHANGED
@@ -25,32 +25,38 @@ class DummySource < Source
|
|
25
25
|
return @messages ? @messages.length - 1 : 0
|
26
26
|
end
|
27
27
|
|
28
|
-
def
|
29
|
-
|
28
|
+
def with_file_for id
|
29
|
+
fn = @messages[id]
|
30
|
+
File.open(fn, 'rb') { |f| yield f }
|
30
31
|
end
|
31
32
|
|
32
|
-
def
|
33
|
-
|
33
|
+
def load_header id
|
34
|
+
with_file_for(id) { |f| parse_raw_email_header f }
|
34
35
|
end
|
35
36
|
|
36
|
-
def
|
37
|
+
def load_message id
|
38
|
+
with_file_for(id) { |f| RMail::Parser.read f }
|
39
|
+
end
|
40
|
+
|
41
|
+
def raw_header id
|
37
42
|
ret = ""
|
38
|
-
|
39
|
-
|
40
|
-
|
43
|
+
with_file_for(id) do |f|
|
44
|
+
until f.eof? || (l = f.gets) =~ /^$/
|
45
|
+
ret += l
|
46
|
+
end
|
41
47
|
end
|
42
48
|
ret
|
43
49
|
end
|
44
50
|
|
45
|
-
def raw_message
|
46
|
-
|
51
|
+
def raw_message id
|
52
|
+
with_file_for(id) { |f| f.read }
|
47
53
|
end
|
48
54
|
|
49
|
-
def each_raw_message_line
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
55
|
+
def each_raw_message_line id
|
56
|
+
with_file_for(id) do |f|
|
57
|
+
until f.eof?
|
58
|
+
yield f.gets
|
59
|
+
end
|
54
60
|
end
|
55
61
|
end
|
56
62
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Return-Path: <return@example.com>
|
2
|
+
From: Sender <sender@example.com>
|
3
|
+
To: <recipient@example.invalid>
|
4
|
+
Subject: Email with embedded message
|
5
|
+
MIME-Version: 1.0
|
6
|
+
Content-Type: multipart/mixed; boundary="----------=_4F506AC2.EE281DC4"
|
7
|
+
Message-Id: <9181f493-df49-4af5-8ad2-e1a8eb692a98>
|
8
|
+
Date: Wed, 15 Jul 2020 19:48:41 +0100
|
9
|
+
|
10
|
+
This is a multi-part message in MIME format.
|
11
|
+
|
12
|
+
------------=_4F506AC2.EE281DC4
|
13
|
+
Content-Type: text/plain; charset=iso-8859-1
|
14
|
+
Content-Disposition: inline
|
15
|
+
Content-Transfer-Encoding: 8bit
|
16
|
+
|
17
|
+
Example outer message.
|
18
|
+
Example second line.
|
19
|
+
|
20
|
+
|
21
|
+
------------=_4F506AC2.EE281DC4
|
22
|
+
Content-Type: message/rfc822; x-spam-type=original
|
23
|
+
Content-Transfer-Encoding: 8bit
|
24
|
+
|
25
|
+
From: "Embed sender" <embed@example.com>
|
26
|
+
To: <rcpt2@example.invalid>
|
27
|
+
Subject: Embedded subject line
|
28
|
+
Date: Wed, 15 Jul 2020 12:34:56 +0000
|
29
|
+
|
30
|
+
Example embedded message.
|
31
|
+
Second line.
|
32
|
+
|
33
|
+
------------=_4F506AC2.EE281DC4--
|
34
|
+
|