sup 1.0 → 1.1
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.
- checksums.yaml +4 -4
- data/.github/workflows/checks.yml +70 -0
- data/.rubocop.yml +5 -0
- data/CONTRIBUTORS +3 -2
- data/Gemfile +5 -1
- data/History.txt +20 -0
- data/Manifest.txt +149 -0
- data/README.md +9 -3
- data/Rakefile +40 -1
- data/bin/sup-add +4 -8
- data/ext/mkrf_conf_xapian.rb +10 -4
- data/lib/sup/colormap.rb +1 -1
- data/lib/sup/hook.rb +1 -1
- data/lib/sup/index.rb +2 -2
- data/lib/sup/keymap.rb +1 -1
- data/lib/sup/maildir.rb +4 -4
- data/lib/sup/mbox.rb +4 -4
- data/lib/sup/message.rb +6 -5
- data/lib/sup/message_chunks.rb +27 -19
- data/lib/sup/modes/completion_mode.rb +0 -1
- data/lib/sup/modes/file_browser_mode.rb +2 -2
- data/lib/sup/modes/label_list_mode.rb +1 -1
- data/lib/sup/modes/search_list_mode.rb +2 -2
- data/lib/sup/modes/thread_view_mode.rb +1 -2
- data/lib/sup/rfc2047.rb +21 -6
- data/lib/sup/source.rb +8 -2
- data/lib/sup/textfield.rb +0 -1
- data/lib/sup/thread.rb +0 -1
- data/lib/sup/util.rb +28 -48
- data/lib/sup/version.rb +1 -1
- data/lib/sup.rb +12 -8
- data/man/sup-add.1 +15 -15
- data/man/sup-config.1 +11 -11
- data/man/sup-dump.1 +9 -9
- data/man/sup-import-dump.1 +15 -15
- data/man/sup-psych-ify-config-files.1 +9 -9
- data/man/sup-recover-sources.1 +12 -12
- data/man/sup-sync-back-maildir.1 +14 -14
- data/man/sup-sync.1 +20 -20
- data/man/sup-tweak-labels.1 +16 -16
- data/man/sup.1 +21 -21
- data/sup.gemspec +6 -4
- data/test/dummy_source.rb +21 -15
- data/test/fixtures/embedded-message.eml +34 -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 +15 -1
- data/test/fixtures/utf8-header.eml +17 -0
- data/test/integration/test_mbox.rb +1 -1
- data/test/integration/test_sup-add.rb +83 -0
- data/test/test_crypto.rb +44 -0
- data/test/test_header_parsing.rb +9 -1
- data/test/test_helper.rb +7 -4
- data/test/test_message.rb +124 -32
- 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 +1 -1
- data/test/unit/util/test_string.rb +3 -3
- data/test/unit/util/test_uri.rb +2 -2
- metadata +46 -18
- data/.travis.yml +0 -18
- data/bin/sup-psych-ify-config-files +0 -21
- data/test/integration/test_label_service.rb +0 -18
- data/test/test_yaml_migration.rb +0 -85
@@ -43,7 +43,7 @@ protected
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def view
|
46
|
-
|
46
|
+
_name, f = @files[curpos - RESERVED_ROWS]
|
47
47
|
return unless f && f.file?
|
48
48
|
|
49
49
|
begin
|
@@ -54,7 +54,7 @@ protected
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def select_file_or_follow_directory
|
57
|
-
|
57
|
+
_name, f = @files[curpos - RESERVED_ROWS]
|
58
58
|
return unless f
|
59
59
|
|
60
60
|
if f.directory? && f.to_s != "."
|
@@ -131,13 +131,13 @@ protected
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def select_search
|
134
|
-
name,
|
134
|
+
name, _num_unread = @searches[curpos]
|
135
135
|
return unless name
|
136
136
|
SearchResultsMode.spawn_from_query SearchManager.search_string_for(name)
|
137
137
|
end
|
138
138
|
|
139
139
|
def delete_selected_search
|
140
|
-
name,
|
140
|
+
name, _num_unread = @searches[curpos]
|
141
141
|
return unless name
|
142
142
|
reload if SearchManager.delete name
|
143
143
|
end
|
@@ -241,7 +241,7 @@ EOS
|
|
241
241
|
|
242
242
|
begin
|
243
243
|
u = URI.parse($1)
|
244
|
-
rescue URI::InvalidURIError
|
244
|
+
rescue URI::InvalidURIError
|
245
245
|
BufferManager.flash("Invalid unsubscribe link")
|
246
246
|
return
|
247
247
|
end
|
@@ -868,7 +868,6 @@ private
|
|
868
868
|
(0 ... text.length).each do |i|
|
869
869
|
@chunk_lines[@text.length + i] = m
|
870
870
|
@message_lines[@text.length + i] = m
|
871
|
-
lw = text[i].flatten.select { |x| x.is_a? String }.map { |x| x.display_length }.sum
|
872
871
|
end
|
873
872
|
|
874
873
|
@text += text
|
data/lib/sup/rfc2047.rb
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
# This file is distributed under the same terms as Ruby.
|
18
18
|
|
19
19
|
module Rfc2047
|
20
|
-
WORD = %r{=\?([!\#$%&'*+-/0-9A-Z\\^\`a-z{|}~]+)\?([BbQq])\?([!->@-~]+)\?=} # :nodoc: 'stupid ruby-mode
|
20
|
+
WORD = %r{=\?([!\#$%&'*+-/0-9A-Z\\^\`a-z{|}~]+)\?([BbQq])\?([!->@-~ ]+)\?=} # :nodoc: 'stupid ruby-mode
|
21
21
|
WORDSEQ = %r{(#{WORD.source})\s+(?=#{WORD.source})}
|
22
22
|
|
23
23
|
def Rfc2047.is_encoded? s; s =~ WORD end
|
@@ -28,16 +28,17 @@ module Rfc2047
|
|
28
28
|
# converted to the target encoding, it is left in its encoded form.
|
29
29
|
def Rfc2047.decode_to(target, from)
|
30
30
|
from = from.gsub(WORDSEQ, '\1')
|
31
|
-
|
31
|
+
from.gsub(WORD) do
|
32
32
|
|word|
|
33
33
|
charset, encoding, text = $1, $2, $3
|
34
34
|
|
35
35
|
# B64 or QP decode, as necessary:
|
36
36
|
case encoding
|
37
37
|
when 'b', 'B'
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
## Padding is optional in RFC 2047 words. Add some extra padding
|
39
|
+
## before decoding the base64, otherwise on Ruby 2.0 the final byte
|
40
|
+
## might be discarded.
|
41
|
+
text = (text + '===').unpack('m*')[0]
|
41
42
|
|
42
43
|
when 'q', 'Q'
|
43
44
|
# RFC 2047 has a variant of quoted printable where a ' ' character
|
@@ -50,7 +51,21 @@ module Rfc2047
|
|
50
51
|
# WORD.
|
51
52
|
end
|
52
53
|
|
53
|
-
|
54
|
+
# Handle UTF-7 specially because Ruby doesn't actually support it as
|
55
|
+
# a normal character encoding.
|
56
|
+
if charset == 'UTF-7'
|
57
|
+
begin
|
58
|
+
next text.decode_utf7.encode(target)
|
59
|
+
rescue ArgumentError, EncodingError
|
60
|
+
next word
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
begin
|
65
|
+
text.force_encoding(charset).encode(target)
|
66
|
+
rescue ArgumentError, EncodingError
|
67
|
+
word
|
68
|
+
end
|
54
69
|
end
|
55
70
|
end
|
56
71
|
end
|
data/lib/sup/source.rb
CHANGED
@@ -102,7 +102,7 @@ class Source
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def synchronize &block
|
105
|
-
@poll_lock.synchronize
|
105
|
+
@poll_lock.synchronize(&block)
|
106
106
|
end
|
107
107
|
|
108
108
|
def try_lock
|
@@ -153,7 +153,7 @@ class Source
|
|
153
153
|
next unless Rfc2047.is_encoded? v
|
154
154
|
header[k] = begin
|
155
155
|
Rfc2047.decode_to $encoding, v
|
156
|
-
rescue Errno::EINVAL, Iconv::InvalidEncoding, Iconv::IllegalSequence
|
156
|
+
rescue Errno::EINVAL, Iconv::InvalidEncoding, Iconv::IllegalSequence
|
157
157
|
#debug "warning: error decoding RFC 2047 header (#{e.class.name}): #{e.message}"
|
158
158
|
v
|
159
159
|
end
|
@@ -169,6 +169,12 @@ protected
|
|
169
169
|
def Source.expand_filesystem_uri uri
|
170
170
|
uri.gsub "~", File.expand_path("~")
|
171
171
|
end
|
172
|
+
|
173
|
+
def Source.encode_path_for_uri path
|
174
|
+
path.gsub(Regexp.new("[#{Regexp.quote(URI_ENCODE_CHARS)}]")) { |c|
|
175
|
+
c.each_byte.map { |x| sprintf("%%%02X", x) }.join
|
176
|
+
}
|
177
|
+
end
|
172
178
|
end
|
173
179
|
|
174
180
|
## if you have a @labels instance variable, include this
|
data/lib/sup/textfield.rb
CHANGED
@@ -119,7 +119,6 @@ class TextField
|
|
119
119
|
Ncurses::Form::REQ_END_FIELD
|
120
120
|
when Ncurses::KEY_UP, Ncurses::KEY_DOWN
|
121
121
|
unless !@i || @history.empty?
|
122
|
-
value = get_cursed_value
|
123
122
|
#debug "history before #{@history.inspect}"
|
124
123
|
@i = @i + (c.is_keycode?(Ncurses::KEY_UP) ? -1 : 1)
|
125
124
|
@i = 0 if @i < 0
|
data/lib/sup/thread.rb
CHANGED
data/lib/sup/util.rb
CHANGED
@@ -4,6 +4,7 @@ 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'
|
@@ -11,7 +12,7 @@ require 'unicode'
|
|
11
12
|
require 'unicode/display_width'
|
12
13
|
require 'fileutils'
|
13
14
|
|
14
|
-
|
15
|
+
module ExtendedLockfile
|
15
16
|
def gen_lock_id
|
16
17
|
Hash[
|
17
18
|
'host' => "#{ Socket.gethostname }",
|
@@ -37,6 +38,7 @@ class Lockfile
|
|
37
38
|
|
38
39
|
def touch_yourself; touch path end
|
39
40
|
end
|
41
|
+
Lockfile.send :prepend, ExtendedLockfile
|
40
42
|
|
41
43
|
class File
|
42
44
|
# platform safe file.link which attempts a copy if hard-linking fails
|
@@ -106,7 +108,7 @@ module RMail
|
|
106
108
|
end
|
107
109
|
end
|
108
110
|
|
109
|
-
|
111
|
+
module CustomizedSerialize
|
110
112
|
## Don't add MIME-Version headers on serialization. Sup sometimes want's to serialize
|
111
113
|
## message parts where these headers are not needed and messing with the message on
|
112
114
|
## serialization breaks gpg signatures. The commented section shows the original RMail
|
@@ -118,48 +120,7 @@ module RMail
|
|
118
120
|
# end
|
119
121
|
end
|
120
122
|
end
|
121
|
-
|
122
|
-
class Header
|
123
|
-
|
124
|
-
# Convert to ASCII before trying to match with regexp
|
125
|
-
class Field
|
126
|
-
|
127
|
-
class << self
|
128
|
-
def parse(field)
|
129
|
-
field = field.dup.to_s
|
130
|
-
field = field.fix_encoding!.ascii
|
131
|
-
if field =~ EXTRACT_FIELD_NAME_RE
|
132
|
-
[ $1, $'.chomp ]
|
133
|
-
else
|
134
|
-
[ "", Field.value_strip(field) ]
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
## Be more cautious about invalid content-type headers
|
141
|
-
## the original RMail code calls
|
142
|
-
## value.strip.split(/\s*;\s*/)[0].downcase
|
143
|
-
## without checking if split returned an element
|
144
|
-
|
145
|
-
# This returns the full content type of this message converted to
|
146
|
-
# lower case.
|
147
|
-
#
|
148
|
-
# If there is no content type header, returns the passed block is
|
149
|
-
# executed and its return value is returned. If no block is passed,
|
150
|
-
# the value of the +default+ argument is returned.
|
151
|
-
def content_type(default = nil)
|
152
|
-
if value = self['content-type'] and ct = value.strip.split(/\s*;\s*/)[0]
|
153
|
-
return ct.downcase
|
154
|
-
else
|
155
|
-
if block_given?
|
156
|
-
yield
|
157
|
-
else
|
158
|
-
default
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
123
|
+
Serialize.send :prepend, CustomizedSerialize
|
163
124
|
end
|
164
125
|
|
165
126
|
class Module
|
@@ -392,8 +353,23 @@ class String
|
|
392
353
|
self
|
393
354
|
end
|
394
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
|
+
|
395
372
|
def normalize_whitespace
|
396
|
-
fix_encoding!
|
397
373
|
gsub(/\t/, " ").gsub(/\r/, "")
|
398
374
|
end
|
399
375
|
|
@@ -405,7 +381,7 @@ class String
|
|
405
381
|
|
406
382
|
unless method_defined? :each
|
407
383
|
def each &b
|
408
|
-
each_line
|
384
|
+
each_line(&b)
|
409
385
|
end
|
410
386
|
end
|
411
387
|
|
@@ -507,7 +483,9 @@ module Enumerable
|
|
507
483
|
ret
|
508
484
|
end
|
509
485
|
|
510
|
-
|
486
|
+
if not method_defined? :sum
|
487
|
+
def sum; inject(0) { |x, y| x + y }; end
|
488
|
+
end
|
511
489
|
|
512
490
|
def map_to_hash
|
513
491
|
ret = {}
|
@@ -563,7 +541,9 @@ class Array
|
|
563
541
|
inject([]) { |a, e| a + e }
|
564
542
|
end
|
565
543
|
|
566
|
-
|
544
|
+
if not method_defined? :to_h
|
545
|
+
def to_h; Hash[*flatten_one_level]; end
|
546
|
+
end
|
567
547
|
def rest; self[1..-1]; end
|
568
548
|
|
569
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)
|
@@ -349,7 +353,7 @@ EOM
|
|
349
353
|
name ||= ENV["USER"]
|
350
354
|
email = ENV["USER"] + "@" +
|
351
355
|
begin
|
352
|
-
|
356
|
+
Addrinfo.getaddrinfo(Socket.gethostname, 'smtp').first.getnameinfo.first
|
353
357
|
rescue SocketError
|
354
358
|
Socket.gethostname
|
355
359
|
end
|
data/man/sup-add.1
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
.\" Automatically generated by Pandoc 2.
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
2
|
.\"
|
3
3
|
.TH "SUP-ADD" "1" "April 9, 2012" "Sup User Manual" ""
|
4
4
|
.hy
|
@@ -33,30 +33,30 @@ maildir://<path to Maildir directory>
|
|
33
33
|
.fi
|
34
34
|
.SH OPTIONS
|
35
35
|
.TP
|
36
|
-
|
36
|
+
-a, --archive
|
37
37
|
Automatically archive all new messages from thesesources.
|
38
38
|
.TP
|
39
|
-
|
39
|
+
-u, --unusual
|
40
40
|
Do not automatically poll these sources for new messages.
|
41
41
|
.TP
|
42
|
-
|
42
|
+
-l \f[I]STRING\f[R], --labels \f[I]STRING\f[R]
|
43
43
|
A comma-separated set of labels to apply to all messages from this
|
44
44
|
source
|
45
45
|
.TP
|
46
|
-
|
46
|
+
-f, --force-new
|
47
47
|
Create a new account for this source, even if one already exists
|
48
48
|
.TP
|
49
|
-
|
49
|
+
-o \f[I]STRING\f[R], --force-account \f[I]STRING\f[R]
|
50
50
|
Reuse previously defined account user\[at]hostname
|
51
51
|
.TP
|
52
|
-
|
52
|
+
-v, --version
|
53
53
|
Print version and exit
|
54
54
|
.TP
|
55
|
-
|
55
|
+
-h, --help
|
56
56
|
Show help message
|
57
57
|
.SH FILES
|
58
58
|
.TP
|
59
|
-
|
59
|
+
$HOME/.sup/sources.yaml
|
60
60
|
Configuration file for Sup mail sources
|
61
61
|
.SH SEE ALSO
|
62
62
|
.PP
|
@@ -69,19 +69,19 @@ at
|
|
69
69
|
<https://github.com/sup-heliotrope/sup/issues>
|
70
70
|
.SH CONTACT INFORMATION
|
71
71
|
.TP
|
72
|
-
|
73
|
-
<
|
72
|
+
The Sup web page:
|
73
|
+
<https://sup-heliotrope.github.io/>
|
74
74
|
.TP
|
75
|
-
|
75
|
+
Code repository:
|
76
76
|
<https://github.com/sup-heliotrope/sup/>
|
77
77
|
.TP
|
78
|
-
|
78
|
+
Sup Wiki:
|
79
79
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
80
80
|
.TP
|
81
|
-
|
81
|
+
Sup IRC channel:
|
82
82
|
#sup \[at] freenode.net
|
83
83
|
.TP
|
84
|
-
|
84
|
+
Mailing list:
|
85
85
|
supmua\[at]googlegroups.com
|
86
86
|
.RS
|
87
87
|
.PP
|
data/man/sup-config.1
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
.\" Automatically generated by Pandoc 2.
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
2
|
.\"
|
3
3
|
.TH "SUP-CONFIG" "1" "April 9, 2012" "Sup User Manual" ""
|
4
4
|
.hy
|
@@ -14,17 +14,17 @@ Interactive configuration tool for Sup.
|
|
14
14
|
Won\[cq]t destroy existing configuration.
|
15
15
|
.SH OPTIONS
|
16
16
|
.TP
|
17
|
-
|
17
|
+
-v, --version
|
18
18
|
Print versian and exit
|
19
19
|
.TP
|
20
|
-
|
20
|
+
-h, --help
|
21
21
|
Show help message
|
22
22
|
.SH FILES
|
23
23
|
.TP
|
24
|
-
|
24
|
+
$HOME/.sup/config.yaml
|
25
25
|
Configuration file for Sup
|
26
26
|
.TP
|
27
|
-
|
27
|
+
$HOME/.sup/sources.yaml
|
28
28
|
Configuration file for Sup mail sources
|
29
29
|
.SH SEE ALSO
|
30
30
|
.PP
|
@@ -37,19 +37,19 @@ at
|
|
37
37
|
<https://github.com/sup-heliotrope/sup/issues>
|
38
38
|
.SH CONTACT INFORMATION
|
39
39
|
.TP
|
40
|
-
|
41
|
-
<
|
40
|
+
The Sup web page:
|
41
|
+
<https://sup-heliotrope.github.io/>
|
42
42
|
.TP
|
43
|
-
|
43
|
+
Code repository:
|
44
44
|
<https://github.com/sup-heliotrope/sup/>
|
45
45
|
.TP
|
46
|
-
|
46
|
+
Sup Wiki:
|
47
47
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
48
48
|
.TP
|
49
|
-
|
49
|
+
Sup IRC channel:
|
50
50
|
#sup \[at] freenode.net
|
51
51
|
.TP
|
52
|
-
|
52
|
+
Mailing list:
|
53
53
|
supmua\[at]googlegroups.com
|
54
54
|
.RS
|
55
55
|
.PP
|
data/man/sup-dump.1
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
.\" Automatically generated by Pandoc 2.
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
2
|
.\"
|
3
3
|
.TH "SUP-DUMP" "1" "April 9, 2012" "Sup User Manual" ""
|
4
4
|
.hy
|
@@ -17,10 +17,10 @@ This tool is primarily useful in the event that a Sup upgrade breaks
|
|
17
17
|
index format compatibility.
|
18
18
|
.SH OPTIONS
|
19
19
|
.TP
|
20
|
-
|
20
|
+
-v, --version
|
21
21
|
Print version and exit
|
22
22
|
.TP
|
23
|
-
|
23
|
+
-h, --help
|
24
24
|
Show help message
|
25
25
|
.SH EXAMPLES
|
26
26
|
.PP
|
@@ -50,19 +50,19 @@ at
|
|
50
50
|
<https://github.com/sup-heliotrope/sup/issues>
|
51
51
|
.SH CONTACT INFORMATION
|
52
52
|
.TP
|
53
|
-
|
54
|
-
<
|
53
|
+
The Sup web page:
|
54
|
+
<https://sup-heliotrope.github.io/>
|
55
55
|
.TP
|
56
|
-
|
56
|
+
Code repository:
|
57
57
|
<https://github.com/sup-heliotrope/sup/>
|
58
58
|
.TP
|
59
|
-
|
59
|
+
Sup Wiki:
|
60
60
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
61
61
|
.TP
|
62
|
-
|
62
|
+
Sup IRC channel:
|
63
63
|
#sup \[at] freenode.net
|
64
64
|
.TP
|
65
|
-
|
65
|
+
Mailing list:
|
66
66
|
supmua\[at]googlegroups.com
|
67
67
|
.RS
|
68
68
|
.PP
|
data/man/sup-import-dump.1
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
.\" Automatically generated by Pandoc 2.
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
2
|
.\"
|
3
3
|
.TH "SUP-IMPORT-DUMP" "1" "April 9, 2012" "Sup User Manual" ""
|
4
4
|
.hy
|
@@ -18,29 +18,29 @@ If you need to recreate the index, see sup-sync --restore instead.
|
|
18
18
|
Messages not mentioned in the dump file will not be modified.
|
19
19
|
.SH OPTIONS
|
20
20
|
.TP
|
21
|
-
|
21
|
+
-v, --verbose
|
22
22
|
Print message ids as they\[cq]re processed
|
23
23
|
.TP
|
24
|
-
|
24
|
+
-i, --ignore-missing
|
25
25
|
Silently skip over messages that are not in the index
|
26
26
|
.TP
|
27
|
-
|
27
|
+
-w, --warn-missing
|
28
28
|
Warn about messages that are not in the index, but continue
|
29
29
|
.TP
|
30
|
-
|
30
|
+
-a, --abort-missing
|
31
31
|
Abort on encountering messages that are not in the index (default)
|
32
32
|
.TP
|
33
|
-
|
33
|
+
-t, --atomic
|
34
34
|
Use transaction to apply all changes atomically
|
35
35
|
.TP
|
36
|
-
|
36
|
+
-n, --dry-run
|
37
37
|
Don\[cq]t actually modify the index.
|
38
38
|
Probably only useful with --verbose
|
39
39
|
.TP
|
40
|
-
|
40
|
+
--version
|
41
41
|
Show version information
|
42
42
|
.TP
|
43
|
-
|
43
|
+
-h, --help
|
44
44
|
Show help message
|
45
45
|
.SH SEE ALSO
|
46
46
|
.PP
|
@@ -53,19 +53,19 @@ at
|
|
53
53
|
<https://github.com/sup-heliotrope/sup/issues>
|
54
54
|
.SH CONTACT INFORMATION
|
55
55
|
.TP
|
56
|
-
|
57
|
-
<
|
56
|
+
The Sup web page:
|
57
|
+
<https://sup-heliotrope.github.io/>
|
58
58
|
.TP
|
59
|
-
|
59
|
+
Code repository:
|
60
60
|
<https://github.com/sup-heliotrope/sup/>
|
61
61
|
.TP
|
62
|
-
|
62
|
+
Sup Wiki:
|
63
63
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
64
64
|
.TP
|
65
|
-
|
65
|
+
Sup IRC channel:
|
66
66
|
#sup \[at] freenode.net
|
67
67
|
.TP
|
68
|
-
|
68
|
+
Mailing list:
|
69
69
|
supmua\[at]googlegroups.com
|
70
70
|
.RS
|
71
71
|
.PP
|
@@ -1,4 +1,4 @@
|
|
1
|
-
.\" Automatically generated by Pandoc 2.
|
1
|
+
.\" Automatically generated by Pandoc 2.9.2.1
|
2
2
|
.\"
|
3
3
|
.TH "SUP-SYNC" "1" "September 3, 2014" "Sup User Manual" ""
|
4
4
|
.hy
|
@@ -22,10 +22,10 @@ Read more on the Sup wiki
|
|
22
22
|
https://github.com/sup-heliotrope/sup/wiki/Migration-0.13-to-0.14
|
23
23
|
.SH FILES
|
24
24
|
.TP
|
25
|
-
|
25
|
+
$HOME/.sup/config.yaml
|
26
26
|
Sup configuration file
|
27
27
|
.TP
|
28
|
-
|
28
|
+
$HOME/.sup/sources.yaml
|
29
29
|
Configuration file for Sup mail sources
|
30
30
|
.SH SEE ALSO
|
31
31
|
.PP
|
@@ -38,19 +38,19 @@ at
|
|
38
38
|
<https://github.com/sup-heliotrope/sup/issues>
|
39
39
|
.SH CONTACT INFORMATION
|
40
40
|
.TP
|
41
|
-
|
42
|
-
<
|
41
|
+
The Sup web page:
|
42
|
+
<https://sup-heliotrope.github.io/>
|
43
43
|
.TP
|
44
|
-
|
44
|
+
Code repository:
|
45
45
|
<https://github.com/sup-heliotrope/sup/>
|
46
46
|
.TP
|
47
|
-
|
47
|
+
Sup Wiki:
|
48
48
|
<https://github.com/sup-heliotrope/sup/wiki/>
|
49
49
|
.TP
|
50
|
-
|
50
|
+
Sup IRC channel:
|
51
51
|
#sup \[at] freenode.net
|
52
52
|
.TP
|
53
|
-
|
53
|
+
Mailing list:
|
54
54
|
supmua\[at]googlegroups.com
|
55
55
|
.RS
|
56
56
|
.PP
|