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/lib/sup/util.rb
CHANGED
@@ -4,13 +4,15 @@ require 'thread'
|
|
4
4
|
require 'lockfile'
|
5
5
|
require 'mime/types'
|
6
6
|
require 'pathname'
|
7
|
+
require 'rmail'
|
7
8
|
require 'set'
|
8
9
|
require 'enumerator'
|
9
10
|
require 'benchmark'
|
10
11
|
require 'unicode'
|
12
|
+
require 'unicode/display_width'
|
11
13
|
require 'fileutils'
|
12
14
|
|
13
|
-
|
15
|
+
module ExtendedLockfile
|
14
16
|
def gen_lock_id
|
15
17
|
Hash[
|
16
18
|
'host' => "#{ Socket.gethostname }",
|
@@ -36,6 +38,7 @@ class Lockfile
|
|
36
38
|
|
37
39
|
def touch_yourself; touch path end
|
38
40
|
end
|
41
|
+
Lockfile.send :prepend, ExtendedLockfile
|
39
42
|
|
40
43
|
class File
|
41
44
|
# platform safe file.link which attempts a copy if hard-linking fails
|
@@ -105,7 +108,7 @@ module RMail
|
|
105
108
|
end
|
106
109
|
end
|
107
110
|
|
108
|
-
|
111
|
+
module CustomizedSerialize
|
109
112
|
## Don't add MIME-Version headers on serialization. Sup sometimes want's to serialize
|
110
113
|
## message parts where these headers are not needed and messing with the message on
|
111
114
|
## serialization breaks gpg signatures. The commented section shows the original RMail
|
@@ -117,48 +120,7 @@ module RMail
|
|
117
120
|
# end
|
118
121
|
end
|
119
122
|
end
|
120
|
-
|
121
|
-
class Header
|
122
|
-
|
123
|
-
# Convert to ASCII before trying to match with regexp
|
124
|
-
class Field
|
125
|
-
|
126
|
-
class << self
|
127
|
-
def parse(field)
|
128
|
-
field = field.dup.to_s
|
129
|
-
field = field.fix_encoding!.ascii
|
130
|
-
if field =~ EXTRACT_FIELD_NAME_RE
|
131
|
-
[ $1, $'.chomp ]
|
132
|
-
else
|
133
|
-
[ "", Field.value_strip(field) ]
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
## Be more cautious about invalid content-type headers
|
140
|
-
## the original RMail code calls
|
141
|
-
## value.strip.split(/\s*;\s*/)[0].downcase
|
142
|
-
## without checking if split returned an element
|
143
|
-
|
144
|
-
# This returns the full content type of this message converted to
|
145
|
-
# lower case.
|
146
|
-
#
|
147
|
-
# If there is no content type header, returns the passed block is
|
148
|
-
# executed and its return value is returned. If no block is passed,
|
149
|
-
# the value of the +default+ argument is returned.
|
150
|
-
def content_type(default = nil)
|
151
|
-
if value = self['content-type'] and ct = value.strip.split(/\s*;\s*/)[0]
|
152
|
-
return ct.downcase
|
153
|
-
else
|
154
|
-
if block_given?
|
155
|
-
yield
|
156
|
-
else
|
157
|
-
default
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
123
|
+
Serialize.send :prepend, CustomizedSerialize
|
162
124
|
end
|
163
125
|
|
164
126
|
class Module
|
@@ -239,21 +201,14 @@ end
|
|
239
201
|
|
240
202
|
class String
|
241
203
|
def display_length
|
242
|
-
@display_length ||= Unicode.
|
243
|
-
|
244
|
-
# if Unicode.width fails and returns -1, fall back to
|
245
|
-
# regular String#length, see pull-request: #256.
|
246
|
-
if @display_length < 0
|
247
|
-
@display_length = self.length
|
248
|
-
end
|
249
|
-
|
250
|
-
@display_length
|
204
|
+
@display_length ||= Unicode::DisplayWidth.of(self)
|
251
205
|
end
|
252
206
|
|
253
207
|
def slice_by_display_length len
|
254
208
|
each_char.each_with_object "" do |c, buffer|
|
255
|
-
len -= c
|
256
|
-
buffer
|
209
|
+
len -= Unicode::DisplayWidth.of(c)
|
210
|
+
return buffer if len < 0
|
211
|
+
buffer << c
|
257
212
|
end
|
258
213
|
end
|
259
214
|
|
@@ -341,13 +296,14 @@ class String
|
|
341
296
|
ret = []
|
342
297
|
s = self
|
343
298
|
while s.display_length > len
|
344
|
-
|
299
|
+
slice = s.slice_by_display_length(len)
|
300
|
+
cut = slice.rindex(/\s/)
|
345
301
|
if cut
|
346
302
|
ret << s[0 ... cut]
|
347
303
|
s = s[(cut + 1) .. -1]
|
348
304
|
else
|
349
|
-
ret <<
|
350
|
-
s = s[
|
305
|
+
ret << slice
|
306
|
+
s = s[slice.length .. -1]
|
351
307
|
end
|
352
308
|
end
|
353
309
|
ret << s
|
@@ -397,8 +353,23 @@ class String
|
|
397
353
|
self
|
398
354
|
end
|
399
355
|
|
356
|
+
## Decodes UTF-7 and returns the resulting decoded string as UTF-8.
|
357
|
+
##
|
358
|
+
## Ruby doesn't supply a UTF-7 encoding natively. There is
|
359
|
+
## Net::IMAP::decode_utf7 which only handles the IMAP "modified UTF-7"
|
360
|
+
## encoding. This implementation is inspired by that one but handles
|
361
|
+
## standard UTF-7 shift characters and not the IMAP-specific variation.
|
362
|
+
def decode_utf7
|
363
|
+
gsub(/\+([^-]+)?-/) {
|
364
|
+
if $1
|
365
|
+
($1 + "===").unpack("m")[0].encode(Encoding::UTF_8, Encoding::UTF_16BE)
|
366
|
+
else
|
367
|
+
"+"
|
368
|
+
end
|
369
|
+
}
|
370
|
+
end
|
371
|
+
|
400
372
|
def normalize_whitespace
|
401
|
-
fix_encoding!
|
402
373
|
gsub(/\t/, " ").gsub(/\r/, "")
|
403
374
|
end
|
404
375
|
|
@@ -410,7 +381,7 @@ class String
|
|
410
381
|
|
411
382
|
unless method_defined? :each
|
412
383
|
def each &b
|
413
|
-
each_line
|
384
|
+
each_line(&b)
|
414
385
|
end
|
415
386
|
end
|
416
387
|
|
@@ -460,18 +431,18 @@ class Numeric
|
|
460
431
|
|
461
432
|
def to_human_size
|
462
433
|
if self < 1024
|
463
|
-
to_s + "
|
434
|
+
to_s + "B"
|
464
435
|
elsif self < (1024 * 1024)
|
465
|
-
(self / 1024).to_s + "
|
436
|
+
(self / 1024).to_s + "KiB"
|
466
437
|
elsif self < (1024 * 1024 * 1024)
|
467
|
-
(self / 1024 / 1024).to_s + "
|
438
|
+
(self / 1024 / 1024).to_s + "MiB"
|
468
439
|
else
|
469
|
-
(self / 1024 / 1024 / 1024).to_s + "
|
440
|
+
(self / 1024 / 1024 / 1024).to_s + "GiB"
|
470
441
|
end
|
471
442
|
end
|
472
443
|
end
|
473
444
|
|
474
|
-
class
|
445
|
+
class Integer
|
475
446
|
def to_character
|
476
447
|
if self < 128 && self >= 0
|
477
448
|
chr
|
@@ -512,7 +483,9 @@ module Enumerable
|
|
512
483
|
ret
|
513
484
|
end
|
514
485
|
|
515
|
-
|
486
|
+
if not method_defined? :sum
|
487
|
+
def sum; inject(0) { |x, y| x + y }; end
|
488
|
+
end
|
516
489
|
|
517
490
|
def map_to_hash
|
518
491
|
ret = {}
|
@@ -568,7 +541,9 @@ class Array
|
|
568
541
|
inject([]) { |a, e| a + e }
|
569
542
|
end
|
570
543
|
|
571
|
-
|
544
|
+
if not method_defined? :to_h
|
545
|
+
def to_h; Hash[*flatten_one_level]; end
|
546
|
+
end
|
572
547
|
def rest; self[1..-1]; end
|
573
548
|
|
574
549
|
def to_boolean_h; Hash[*map { |x| [x, true] }.flatten]; end
|
data/lib/sup/version.rb
CHANGED
data/lib/sup.rb
CHANGED
@@ -26,7 +26,7 @@ class Module
|
|
26
26
|
props = props.map { |p| p.to_s }
|
27
27
|
|
28
28
|
path = name.gsub(/::/, "/")
|
29
|
-
yaml_tag "
|
29
|
+
yaml_tag "tag:#{Redwood::YAML_DOMAIN},#{Redwood::YAML_DATE}/#{path}"
|
30
30
|
|
31
31
|
define_method :init_with do |coder|
|
32
32
|
initialize(*coder.map.values_at(*props))
|
@@ -38,9 +38,6 @@ class Module
|
|
38
38
|
hash
|
39
39
|
end
|
40
40
|
end
|
41
|
-
|
42
|
-
# Legacy
|
43
|
-
Psych.load_tags["!#{Redwood::LEGACY_YAML_DOMAIN},#{Redwood::YAML_DATE}/#{path}"] = self
|
44
41
|
end
|
45
42
|
end
|
46
43
|
|
@@ -139,10 +136,17 @@ module Redwood
|
|
139
136
|
|
140
137
|
def load_yaml_obj fn, compress=false
|
141
138
|
o = if File.exist? fn
|
142
|
-
if compress
|
143
|
-
Zlib::GzipReader.open(fn) { |f|
|
139
|
+
raw_contents = if compress
|
140
|
+
Zlib::GzipReader.open(fn) { |f| f.read }
|
141
|
+
else
|
142
|
+
File::open(fn) { |f| f.read }
|
143
|
+
end
|
144
|
+
## fix up malformed tag URIs created by earlier versions of sup
|
145
|
+
raw_contents.gsub!(/!supmua.org,2006-10-01\/(\S*)$/) { |m| "!<tag:supmua.org,2006-10-01/#{$1}>" }
|
146
|
+
if YAML.respond_to?(:unsafe_load) # Ruby 3.1+
|
147
|
+
YAML::unsafe_load raw_contents
|
144
148
|
else
|
145
|
-
YAML::
|
149
|
+
YAML::load raw_contents
|
146
150
|
end
|
147
151
|
end
|
148
152
|
if o.is_a?(Array)
|
@@ -331,6 +335,7 @@ EOM
|
|
331
335
|
:poll_interval => 300,
|
332
336
|
:wrap_width => 0,
|
333
337
|
:slip_rows => 0,
|
338
|
+
:indent_spaces => 2,
|
334
339
|
:col_jump => 2,
|
335
340
|
:stem_language => "english",
|
336
341
|
:sync_back_to_maildir => false,
|
@@ -348,7 +353,7 @@ EOM
|
|
348
353
|
name ||= ENV["USER"]
|
349
354
|
email = ENV["USER"] + "@" +
|
350
355
|
begin
|
351
|
-
|
356
|
+
Addrinfo.getaddrinfo(Socket.gethostname, 'smtp').first.getnameinfo.first
|
352
357
|
rescue SocketError
|
353
358
|
Socket.gethostname
|
354
359
|
end
|
data/man/sup-add.1
CHANGED
@@ -1,10 +1,13 @@
|
|
1
|
-
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
|
+
.\"
|
3
|
+
.TH "SUP-ADD" "1" "April 9, 2012" "Sup User Manual" ""
|
4
|
+
.hy
|
2
5
|
.SH NAME
|
3
6
|
.PP
|
4
|
-
sup
|
7
|
+
sup-add - add a source to the Sup source list
|
5
8
|
.SH SYNOPSIS
|
6
9
|
.PP
|
7
|
-
sup
|
10
|
+
sup-add [\f[I]options\f[R]] [\f[I]source uri\&...\f[R]]
|
8
11
|
.SH DESCRIPTION
|
9
12
|
.PP
|
10
13
|
Add one ore more sources to the Sup source list
|
@@ -13,67 +16,51 @@ For mbox files on local disk, use the form:
|
|
13
16
|
.IP
|
14
17
|
.nf
|
15
18
|
\f[C]
|
16
|
-
mbox:<path
|
19
|
+
mbox:<path to mbox file>, or
|
17
20
|
|
18
|
-
mbox://<path
|
19
|
-
\f[]
|
21
|
+
mbox://<path to mbox file>
|
22
|
+
\f[R]
|
20
23
|
.fi
|
21
24
|
.PP
|
22
25
|
For Maildir folders, use the form:
|
23
26
|
.IP
|
24
27
|
.nf
|
25
28
|
\f[C]
|
26
|
-
maildir:<path
|
29
|
+
maildir:<path to Maildir directory>; or
|
27
30
|
|
28
|
-
maildir://<path
|
29
|
-
\f[]
|
31
|
+
maildir://<path to Maildir directory>
|
32
|
+
\f[R]
|
30
33
|
.fi
|
31
34
|
.SH OPTIONS
|
32
35
|
.TP
|
33
|
-
|
36
|
+
-a, --archive
|
34
37
|
Automatically archive all new messages from thesesources.
|
35
|
-
.RS
|
36
|
-
.RE
|
37
38
|
.TP
|
38
|
-
|
39
|
+
-u, --unusual
|
39
40
|
Do not automatically poll these sources for new messages.
|
40
|
-
.RS
|
41
|
-
.RE
|
42
41
|
.TP
|
43
|
-
|
44
|
-
A comma
|
42
|
+
-l \f[I]STRING\f[R], --labels \f[I]STRING\f[R]
|
43
|
+
A comma-separated set of labels to apply to all messages from this
|
45
44
|
source
|
46
|
-
.RS
|
47
|
-
.RE
|
48
45
|
.TP
|
49
|
-
|
46
|
+
-f, --force-new
|
50
47
|
Create a new account for this source, even if one already exists
|
51
|
-
.RS
|
52
|
-
.RE
|
53
48
|
.TP
|
54
|
-
|
55
|
-
Reuse previously defined account user
|
56
|
-
.RS
|
57
|
-
.RE
|
49
|
+
-o \f[I]STRING\f[R], --force-account \f[I]STRING\f[R]
|
50
|
+
Reuse previously defined account user\[at]hostname
|
58
51
|
.TP
|
59
|
-
|
52
|
+
-v, --version
|
60
53
|
Print version and exit
|
61
|
-
.RS
|
62
|
-
.RE
|
63
54
|
.TP
|
64
|
-
|
55
|
+
-h, --help
|
65
56
|
Show help message
|
66
|
-
.RS
|
67
|
-
.RE
|
68
57
|
.SH FILES
|
69
58
|
.TP
|
70
|
-
|
59
|
+
$HOME/.sup/sources.yaml
|
71
60
|
Configuration file for Sup mail sources
|
72
|
-
.RS
|
73
|
-
.RE
|
74
61
|
.SH SEE ALSO
|
75
62
|
.PP
|
76
|
-
sup(1), sup
|
63
|
+
sup(1), sup-config(1)
|
77
64
|
.SH REPORTING BUGS
|
78
65
|
.PP
|
79
66
|
You are welcome to submit bug reports to the Sup issue tracker, located
|
@@ -82,39 +69,31 @@ at
|
|
82
69
|
<https://github.com/sup-heliotrope/sup/issues>
|
83
70
|
.SH CONTACT INFORMATION
|
84
71
|
.TP
|
85
|
-
|
86
|
-
<
|
87
|
-
.RS
|
88
|
-
.RE
|
72
|
+
The Sup web page:
|
73
|
+
<https://sup-heliotrope.github.io/>
|
89
74
|
.TP
|
90
|
-
|
75
|
+
Code repository:
|
91
76
|
<https://github.com/sup-heliotrope/sup/>
|
92
|
-
.RS
|
93
|
-
.RE
|
94
77
|
.TP
|
95
|
-
|
78
|
+
Sup Wiki:
|
96
79
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
97
|
-
.RS
|
98
|
-
.RE
|
99
80
|
.TP
|
100
|
-
|
101
|
-
#sup
|
102
|
-
.RS
|
103
|
-
.RE
|
81
|
+
Sup IRC channel:
|
82
|
+
#sup \[at] freenode.net
|
104
83
|
.TP
|
105
|
-
|
106
|
-
supmua
|
84
|
+
Mailing list:
|
85
|
+
supmua\[at]googlegroups.com
|
107
86
|
.RS
|
108
87
|
.PP
|
109
|
-
supmua+subscribe
|
88
|
+
supmua+subscribe\[at]googlegroups.com
|
110
89
|
.PP
|
111
90
|
Archives: <https://groups.google.com/d/forum/supmua/>
|
112
91
|
.RE
|
113
92
|
.SH COPYRIGHT
|
114
93
|
.PP
|
115
|
-
Copyright
|
94
|
+
Copyright \[co] 2006-2009 William Morgan <mworgan-sup@masanjin.net>
|
116
95
|
.PP
|
117
|
-
Copyright
|
96
|
+
Copyright \[at] 2013-2014 Sup developers
|
118
97
|
.PP
|
119
98
|
Permission is granted to copy and distribute this manual under the terms
|
120
99
|
of the GNU General Public License; either version 2 or (at your option)
|
data/man/sup-config.1
CHANGED
@@ -1,39 +1,34 @@
|
|
1
|
-
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
|
+
.\"
|
3
|
+
.TH "SUP-CONFIG" "1" "April 9, 2012" "Sup User Manual" ""
|
4
|
+
.hy
|
2
5
|
.SH NAME
|
3
6
|
.PP
|
4
|
-
sup
|
7
|
+
sup-config - interactive configuration tool for Sup
|
5
8
|
.SH SYNOPSIS
|
6
9
|
.PP
|
7
|
-
sup
|
10
|
+
sup-config [\f[I]options\f[R]]
|
8
11
|
.SH DESCRIPTION
|
9
12
|
.PP
|
10
13
|
Interactive configuration tool for Sup.
|
11
|
-
Won\[
|
14
|
+
Won\[cq]t destroy existing configuration.
|
12
15
|
.SH OPTIONS
|
13
16
|
.TP
|
14
|
-
|
17
|
+
-v, --version
|
15
18
|
Print versian and exit
|
16
|
-
.RS
|
17
|
-
.RE
|
18
19
|
.TP
|
19
|
-
|
20
|
+
-h, --help
|
20
21
|
Show help message
|
21
|
-
.RS
|
22
|
-
.RE
|
23
22
|
.SH FILES
|
24
23
|
.TP
|
25
|
-
|
24
|
+
$HOME/.sup/config.yaml
|
26
25
|
Configuration file for Sup
|
27
|
-
.RS
|
28
|
-
.RE
|
29
26
|
.TP
|
30
|
-
|
27
|
+
$HOME/.sup/sources.yaml
|
31
28
|
Configuration file for Sup mail sources
|
32
|
-
.RS
|
33
|
-
.RE
|
34
29
|
.SH SEE ALSO
|
35
30
|
.PP
|
36
|
-
sup(1), sup
|
31
|
+
sup(1), sup-add(1)
|
37
32
|
.SH REPORTING BUGS
|
38
33
|
.PP
|
39
34
|
You are welcome to submit bug reports to the Sup issue tracker, located
|
@@ -42,39 +37,31 @@ at
|
|
42
37
|
<https://github.com/sup-heliotrope/sup/issues>
|
43
38
|
.SH CONTACT INFORMATION
|
44
39
|
.TP
|
45
|
-
|
46
|
-
<
|
47
|
-
.RS
|
48
|
-
.RE
|
40
|
+
The Sup web page:
|
41
|
+
<https://sup-heliotrope.github.io/>
|
49
42
|
.TP
|
50
|
-
|
43
|
+
Code repository:
|
51
44
|
<https://github.com/sup-heliotrope/sup/>
|
52
|
-
.RS
|
53
|
-
.RE
|
54
45
|
.TP
|
55
|
-
|
46
|
+
Sup Wiki:
|
56
47
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
57
|
-
.RS
|
58
|
-
.RE
|
59
48
|
.TP
|
60
|
-
|
61
|
-
#sup
|
62
|
-
.RS
|
63
|
-
.RE
|
49
|
+
Sup IRC channel:
|
50
|
+
#sup \[at] freenode.net
|
64
51
|
.TP
|
65
|
-
|
66
|
-
supmua
|
52
|
+
Mailing list:
|
53
|
+
supmua\[at]googlegroups.com
|
67
54
|
.RS
|
68
55
|
.PP
|
69
|
-
supmua+subscribe
|
56
|
+
supmua+subscribe\[at]googlegroups.com
|
70
57
|
.PP
|
71
58
|
Archives: <https://groups.google.com/d/forum/supmua/>
|
72
59
|
.RE
|
73
60
|
.SH COPYRIGHT
|
74
61
|
.PP
|
75
|
-
Copyright
|
62
|
+
Copyright \[co] 2006-2009 William Morgan <mworgan-sup@masanjin.net>
|
76
63
|
.PP
|
77
|
-
Copyright
|
64
|
+
Copyright \[at] 2013-2014 Sup developers
|
78
65
|
.PP
|
79
66
|
Permission is granted to copy and distribute this manual under the terms
|
80
67
|
of the GNU General Public License; either version 2 or (at your option)
|
data/man/sup-dump.1
CHANGED
@@ -1,49 +1,47 @@
|
|
1
|
-
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
|
+
.\"
|
3
|
+
.TH "SUP-DUMP" "1" "April 9, 2012" "Sup User Manual" ""
|
4
|
+
.hy
|
2
5
|
.SH NAME
|
3
6
|
.PP
|
4
|
-
sup
|
7
|
+
sup-dump - dumps message state from Sup index
|
5
8
|
.SH SYNOPSIS
|
6
9
|
.PP
|
7
|
-
sup
|
10
|
+
sup-dump [\f[I]options\f[R]]
|
8
11
|
.SH DESCRIPTION
|
9
12
|
.PP
|
10
13
|
Dumps all message state from the Sup index to standard out.
|
11
|
-
You can later use sup
|
12
|
-
index.
|
14
|
+
You can later use sup-sync --restored --restore to recover the index.
|
13
15
|
.PP
|
14
16
|
This tool is primarily useful in the event that a Sup upgrade breaks
|
15
17
|
index format compatibility.
|
16
18
|
.SH OPTIONS
|
17
19
|
.TP
|
18
|
-
|
20
|
+
-v, --version
|
19
21
|
Print version and exit
|
20
|
-
.RS
|
21
|
-
.RE
|
22
22
|
.TP
|
23
|
-
|
23
|
+
-h, --help
|
24
24
|
Show help message
|
25
|
-
.RS
|
26
|
-
.RE
|
27
25
|
.SH EXAMPLES
|
28
26
|
.PP
|
29
27
|
Dump message state and store in file
|
30
28
|
.IP
|
31
29
|
.nf
|
32
30
|
\f[C]
|
33
|
-
sup
|
34
|
-
\f[]
|
31
|
+
sup-dump > filename
|
32
|
+
\f[R]
|
35
33
|
.fi
|
36
34
|
.PP
|
37
35
|
Dump message state and compress output to store in file
|
38
36
|
.IP
|
39
37
|
.nf
|
40
38
|
\f[C]
|
41
|
-
sup
|
42
|
-
\f[]
|
39
|
+
sup-dump | bzip2 > filename.bz2
|
40
|
+
\f[R]
|
43
41
|
.fi
|
44
42
|
.SH SEE ALSO
|
45
43
|
.PP
|
46
|
-
sup(1), sup
|
44
|
+
sup(1), sup-sync(1), sup-import-dump(1)
|
47
45
|
.SH REPORTING BUGS
|
48
46
|
.PP
|
49
47
|
You are welcome to submit bug reports to the Sup issue tracker, located
|
@@ -52,39 +50,31 @@ at
|
|
52
50
|
<https://github.com/sup-heliotrope/sup/issues>
|
53
51
|
.SH CONTACT INFORMATION
|
54
52
|
.TP
|
55
|
-
|
56
|
-
<
|
57
|
-
.RS
|
58
|
-
.RE
|
53
|
+
The Sup web page:
|
54
|
+
<https://sup-heliotrope.github.io/>
|
59
55
|
.TP
|
60
|
-
|
56
|
+
Code repository:
|
61
57
|
<https://github.com/sup-heliotrope/sup/>
|
62
|
-
.RS
|
63
|
-
.RE
|
64
58
|
.TP
|
65
|
-
|
59
|
+
Sup Wiki:
|
66
60
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
67
|
-
.RS
|
68
|
-
.RE
|
69
61
|
.TP
|
70
|
-
|
71
|
-
#sup
|
72
|
-
.RS
|
73
|
-
.RE
|
62
|
+
Sup IRC channel:
|
63
|
+
#sup \[at] freenode.net
|
74
64
|
.TP
|
75
|
-
|
76
|
-
supmua
|
65
|
+
Mailing list:
|
66
|
+
supmua\[at]googlegroups.com
|
77
67
|
.RS
|
78
68
|
.PP
|
79
|
-
supmua+subscribe
|
69
|
+
supmua+subscribe\[at]googlegroups.com
|
80
70
|
.PP
|
81
71
|
Archives: <https://groups.google.com/d/forum/supmua/>
|
82
72
|
.RE
|
83
73
|
.SH COPYRIGHT
|
84
74
|
.PP
|
85
|
-
Copyright
|
75
|
+
Copyright \[co] 2006-2009 William Morgan <mworgan-sup@masanjin.net>
|
86
76
|
.PP
|
87
|
-
Copyright
|
77
|
+
Copyright \[at] 2013-2014 Sup developers
|
88
78
|
.PP
|
89
79
|
Permission is granted to copy and distribute this manual under the terms
|
90
80
|
of the GNU General Public License; either version 2 or (at your option)
|