sup 0.13.0 → 0.13.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sup might be problematic. Click here for more details.
- data.tar.gz.sig +2 -1
- data/History.txt +4 -0
- data/ReleaseNotes +4 -0
- data/bin/sup +3 -1
- data/bin/sup-add +3 -1
- data/bin/sup-config +11 -6
- data/bin/sup-dump +2 -0
- data/bin/sup-import-dump +3 -1
- data/bin/sup-recover-sources +2 -0
- data/bin/sup-sync +3 -1
- data/bin/sup-sync-back +3 -1
- data/bin/sup-tweak-labels +3 -1
- data/lib/sup.rb +31 -64
- data/lib/sup/buffer.rb +2 -2
- data/lib/sup/colormap.rb +1 -0
- data/lib/sup/hook.rb +10 -0
- data/lib/sup/{horizontal-selector.rb → horizontal_selector.rb} +10 -1
- data/lib/sup/index.rb +27 -26
- data/lib/sup/{interactive-lock.rb → interactive_lock.rb} +0 -0
- data/lib/sup/logger.rb +1 -1
- data/lib/sup/logger/singleton.rb +10 -0
- data/lib/sup/{message-chunks.rb → message_chunks.rb} +2 -2
- data/lib/sup/modes/{buffer-list-mode.rb → buffer_list_mode.rb} +0 -0
- data/lib/sup/modes/{completion-mode.rb → completion_mode.rb} +3 -3
- data/lib/sup/modes/{compose-mode.rb → compose_mode.rb} +0 -0
- data/lib/sup/modes/{console-mode.rb → console_mode.rb} +14 -3
- data/lib/sup/modes/{contact-list-mode.rb → contact_list_mode.rb} +0 -0
- data/lib/sup/modes/{edit-message-async-mode.rb → edit_message_async_mode.rb} +0 -0
- data/lib/sup/modes/{edit-message-mode.rb → edit_message_mode.rb} +8 -3
- data/lib/sup/modes/{file-browser-mode.rb → file_browser_mode.rb} +0 -0
- data/lib/sup/modes/{forward-mode.rb → forward_mode.rb} +0 -0
- data/lib/sup/modes/{help-mode.rb → help_mode.rb} +0 -0
- data/lib/sup/modes/{inbox-mode.rb → inbox_mode.rb} +0 -0
- data/lib/sup/modes/{label-list-mode.rb → label_list_mode.rb} +0 -0
- data/lib/sup/modes/{label-search-results-mode.rb → label_search_results_mode.rb} +0 -0
- data/lib/sup/modes/{line-cursor-mode.rb → line_cursor_mode.rb} +2 -2
- data/lib/sup/modes/{log-mode.rb → log_mode.rb} +0 -0
- data/lib/sup/modes/{person-search-results-mode.rb → person_search_results_mode.rb} +0 -0
- data/lib/sup/modes/{poll-mode.rb → poll_mode.rb} +0 -0
- data/lib/sup/modes/{reply-mode.rb → reply_mode.rb} +0 -0
- data/lib/sup/modes/{resume-mode.rb → resume_mode.rb} +0 -0
- data/lib/sup/modes/{scroll-mode.rb → scroll_mode.rb} +4 -4
- data/lib/sup/modes/{search-list-mode.rb → search_list_mode.rb} +0 -0
- data/lib/sup/modes/{search-results-mode.rb → search_results_mode.rb} +0 -0
- data/lib/sup/modes/{text-mode.rb → text_mode.rb} +0 -0
- data/lib/sup/modes/{thread-index-mode.rb → thread_index_mode.rb} +6 -6
- data/lib/sup/modes/{thread-view-mode.rb → thread_view_mode.rb} +0 -0
- data/lib/sup/poll.rb +22 -7
- data/lib/sup/service/label_service.rb +45 -0
- data/lib/sup/util/path.rb +9 -0
- data/lib/sup/util/uri.rb +15 -0
- data/lib/sup/version.rb +1 -1
- metadata +158 -78
- metadata.gz.sig +0 -0
File without changes
|
data/lib/sup/logger.rb
CHANGED
@@ -0,0 +1,10 @@
|
|
1
|
+
# TODO: this is ugly. It's better to have a application singleton passed
|
2
|
+
# down to lower level components instead of including logging methods in
|
3
|
+
# class `Object'
|
4
|
+
#
|
5
|
+
# For now this is what we have to do.
|
6
|
+
require "sup/logger"
|
7
|
+
Redwood::Logger.init.add_sink $stderr
|
8
|
+
class Object
|
9
|
+
include Redwood::LogsStuff
|
10
|
+
end
|
@@ -130,7 +130,7 @@ EOS
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
-
def color; :
|
133
|
+
def color; :text_color end
|
134
134
|
def patina_color; :attachment_color end
|
135
135
|
def patina_text
|
136
136
|
if expandable?
|
@@ -191,7 +191,7 @@ EOS
|
|
191
191
|
def quotable?; true end
|
192
192
|
def expandable?; false end
|
193
193
|
def viewable?; false end
|
194
|
-
def color; :
|
194
|
+
def color; :text_color end
|
195
195
|
end
|
196
196
|
|
197
197
|
class Quote
|
File without changes
|
@@ -38,11 +38,11 @@ private
|
|
38
38
|
suffix = s[(@prefix_len + 1) .. -1]
|
39
39
|
char = s[@prefix_len].chr
|
40
40
|
|
41
|
-
@lines.last += [[:
|
41
|
+
@lines.last += [[:text_color, sprintf("%#{max_length - suffix.length - 1}s", prefix)],
|
42
42
|
[:completion_character_color, char],
|
43
|
-
[:
|
43
|
+
[:text_color, suffix + INTERSTITIAL]]
|
44
44
|
else
|
45
|
-
@lines.last += [[:
|
45
|
+
@lines.last += [[:text_color, sprintf("%#{max_length}s#{INTERSTITIAL}", s)]]
|
46
46
|
end
|
47
47
|
else
|
48
48
|
@lines << "" if i % num_per == 0
|
File without changes
|
@@ -1,10 +1,13 @@
|
|
1
1
|
require 'pp'
|
2
2
|
|
3
|
+
require "sup/service/label_service"
|
4
|
+
|
3
5
|
module Redwood
|
4
6
|
|
5
7
|
class Console
|
6
8
|
def initialize mode
|
7
9
|
@mode = mode
|
10
|
+
@label_service = LabelService.new
|
8
11
|
end
|
9
12
|
|
10
13
|
def query(query)
|
@@ -12,19 +15,27 @@ class Console
|
|
12
15
|
end
|
13
16
|
|
14
17
|
def add_labels(query, *labels)
|
15
|
-
|
18
|
+
count = @label_service.add_labels(query, *labels)
|
19
|
+
print_buffer_dirty_msg count
|
16
20
|
end
|
17
21
|
|
18
22
|
def remove_labels(query, *labels)
|
19
|
-
|
23
|
+
count = @label_service.remove_labels(query, *labels)
|
24
|
+
print_buffer_dirty_msg count
|
25
|
+
end
|
26
|
+
|
27
|
+
def print_buffer_dirty_msg msg_count
|
28
|
+
puts "Scanned #{msg_count} messages."
|
29
|
+
puts "You might want to refresh open buffers with `@` key."
|
20
30
|
end
|
31
|
+
private :print_buffer_dirty_msg
|
21
32
|
|
22
33
|
def xapian; Index.instance.instance_variable_get :@xapian; end
|
23
34
|
|
24
35
|
def loglevel; Redwood::Logger.level; end
|
25
36
|
def set_loglevel(level); Redwood::Logger.level = level; end
|
26
37
|
|
27
|
-
def special_methods;
|
38
|
+
def special_methods; public_methods - Object.methods end
|
28
39
|
|
29
40
|
def puts x; @mode << "#{x.to_s.rstrip}\n" end
|
30
41
|
def p x; puts x.inspect end
|
File without changes
|
File without changes
|
@@ -131,13 +131,18 @@ EOS
|
|
131
131
|
HorizontalSelector.new "Account:", AccountManager.user_emails + [nil], user_emails_copy + ["Customized"]
|
132
132
|
|
133
133
|
if @header["From"] =~ /<?(\S+@(\S+?))>?$/
|
134
|
-
|
135
|
-
|
134
|
+
# TODO: this is ugly. might implement an AccountSelector and handle
|
135
|
+
# special cases more transparently.
|
136
|
+
account_from = @account_selector.can_set_to?($1) ? $1 : nil
|
137
|
+
@account_selector.set_to account_from
|
136
138
|
else
|
137
139
|
@account_selector.set_to nil
|
138
|
-
@account_user = @header["From"]
|
139
140
|
end
|
140
141
|
|
142
|
+
# A single source of truth might better than duplicating this in both
|
143
|
+
# @account_user and @account_selector.
|
144
|
+
@account_user = @header["From"]
|
145
|
+
|
141
146
|
add_selector @account_selector
|
142
147
|
end
|
143
148
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -47,9 +47,9 @@ protected
|
|
47
47
|
|
48
48
|
def draw_line ln, opts={}
|
49
49
|
if ln == @curpos
|
50
|
-
super ln, :highlight => true, :debug => opts[:debug]
|
50
|
+
super ln, :highlight => true, :debug => opts[:debug], :color => :text_color
|
51
51
|
else
|
52
|
-
super
|
52
|
+
super ln, :color => :text_color
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -43,12 +43,12 @@ class ScrollMode < Mode
|
|
43
43
|
|
44
44
|
def draw
|
45
45
|
ensure_mode_validity
|
46
|
-
(@topline ... @botline).each { |ln| draw_line ln }
|
46
|
+
(@topline ... @botline).each { |ln| draw_line ln, :color => :text_color }
|
47
47
|
((@botline - @topline) ... buffer.content_height).each do |ln|
|
48
48
|
if @twiddles
|
49
49
|
buffer.write ln, 0, "~", :color => :twiddle_color
|
50
50
|
else
|
51
|
-
buffer.write ln, 0, ""
|
51
|
+
buffer.write ln, 0, "", :color => :text_color
|
52
52
|
end
|
53
53
|
end
|
54
54
|
@status = "lines #{@topline + 1}:#{@botline}/#{lines}"
|
@@ -208,7 +208,7 @@ protected
|
|
208
208
|
# return
|
209
209
|
end
|
210
210
|
|
211
|
-
def matching_text_array s, regex, oldcolor=:
|
211
|
+
def matching_text_array s, regex, oldcolor=:text_color
|
212
212
|
s.split(regex).map do |text|
|
213
213
|
next if text.empty?
|
214
214
|
if text =~ regex
|
@@ -244,7 +244,7 @@ protected
|
|
244
244
|
end
|
245
245
|
|
246
246
|
def draw_line_from_string ln, s, opts
|
247
|
-
buffer.write ln - @topline, 0, s[@leftcol .. -1], :highlight => opts[:highlight]
|
247
|
+
buffer.write ln - @topline, 0, s[@leftcol .. -1], :highlight => opts[:highlight], :color => opts[:color]
|
248
248
|
end
|
249
249
|
end
|
250
250
|
|
File without changes
|
File without changes
|
File without changes
|
@@ -110,7 +110,7 @@ EOS
|
|
110
110
|
num = t.size
|
111
111
|
message = "Loading #{num.pluralize 'message body'}..."
|
112
112
|
BufferManager.say(message) do |sid|
|
113
|
-
t.each_with_index do |(m, *
|
113
|
+
t.each_with_index do |(m, *_), i|
|
114
114
|
next unless m
|
115
115
|
BufferManager.say "#{message} (#{i}/#{num})", sid if t.size > 1
|
116
116
|
m.load_from_source!
|
@@ -247,7 +247,7 @@ EOS
|
|
247
247
|
|
248
248
|
def edit_message
|
249
249
|
return unless(t = cursor_thread)
|
250
|
-
message, *
|
250
|
+
message, *_ = t.find { |m, *o| m.has_label? :draft }
|
251
251
|
if message
|
252
252
|
mode = ResumeMode.new message
|
253
253
|
BufferManager.spawn "Edit message", mode
|
@@ -258,7 +258,6 @@ EOS
|
|
258
258
|
|
259
259
|
## returns an undo lambda
|
260
260
|
def actually_toggle_starred t
|
261
|
-
pos = curpos
|
262
261
|
if t.has_label? :starred # if ANY message has a star
|
263
262
|
t.remove_label :starred # remove from all
|
264
263
|
UpdateManager.relay self, :unstarred, t.first
|
@@ -877,8 +876,9 @@ protected
|
|
877
876
|
from << [(newness ? :index_new_color : (starred ? :index_starred_color : :index_old_color)), abbrev]
|
878
877
|
end
|
879
878
|
|
880
|
-
|
881
|
-
|
879
|
+
is_me = AccountManager.method(:is_account?)
|
880
|
+
directly_participated = t.direct_participants.any?(&is_me)
|
881
|
+
participated = directly_participated || t.participants.any?(&is_me)
|
882
882
|
|
883
883
|
subj_color =
|
884
884
|
if t.has_label?(:draft)
|
@@ -908,7 +908,7 @@ protected
|
|
908
908
|
[
|
909
909
|
[:size_widget_color, size_widget_text],
|
910
910
|
[:to_me_color, t.labels.member?(:attachment) ? "@" : " "],
|
911
|
-
[:to_me_color,
|
911
|
+
[:to_me_color, directly_participated ? ">" : (participated ? '+' : " ")],
|
912
912
|
] +
|
913
913
|
(t.labels - @hidden_labels).sort_by {|x| x.to_s}.map {
|
914
914
|
|label| [Colormap.sym_is_defined("label_#{label}_color".to_sym) || :label_color, "#{label} "]
|
File without changes
|
data/lib/sup/poll.rb
CHANGED
@@ -22,6 +22,8 @@ Variables:
|
|
22
22
|
num: the total number of new messages added in this poll
|
23
23
|
num_inbox: the number of new messages added in this poll which
|
24
24
|
appear in the inbox (i.e. were not auto-archived).
|
25
|
+
num_total: the total number of messages
|
26
|
+
num_inbox_total: the total number of new messages in the inbox.
|
25
27
|
num_inbox_total_unread: the total number of unread messages in the inbox
|
26
28
|
from_and_subj: an array of (from email address, subject) pairs
|
27
29
|
from_and_subj_inbox: an array of (from email address, subject) pairs for
|
@@ -43,22 +45,35 @@ EOS
|
|
43
45
|
|
44
46
|
def poll_with_sources
|
45
47
|
@mode ||= PollMode.new
|
46
|
-
HookManager.run "before-poll"
|
47
48
|
|
48
|
-
|
49
|
+
if HookManager.enabled? "before-poll"
|
50
|
+
HookManager.run("before-poll")
|
51
|
+
else
|
52
|
+
BufferManager.flash "Polling for new messages..."
|
53
|
+
end
|
54
|
+
|
49
55
|
num, numi, from_and_subj, from_and_subj_inbox, loaded_labels = @mode.poll
|
50
56
|
clear_running_totals if @should_clear_running_totals
|
51
57
|
@running_totals[:num] += num
|
52
58
|
@running_totals[:numi] += numi
|
53
59
|
@running_totals[:loaded_labels] += loaded_labels || []
|
54
|
-
|
55
|
-
|
60
|
+
|
61
|
+
|
62
|
+
if HookManager.enabled? "after-poll"
|
63
|
+
hook_args = { :num => num, :num_inbox => numi,
|
64
|
+
:num_total => @running_totals[:num], :num_inbox_total => @running_totals[:numi],
|
65
|
+
:from_and_subj => from_and_subj, :from_and_subj_inbox => from_and_subj_inbox,
|
66
|
+
:num_inbox_total_unread => lambda { Index.num_results_for :labels => [:inbox, :unread] } }
|
67
|
+
|
68
|
+
HookManager.run("after-poll", hook_args)
|
56
69
|
else
|
57
|
-
|
70
|
+
if @running_totals[:num] > 0
|
71
|
+
BufferManager.flash "Loaded #{@running_totals[:num].pluralize 'new message'}, #{@running_totals[:numi]} to inbox. Labels: #{@running_totals[:loaded_labels].map{|l| l.to_s}.join(', ')}"
|
72
|
+
else
|
73
|
+
BufferManager.flash "No new messages."
|
74
|
+
end
|
58
75
|
end
|
59
76
|
|
60
|
-
HookManager.run "after-poll", :num => num, :num_inbox => numi, :from_and_subj => from_and_subj, :from_and_subj_inbox => from_and_subj_inbox, :num_inbox_total_unread => lambda { Index.num_results_for :labels => [:inbox, :unread] }
|
61
|
-
|
62
77
|
end
|
63
78
|
|
64
79
|
def poll
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "sup/index"
|
2
|
+
|
3
|
+
module Redwood
|
4
|
+
# Provides label tweaking service to the user.
|
5
|
+
# Working as the backend of ConsoleMode.
|
6
|
+
#
|
7
|
+
# Should become the backend of bin/sup-tweak-labels in the future.
|
8
|
+
class LabelService
|
9
|
+
# @param index [Redwood::Index]
|
10
|
+
def initialize index=Index.instance
|
11
|
+
@index = index
|
12
|
+
end
|
13
|
+
|
14
|
+
def add_labels query, *labels
|
15
|
+
run_on_each_message(query) do |m|
|
16
|
+
labels.each {|l| m.add_label l }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def remove_labels query, *labels
|
21
|
+
run_on_each_message(query) do |m|
|
22
|
+
labels.each {|l| m.remove_label l }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
private
|
28
|
+
def run_on_each_message query, &operation
|
29
|
+
count = 0
|
30
|
+
|
31
|
+
find_messages(query).each do |m|
|
32
|
+
operation.call(m)
|
33
|
+
@index.update_message_state m
|
34
|
+
count += 1
|
35
|
+
end
|
36
|
+
|
37
|
+
@index.save_index
|
38
|
+
count
|
39
|
+
end
|
40
|
+
|
41
|
+
def find_messages query
|
42
|
+
@index.find_messages(query)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/sup/util/uri.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require "uri"
|
2
|
+
|
3
|
+
require "sup/util/path"
|
4
|
+
|
5
|
+
module Redwood
|
6
|
+
module Util
|
7
|
+
module Uri
|
8
|
+
def self.build(components)
|
9
|
+
components = components.dup
|
10
|
+
components[:path] = Path.expand(components[:path])
|
11
|
+
::URI::Generic.build(components)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/sup/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 13
|
9
|
-
-
|
10
|
-
hash: -
|
9
|
+
- 1
|
10
|
+
hash: -2513794677926756067
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- William Morgan
|
@@ -46,7 +46,7 @@ cert_chain:
|
|
46
46
|
ZUw2TWhhNApoRmMyeUFOQmo4dm9hWTVDNzRDZzJWcUV4dGNuU2F4VXRXOXdD
|
47
47
|
NHc1aE9sZzBBVmZiMUpXemc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
|
48
48
|
Cg==
|
49
|
-
date: 2013-
|
49
|
+
date: 2013-06-21 00:00:00.000000000 Z
|
50
50
|
dependencies:
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
52
|
name: xapian-full-alaveteli
|
@@ -56,10 +56,11 @@ dependencies:
|
|
56
56
|
- - ~>
|
57
57
|
- !ruby/object:Gem::Version
|
58
58
|
version: '1.2'
|
59
|
+
prerelease:
|
59
60
|
segments:
|
60
61
|
- 1
|
61
62
|
- 2
|
62
|
-
hash: -
|
63
|
+
hash: -853541801780087623
|
63
64
|
type: :runtime
|
64
65
|
prerelease: false
|
65
66
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -68,10 +69,11 @@ dependencies:
|
|
68
69
|
- - ~>
|
69
70
|
- !ruby/object:Gem::Version
|
70
71
|
version: '1.2'
|
72
|
+
prerelease:
|
71
73
|
segments:
|
72
74
|
- 1
|
73
75
|
- 2
|
74
|
-
hash: -
|
76
|
+
hash: -853541801780087623
|
75
77
|
- !ruby/object:Gem::Dependency
|
76
78
|
name: ncursesw-sup
|
77
79
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,18 +82,20 @@ dependencies:
|
|
80
82
|
- - ~>
|
81
83
|
- !ruby/object:Gem::Version
|
82
84
|
version: '1.3'
|
85
|
+
prerelease:
|
83
86
|
segments:
|
84
87
|
- 1
|
85
88
|
- 3
|
86
|
-
hash:
|
89
|
+
hash: 633068654591055268
|
87
90
|
- - ! '>='
|
88
91
|
- !ruby/object:Gem::Version
|
89
92
|
version: 1.3.1
|
93
|
+
prerelease:
|
90
94
|
segments:
|
91
95
|
- 1
|
92
96
|
- 3
|
93
97
|
- 1
|
94
|
-
hash:
|
98
|
+
hash: 2194476579308073519
|
95
99
|
type: :runtime
|
96
100
|
prerelease: false
|
97
101
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -100,18 +104,20 @@ dependencies:
|
|
100
104
|
- - ~>
|
101
105
|
- !ruby/object:Gem::Version
|
102
106
|
version: '1.3'
|
107
|
+
prerelease:
|
103
108
|
segments:
|
104
109
|
- 1
|
105
110
|
- 3
|
106
|
-
hash:
|
111
|
+
hash: 633068654591055268
|
107
112
|
- - ! '>='
|
108
113
|
- !ruby/object:Gem::Version
|
109
114
|
version: 1.3.1
|
115
|
+
prerelease:
|
110
116
|
segments:
|
111
117
|
- 1
|
112
118
|
- 3
|
113
119
|
- 1
|
114
|
-
hash:
|
120
|
+
hash: 2194476579308073519
|
115
121
|
- !ruby/object:Gem::Dependency
|
116
122
|
name: rmail
|
117
123
|
requirement: !ruby/object:Gem::Requirement
|
@@ -120,10 +126,11 @@ dependencies:
|
|
120
126
|
- - ! '>='
|
121
127
|
- !ruby/object:Gem::Version
|
122
128
|
version: '0.17'
|
129
|
+
prerelease:
|
123
130
|
segments:
|
124
131
|
- 0
|
125
132
|
- 17
|
126
|
-
hash:
|
133
|
+
hash: 447830368960240951
|
127
134
|
type: :runtime
|
128
135
|
prerelease: false
|
129
136
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -132,32 +139,35 @@ dependencies:
|
|
132
139
|
- - ! '>='
|
133
140
|
- !ruby/object:Gem::Version
|
134
141
|
version: '0.17'
|
142
|
+
prerelease:
|
135
143
|
segments:
|
136
144
|
- 0
|
137
145
|
- 17
|
138
|
-
hash:
|
146
|
+
hash: 447830368960240951
|
139
147
|
- !ruby/object:Gem::Dependency
|
140
148
|
name: highline
|
141
149
|
requirement: !ruby/object:Gem::Requirement
|
142
|
-
none:
|
150
|
+
none: true
|
143
151
|
requirements:
|
144
152
|
- - ! '>='
|
145
153
|
- !ruby/object:Gem::Version
|
146
154
|
version: '0'
|
155
|
+
prerelease:
|
147
156
|
segments:
|
148
157
|
- 0
|
149
|
-
hash:
|
158
|
+
hash: -3209420716314174423
|
150
159
|
type: :runtime
|
151
160
|
prerelease: false
|
152
161
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none:
|
162
|
+
none: true
|
154
163
|
requirements:
|
155
164
|
- - ! '>='
|
156
165
|
- !ruby/object:Gem::Version
|
157
166
|
version: '0'
|
167
|
+
prerelease:
|
158
168
|
segments:
|
159
169
|
- 0
|
160
|
-
hash:
|
170
|
+
hash: -3209420716314174423
|
161
171
|
- !ruby/object:Gem::Dependency
|
162
172
|
name: trollop
|
163
173
|
requirement: !ruby/object:Gem::Requirement
|
@@ -166,10 +176,11 @@ dependencies:
|
|
166
176
|
- - ! '>='
|
167
177
|
- !ruby/object:Gem::Version
|
168
178
|
version: '1.12'
|
179
|
+
prerelease:
|
169
180
|
segments:
|
170
181
|
- 1
|
171
182
|
- 12
|
172
|
-
hash: -
|
183
|
+
hash: -78987819028068823
|
173
184
|
type: :runtime
|
174
185
|
prerelease: false
|
175
186
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -178,32 +189,35 @@ dependencies:
|
|
178
189
|
- - ! '>='
|
179
190
|
- !ruby/object:Gem::Version
|
180
191
|
version: '1.12'
|
192
|
+
prerelease:
|
181
193
|
segments:
|
182
194
|
- 1
|
183
195
|
- 12
|
184
|
-
hash: -
|
196
|
+
hash: -78987819028068823
|
185
197
|
- !ruby/object:Gem::Dependency
|
186
198
|
name: lockfile
|
187
199
|
requirement: !ruby/object:Gem::Requirement
|
188
|
-
none:
|
200
|
+
none: true
|
189
201
|
requirements:
|
190
202
|
- - ! '>='
|
191
203
|
- !ruby/object:Gem::Version
|
192
204
|
version: '0'
|
205
|
+
prerelease:
|
193
206
|
segments:
|
194
207
|
- 0
|
195
|
-
hash:
|
208
|
+
hash: -3209420716314174423
|
196
209
|
type: :runtime
|
197
210
|
prerelease: false
|
198
211
|
version_requirements: !ruby/object:Gem::Requirement
|
199
|
-
none:
|
212
|
+
none: true
|
200
213
|
requirements:
|
201
214
|
- - ! '>='
|
202
215
|
- !ruby/object:Gem::Version
|
203
216
|
version: '0'
|
217
|
+
prerelease:
|
204
218
|
segments:
|
205
219
|
- 0
|
206
|
-
hash:
|
220
|
+
hash: -3209420716314174423
|
207
221
|
- !ruby/object:Gem::Dependency
|
208
222
|
name: mime-types
|
209
223
|
requirement: !ruby/object:Gem::Requirement
|
@@ -212,9 +226,10 @@ dependencies:
|
|
212
226
|
- - ~>
|
213
227
|
- !ruby/object:Gem::Version
|
214
228
|
version: '1'
|
229
|
+
prerelease:
|
215
230
|
segments:
|
216
231
|
- 1
|
217
|
-
hash:
|
232
|
+
hash: 250434563374147666
|
218
233
|
type: :runtime
|
219
234
|
prerelease: false
|
220
235
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -223,31 +238,80 @@ dependencies:
|
|
223
238
|
- - ~>
|
224
239
|
- !ruby/object:Gem::Version
|
225
240
|
version: '1'
|
241
|
+
prerelease:
|
226
242
|
segments:
|
227
243
|
- 1
|
228
|
-
hash:
|
244
|
+
hash: 250434563374147666
|
245
|
+
- !ruby/object:Gem::Dependency
|
246
|
+
name: locale
|
247
|
+
requirement: !ruby/object:Gem::Requirement
|
248
|
+
none: false
|
249
|
+
requirements:
|
250
|
+
- - ~>
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: '2.0'
|
253
|
+
prerelease:
|
254
|
+
segments:
|
255
|
+
- 2
|
256
|
+
- 0
|
257
|
+
hash: 2973526120172593465
|
258
|
+
type: :runtime
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
none: false
|
262
|
+
requirements:
|
263
|
+
- - ~>
|
264
|
+
- !ruby/object:Gem::Version
|
265
|
+
version: '2.0'
|
266
|
+
prerelease:
|
267
|
+
segments:
|
268
|
+
- 2
|
269
|
+
- 0
|
270
|
+
hash: 2973526120172593465
|
229
271
|
- !ruby/object:Gem::Dependency
|
230
|
-
name:
|
272
|
+
name: chronic
|
231
273
|
requirement: !ruby/object:Gem::Requirement
|
232
274
|
none: false
|
233
275
|
requirements:
|
276
|
+
- - ~>
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0.9'
|
279
|
+
prerelease:
|
280
|
+
segments:
|
281
|
+
- 0
|
282
|
+
- 9
|
283
|
+
hash: 825354025702290061
|
234
284
|
- - ! '>='
|
235
285
|
- !ruby/object:Gem::Version
|
236
|
-
version:
|
286
|
+
version: 0.9.1
|
287
|
+
prerelease:
|
237
288
|
segments:
|
238
289
|
- 0
|
239
|
-
|
290
|
+
- 9
|
291
|
+
- 1
|
292
|
+
hash: -4434314476942640720
|
240
293
|
type: :runtime
|
241
294
|
prerelease: false
|
242
295
|
version_requirements: !ruby/object:Gem::Requirement
|
243
296
|
none: false
|
244
297
|
requirements:
|
298
|
+
- - ~>
|
299
|
+
- !ruby/object:Gem::Version
|
300
|
+
version: '0.9'
|
301
|
+
prerelease:
|
302
|
+
segments:
|
303
|
+
- 0
|
304
|
+
- 9
|
305
|
+
hash: 825354025702290061
|
245
306
|
- - ! '>='
|
246
307
|
- !ruby/object:Gem::Version
|
247
|
-
version:
|
308
|
+
version: 0.9.1
|
309
|
+
prerelease:
|
248
310
|
segments:
|
249
311
|
- 0
|
250
|
-
|
312
|
+
- 9
|
313
|
+
- 1
|
314
|
+
hash: -4434314476942640720
|
251
315
|
- !ruby/object:Gem::Dependency
|
252
316
|
name: bundler
|
253
317
|
requirement: !ruby/object:Gem::Requirement
|
@@ -256,10 +320,6 @@ dependencies:
|
|
256
320
|
- - ~>
|
257
321
|
- !ruby/object:Gem::Version
|
258
322
|
version: '1.3'
|
259
|
-
segments:
|
260
|
-
- 1
|
261
|
-
- 3
|
262
|
-
hash: -3847811635784656183
|
263
323
|
type: :development
|
264
324
|
prerelease: false
|
265
325
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -268,10 +328,6 @@ dependencies:
|
|
268
328
|
- - ~>
|
269
329
|
- !ruby/object:Gem::Version
|
270
330
|
version: '1.3'
|
271
|
-
segments:
|
272
|
-
- 1
|
273
|
-
- 3
|
274
|
-
hash: -3847811635784656183
|
275
331
|
- !ruby/object:Gem::Dependency
|
276
332
|
name: rake
|
277
333
|
requirement: !ruby/object:Gem::Requirement
|
@@ -280,9 +336,6 @@ dependencies:
|
|
280
336
|
- - ! '>='
|
281
337
|
- !ruby/object:Gem::Version
|
282
338
|
version: '0'
|
283
|
-
segments:
|
284
|
-
- 0
|
285
|
-
hash: 3761451823671182045
|
286
339
|
type: :development
|
287
340
|
prerelease: false
|
288
341
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -291,9 +344,38 @@ dependencies:
|
|
291
344
|
- - ! '>='
|
292
345
|
- !ruby/object:Gem::Version
|
293
346
|
version: '0'
|
294
|
-
|
295
|
-
|
296
|
-
|
347
|
+
- !ruby/object:Gem::Dependency
|
348
|
+
name: minitest
|
349
|
+
requirement: !ruby/object:Gem::Requirement
|
350
|
+
none: false
|
351
|
+
requirements:
|
352
|
+
- - ~>
|
353
|
+
- !ruby/object:Gem::Version
|
354
|
+
version: '4'
|
355
|
+
type: :development
|
356
|
+
prerelease: false
|
357
|
+
version_requirements: !ruby/object:Gem::Requirement
|
358
|
+
none: false
|
359
|
+
requirements:
|
360
|
+
- - ~>
|
361
|
+
- !ruby/object:Gem::Version
|
362
|
+
version: '4'
|
363
|
+
- !ruby/object:Gem::Dependency
|
364
|
+
name: rr
|
365
|
+
requirement: !ruby/object:Gem::Requirement
|
366
|
+
none: false
|
367
|
+
requirements:
|
368
|
+
- - ~>
|
369
|
+
- !ruby/object:Gem::Version
|
370
|
+
version: '1.0'
|
371
|
+
type: :development
|
372
|
+
prerelease: false
|
373
|
+
version_requirements: !ruby/object:Gem::Requirement
|
374
|
+
none: false
|
375
|
+
requirements:
|
376
|
+
- - ~>
|
377
|
+
- !ruby/object:Gem::Version
|
378
|
+
version: '1.0'
|
297
379
|
description: ! " Sup is a console-based email client for people with a lot of
|
298
380
|
email.\n\n * GMail-like thread-centered archiving, tagging and muting\n *
|
299
381
|
Handling mail from multiple mbox and Maildir sources\n * Blazing fast full-text
|
@@ -329,34 +411,37 @@ files:
|
|
329
411
|
- bin/sup-sync-back
|
330
412
|
- bin/sup-tweak-labels
|
331
413
|
- lib/sup/hook.rb
|
332
|
-
- lib/sup/
|
333
|
-
- lib/sup/
|
334
|
-
- lib/sup/
|
335
|
-
- lib/sup/modes/
|
336
|
-
- lib/sup/modes/
|
337
|
-
- lib/sup/modes/
|
338
|
-
- lib/sup/modes/
|
339
|
-
- lib/sup/modes/
|
340
|
-
- lib/sup/modes/
|
341
|
-
- lib/sup/modes/
|
342
|
-
- lib/sup/modes/
|
343
|
-
- lib/sup/modes/
|
344
|
-
- lib/sup/modes/
|
345
|
-
- lib/sup/modes/
|
346
|
-
- lib/sup/modes/
|
347
|
-
- lib/sup/modes/
|
348
|
-
- lib/sup/modes/
|
349
|
-
- lib/sup/modes/
|
350
|
-
- lib/sup/modes/
|
351
|
-
- lib/sup/modes/
|
352
|
-
- lib/sup/modes/
|
353
|
-
- lib/sup/modes/
|
354
|
-
- lib/sup/modes/
|
355
|
-
- lib/sup/modes/
|
356
|
-
- lib/sup/modes/
|
414
|
+
- lib/sup/util/uri.rb
|
415
|
+
- lib/sup/util/path.rb
|
416
|
+
- lib/sup/horizontal_selector.rb
|
417
|
+
- lib/sup/modes/line_cursor_mode.rb
|
418
|
+
- lib/sup/modes/label_list_mode.rb
|
419
|
+
- lib/sup/modes/completion_mode.rb
|
420
|
+
- lib/sup/modes/compose_mode.rb
|
421
|
+
- lib/sup/modes/search_results_mode.rb
|
422
|
+
- lib/sup/modes/thread_view_mode.rb
|
423
|
+
- lib/sup/modes/thread_index_mode.rb
|
424
|
+
- lib/sup/modes/console_mode.rb
|
425
|
+
- lib/sup/modes/resume_mode.rb
|
426
|
+
- lib/sup/modes/person_search_results_mode.rb
|
427
|
+
- lib/sup/modes/buffer_list_mode.rb
|
428
|
+
- lib/sup/modes/edit_message_mode.rb
|
429
|
+
- lib/sup/modes/log_mode.rb
|
430
|
+
- lib/sup/modes/poll_mode.rb
|
431
|
+
- lib/sup/modes/help_mode.rb
|
432
|
+
- lib/sup/modes/label_search_results_mode.rb
|
433
|
+
- lib/sup/modes/search_list_mode.rb
|
434
|
+
- lib/sup/modes/scroll_mode.rb
|
435
|
+
- lib/sup/modes/reply_mode.rb
|
436
|
+
- lib/sup/modes/text_mode.rb
|
437
|
+
- lib/sup/modes/forward_mode.rb
|
438
|
+
- lib/sup/modes/inbox_mode.rb
|
439
|
+
- lib/sup/modes/file_browser_mode.rb
|
440
|
+
- lib/sup/modes/contact_list_mode.rb
|
441
|
+
- lib/sup/modes/edit_message_async_mode.rb
|
442
|
+
- lib/sup/logger/singleton.rb
|
357
443
|
- lib/sup/mbox.rb
|
358
444
|
- lib/sup/undo.rb
|
359
|
-
- lib/sup/message-chunks.rb
|
360
445
|
- lib/sup/tagger.rb
|
361
446
|
- lib/sup/message.rb
|
362
447
|
- lib/sup/account.rb
|
@@ -368,6 +453,8 @@ files:
|
|
368
453
|
- lib/sup/person.rb
|
369
454
|
- lib/sup/colormap.rb
|
370
455
|
- lib/sup/maildir.rb
|
456
|
+
- lib/sup/interactive_lock.rb
|
457
|
+
- lib/sup/service/label_service.rb
|
371
458
|
- lib/sup/crypto.rb
|
372
459
|
- lib/sup/search.rb
|
373
460
|
- lib/sup/idle.rb
|
@@ -375,8 +462,6 @@ files:
|
|
375
462
|
- lib/sup/buffer.rb
|
376
463
|
- lib/sup/sent.rb
|
377
464
|
- lib/sup/logger.rb
|
378
|
-
- lib/sup/interactive-lock.rb
|
379
|
-
- lib/sup/horizontal-selector.rb
|
380
465
|
- lib/sup/draft.rb
|
381
466
|
- lib/sup/contact.rb
|
382
467
|
- lib/sup/update.rb
|
@@ -384,10 +469,11 @@ files:
|
|
384
469
|
- lib/sup/label.rb
|
385
470
|
- lib/sup/index.rb
|
386
471
|
- lib/sup/poll.rb
|
472
|
+
- lib/sup/message_chunks.rb
|
387
473
|
- lib/sup/rfc2047.rb
|
388
474
|
- lib/sup/textfield.rb
|
389
475
|
- lib/sup.rb
|
390
|
-
homepage:
|
476
|
+
homepage: http://supmua.org
|
391
477
|
licenses:
|
392
478
|
- GPL-2
|
393
479
|
post_install_message:
|
@@ -400,18 +486,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
400
486
|
- - ! '>='
|
401
487
|
- !ruby/object:Gem::Version
|
402
488
|
version: '0'
|
403
|
-
segments:
|
404
|
-
- 0
|
405
|
-
hash: 3761451823671182045
|
406
489
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
407
490
|
none: false
|
408
491
|
requirements:
|
409
492
|
- - ! '>='
|
410
493
|
- !ruby/object:Gem::Version
|
411
494
|
version: '0'
|
412
|
-
segments:
|
413
|
-
- 0
|
414
|
-
hash: 3761451823671182045
|
415
495
|
requirements: []
|
416
496
|
rubyforge_project:
|
417
497
|
rubygems_version: 1.8.25
|