imap-filter 0.0.3 → 0.0.4
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/.semver +1 -1
- data/.travis.yml +9 -0
- data/Gemfile.lock +4 -6
- data/README.org +8 -5
- data/imap-filter.gemspec +70 -69
- data/lib/imap-filter/cli.rb +3 -0
- data/lib/imap-filter/dsl.rb +2 -2
- data/lib/imap-filter/functionality.rb +50 -3
- data/lib/imap-filter/imap-filter.rb +4 -18
- data/lib/imap-filter/monkeypatches.rb +0 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a240cdefbc038f384351e9905758f500052df1d1
|
|
4
|
+
data.tar.gz: 768b6df466f6af225b9b82a31e6c5c8cbdff2694
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a08b499e9f1b7a400bb12b5966694b74f4f79205215e237e51add5defdf8dcb5224eb7b0ca67d763fe45109ecbbbde509d7e9029302f6b94c7005a4295ebe5b3
|
|
7
|
+
data.tar.gz: ffcba35a649f15287f9163a261be2eaca6f825b63231639cc00806d679be537f83e74ec3a83f931cef7d431cd60bfcf76dc3ef57d551665cd2d30babcdd6c4ce
|
data/.semver
CHANGED
data/.travis.yml
ADDED
data/Gemfile.lock
CHANGED
|
@@ -28,9 +28,9 @@ GEM
|
|
|
28
28
|
highline (1.7.8)
|
|
29
29
|
interception (0.5)
|
|
30
30
|
json (1.8.3)
|
|
31
|
-
juwelier (2.1.
|
|
31
|
+
juwelier (2.1.3)
|
|
32
32
|
builder
|
|
33
|
-
bundler (>= 1.
|
|
33
|
+
bundler (>= 1.13)
|
|
34
34
|
git (>= 1.2.5)
|
|
35
35
|
github_api
|
|
36
36
|
highline (>= 1.6.15)
|
|
@@ -44,16 +44,14 @@ GEM
|
|
|
44
44
|
multi_json (1.12.1)
|
|
45
45
|
multi_xml (0.5.5)
|
|
46
46
|
multipart-post (2.0.0)
|
|
47
|
-
nokogiri (1.6.8)
|
|
47
|
+
nokogiri (1.6.8.1)
|
|
48
48
|
mini_portile2 (~> 2.1.0)
|
|
49
|
-
pkg-config (~> 1.1.7)
|
|
50
49
|
oauth2 (1.2.0)
|
|
51
50
|
faraday (>= 0.8, < 0.10)
|
|
52
51
|
jwt (~> 1.0)
|
|
53
52
|
multi_json (~> 1.3)
|
|
54
53
|
multi_xml (~> 0.5)
|
|
55
54
|
rack (>= 1.2, < 3)
|
|
56
|
-
pkg-config (1.1.7)
|
|
57
55
|
pry (0.10.4)
|
|
58
56
|
coderay (~> 1.1.0)
|
|
59
57
|
method_source (~> 0.8.1)
|
|
@@ -121,4 +119,4 @@ DEPENDENCIES
|
|
|
121
119
|
yard (~> 0)
|
|
122
120
|
|
|
123
121
|
BUNDLED WITH
|
|
124
|
-
1.
|
|
122
|
+
1.13.6
|
data/README.org
CHANGED
|
@@ -281,14 +281,17 @@
|
|
|
281
281
|
*** Release Notes
|
|
282
282
|
| Version | Breif | Description |
|
|
283
283
|
|---------+------------------------+--------------------------------------------------------------------------------------------------------------------------------|
|
|
284
|
-
| v0.0.2 | Initial Release | |
|
|
285
284
|
| v0.0.3 | Fixed bug with timeout | On some lengthy remove copy/move operations, the source account can timeout. We do a simple NOOP to keep the connection alive. |
|
|
285
|
+
| v0.0.2 | Initial Release | |
|
|
286
286
|
|
|
287
287
|
*** Known Issues
|
|
288
|
-
| Date | Description
|
|
289
|
-
|
|
290
|
-
| 2016-09-25 | Remote copy / moves of HTML-based email does not work cleanly.
|
|
291
|
-
|
|
|
288
|
+
| Date | Description |
|
|
289
|
+
|------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
290
|
+
| 2016-09-25 | Remote copy / moves of HTML-based email does not work cleanly. |
|
|
291
|
+
| 2016-10-03 | Getting "Too many errors" ByeResponseError -- most likely from the errors of duplicate mailboxes (which is OK but some servers hate that). So I will have to check for the existence of the mailbox first before trying to create it. |
|
|
292
|
+
| | Timeout errors still persist in some cases. |
|
|
293
|
+
| | Need to capture all errors and provide human-readable responses, unless a certail verbosity level has been set. |
|
|
294
|
+
| | |
|
|
292
295
|
|
|
293
296
|
** Contributing to imap-filter
|
|
294
297
|
|
data/imap-filter.gemspec
CHANGED
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
|
-
# stub: imap-filter 0.0.
|
|
5
|
+
# stub: imap-filter 0.0.4 ruby lib
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |s|
|
|
8
|
-
s.name = "imap-filter"
|
|
9
|
-
s.version = "0.0.
|
|
8
|
+
s.name = "imap-filter".freeze
|
|
9
|
+
s.version = "0.0.4"
|
|
10
10
|
|
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
12
|
-
s.require_paths = ["lib"]
|
|
13
|
-
s.authors = ["Fred Mitchell"]
|
|
14
|
-
s.date = "2016-
|
|
15
|
-
s.description = "\n imap-filter is a Ruby implementation of an IMAP filtering application.\n it can handle multiple IMAP accounts, and create IMAP folders automatically\n where none exists.\n\n The imap-filter DSL makes it easy to filter. You can also do \"dry-runs\"\n to make sure what happens is what is expected."
|
|
16
|
-
s.email = "fred.mitchell@gmx.de"
|
|
17
|
-
s.executables = ["imap-filter"]
|
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
12
|
+
s.require_paths = ["lib".freeze]
|
|
13
|
+
s.authors = ["Fred Mitchell".freeze]
|
|
14
|
+
s.date = "2016-11-05"
|
|
15
|
+
s.description = "\n imap-filter is a Ruby implementation of an IMAP filtering application.\n it can handle multiple IMAP accounts, and create IMAP folders automatically\n where none exists.\n\n The imap-filter DSL makes it easy to filter. You can also do \"dry-runs\"\n to make sure what happens is what is expected.".freeze
|
|
16
|
+
s.email = "fred.mitchell@gmx.de".freeze
|
|
17
|
+
s.executables = ["imap-filter".freeze]
|
|
18
18
|
s.extra_rdoc_files = [
|
|
19
19
|
"LICENSE.txt",
|
|
20
20
|
"README.org"
|
|
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
|
24
24
|
".rspec",
|
|
25
25
|
".ruby-version",
|
|
26
26
|
".semver",
|
|
27
|
+
".travis.yml",
|
|
27
28
|
"Gemfile",
|
|
28
29
|
"Gemfile.lock",
|
|
29
30
|
"LICENSE.txt",
|
|
@@ -41,73 +42,73 @@ Gem::Specification.new do |s|
|
|
|
41
42
|
"spec/imap-filter_spec.rb",
|
|
42
43
|
"spec/spec_helper.rb"
|
|
43
44
|
]
|
|
44
|
-
s.homepage = "http://github.com/flajann2/imap-filter"
|
|
45
|
-
s.licenses = ["MIT"]
|
|
46
|
-
s.required_ruby_version = Gem::Requirement.new(">= 2.2")
|
|
47
|
-
s.rubygems_version = "2.
|
|
48
|
-
s.summary = "IMAP Scriptable filter for one or multiple Email accounts."
|
|
45
|
+
s.homepage = "http://github.com/flajann2/imap-filter".freeze
|
|
46
|
+
s.licenses = ["MIT".freeze]
|
|
47
|
+
s.required_ruby_version = Gem::Requirement.new(">= 2.2".freeze)
|
|
48
|
+
s.rubygems_version = "2.6.7".freeze
|
|
49
|
+
s.summary = "IMAP Scriptable filter for one or multiple Email accounts.".freeze
|
|
49
50
|
|
|
50
51
|
if s.respond_to? :specification_version then
|
|
51
52
|
s.specification_version = 4
|
|
52
53
|
|
|
53
54
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
54
|
-
s.add_runtime_dependency(%q<semver
|
|
55
|
-
s.add_runtime_dependency(%q<awesome_print
|
|
56
|
-
s.add_runtime_dependency(%q<text-table
|
|
57
|
-
s.add_runtime_dependency(%q<thor
|
|
58
|
-
s.add_runtime_dependency(%q<colorize
|
|
59
|
-
s.add_runtime_dependency(%q<aspector
|
|
60
|
-
s.add_development_dependency(%q<rspec
|
|
61
|
-
s.add_development_dependency(%q<yard
|
|
62
|
-
s.add_development_dependency(%q<rdoc
|
|
63
|
-
s.add_development_dependency(%q<bundler
|
|
64
|
-
s.add_development_dependency(%q<juwelier
|
|
65
|
-
s.add_development_dependency(%q<simplecov
|
|
66
|
-
s.add_development_dependency(%q<pry
|
|
67
|
-
s.add_development_dependency(%q<pry-byebug
|
|
68
|
-
s.add_development_dependency(%q<pry-doc
|
|
69
|
-
s.add_development_dependency(%q<pry-remote
|
|
70
|
-
s.add_development_dependency(%q<pry-rescue
|
|
71
|
-
s.add_development_dependency(%q<pry-stack_explorer
|
|
55
|
+
s.add_runtime_dependency(%q<semver>.freeze, ["~> 1"])
|
|
56
|
+
s.add_runtime_dependency(%q<awesome_print>.freeze, ["~> 1"])
|
|
57
|
+
s.add_runtime_dependency(%q<text-table>.freeze, ["~> 1"])
|
|
58
|
+
s.add_runtime_dependency(%q<thor>.freeze, ["~> 0"])
|
|
59
|
+
s.add_runtime_dependency(%q<colorize>.freeze, ["~> 0"])
|
|
60
|
+
s.add_runtime_dependency(%q<aspector>.freeze, ["~> 0"])
|
|
61
|
+
s.add_development_dependency(%q<rspec>.freeze, ["~> 2"])
|
|
62
|
+
s.add_development_dependency(%q<yard>.freeze, ["~> 0"])
|
|
63
|
+
s.add_development_dependency(%q<rdoc>.freeze, ["~> 3"])
|
|
64
|
+
s.add_development_dependency(%q<bundler>.freeze, ["~> 1"])
|
|
65
|
+
s.add_development_dependency(%q<juwelier>.freeze, ["~> 2"])
|
|
66
|
+
s.add_development_dependency(%q<simplecov>.freeze, ["~> 0"])
|
|
67
|
+
s.add_development_dependency(%q<pry>.freeze, ["~> 0"])
|
|
68
|
+
s.add_development_dependency(%q<pry-byebug>.freeze, ["~> 3"])
|
|
69
|
+
s.add_development_dependency(%q<pry-doc>.freeze, ["~> 0"])
|
|
70
|
+
s.add_development_dependency(%q<pry-remote>.freeze, ["~> 0"])
|
|
71
|
+
s.add_development_dependency(%q<pry-rescue>.freeze, ["~> 1"])
|
|
72
|
+
s.add_development_dependency(%q<pry-stack_explorer>.freeze, ["~> 0"])
|
|
72
73
|
else
|
|
73
|
-
s.add_dependency(%q<semver
|
|
74
|
-
s.add_dependency(%q<awesome_print
|
|
75
|
-
s.add_dependency(%q<text-table
|
|
76
|
-
s.add_dependency(%q<thor
|
|
77
|
-
s.add_dependency(%q<colorize
|
|
78
|
-
s.add_dependency(%q<aspector
|
|
79
|
-
s.add_dependency(%q<rspec
|
|
80
|
-
s.add_dependency(%q<yard
|
|
81
|
-
s.add_dependency(%q<rdoc
|
|
82
|
-
s.add_dependency(%q<bundler
|
|
83
|
-
s.add_dependency(%q<juwelier
|
|
84
|
-
s.add_dependency(%q<simplecov
|
|
85
|
-
s.add_dependency(%q<pry
|
|
86
|
-
s.add_dependency(%q<pry-byebug
|
|
87
|
-
s.add_dependency(%q<pry-doc
|
|
88
|
-
s.add_dependency(%q<pry-remote
|
|
89
|
-
s.add_dependency(%q<pry-rescue
|
|
90
|
-
s.add_dependency(%q<pry-stack_explorer
|
|
74
|
+
s.add_dependency(%q<semver>.freeze, ["~> 1"])
|
|
75
|
+
s.add_dependency(%q<awesome_print>.freeze, ["~> 1"])
|
|
76
|
+
s.add_dependency(%q<text-table>.freeze, ["~> 1"])
|
|
77
|
+
s.add_dependency(%q<thor>.freeze, ["~> 0"])
|
|
78
|
+
s.add_dependency(%q<colorize>.freeze, ["~> 0"])
|
|
79
|
+
s.add_dependency(%q<aspector>.freeze, ["~> 0"])
|
|
80
|
+
s.add_dependency(%q<rspec>.freeze, ["~> 2"])
|
|
81
|
+
s.add_dependency(%q<yard>.freeze, ["~> 0"])
|
|
82
|
+
s.add_dependency(%q<rdoc>.freeze, ["~> 3"])
|
|
83
|
+
s.add_dependency(%q<bundler>.freeze, ["~> 1"])
|
|
84
|
+
s.add_dependency(%q<juwelier>.freeze, ["~> 2"])
|
|
85
|
+
s.add_dependency(%q<simplecov>.freeze, ["~> 0"])
|
|
86
|
+
s.add_dependency(%q<pry>.freeze, ["~> 0"])
|
|
87
|
+
s.add_dependency(%q<pry-byebug>.freeze, ["~> 3"])
|
|
88
|
+
s.add_dependency(%q<pry-doc>.freeze, ["~> 0"])
|
|
89
|
+
s.add_dependency(%q<pry-remote>.freeze, ["~> 0"])
|
|
90
|
+
s.add_dependency(%q<pry-rescue>.freeze, ["~> 1"])
|
|
91
|
+
s.add_dependency(%q<pry-stack_explorer>.freeze, ["~> 0"])
|
|
91
92
|
end
|
|
92
93
|
else
|
|
93
|
-
s.add_dependency(%q<semver
|
|
94
|
-
s.add_dependency(%q<awesome_print
|
|
95
|
-
s.add_dependency(%q<text-table
|
|
96
|
-
s.add_dependency(%q<thor
|
|
97
|
-
s.add_dependency(%q<colorize
|
|
98
|
-
s.add_dependency(%q<aspector
|
|
99
|
-
s.add_dependency(%q<rspec
|
|
100
|
-
s.add_dependency(%q<yard
|
|
101
|
-
s.add_dependency(%q<rdoc
|
|
102
|
-
s.add_dependency(%q<bundler
|
|
103
|
-
s.add_dependency(%q<juwelier
|
|
104
|
-
s.add_dependency(%q<simplecov
|
|
105
|
-
s.add_dependency(%q<pry
|
|
106
|
-
s.add_dependency(%q<pry-byebug
|
|
107
|
-
s.add_dependency(%q<pry-doc
|
|
108
|
-
s.add_dependency(%q<pry-remote
|
|
109
|
-
s.add_dependency(%q<pry-rescue
|
|
110
|
-
s.add_dependency(%q<pry-stack_explorer
|
|
94
|
+
s.add_dependency(%q<semver>.freeze, ["~> 1"])
|
|
95
|
+
s.add_dependency(%q<awesome_print>.freeze, ["~> 1"])
|
|
96
|
+
s.add_dependency(%q<text-table>.freeze, ["~> 1"])
|
|
97
|
+
s.add_dependency(%q<thor>.freeze, ["~> 0"])
|
|
98
|
+
s.add_dependency(%q<colorize>.freeze, ["~> 0"])
|
|
99
|
+
s.add_dependency(%q<aspector>.freeze, ["~> 0"])
|
|
100
|
+
s.add_dependency(%q<rspec>.freeze, ["~> 2"])
|
|
101
|
+
s.add_dependency(%q<yard>.freeze, ["~> 0"])
|
|
102
|
+
s.add_dependency(%q<rdoc>.freeze, ["~> 3"])
|
|
103
|
+
s.add_dependency(%q<bundler>.freeze, ["~> 1"])
|
|
104
|
+
s.add_dependency(%q<juwelier>.freeze, ["~> 2"])
|
|
105
|
+
s.add_dependency(%q<simplecov>.freeze, ["~> 0"])
|
|
106
|
+
s.add_dependency(%q<pry>.freeze, ["~> 0"])
|
|
107
|
+
s.add_dependency(%q<pry-byebug>.freeze, ["~> 3"])
|
|
108
|
+
s.add_dependency(%q<pry-doc>.freeze, ["~> 0"])
|
|
109
|
+
s.add_dependency(%q<pry-remote>.freeze, ["~> 0"])
|
|
110
|
+
s.add_dependency(%q<pry-rescue>.freeze, ["~> 1"])
|
|
111
|
+
s.add_dependency(%q<pry-stack_explorer>.freeze, ["~> 0"])
|
|
111
112
|
end
|
|
112
113
|
end
|
|
113
114
|
|
data/lib/imap-filter/cli.rb
CHANGED
data/lib/imap-filter/dsl.rb
CHANGED
|
@@ -62,7 +62,7 @@ module ImapFilter
|
|
|
62
62
|
super
|
|
63
63
|
@name = name
|
|
64
64
|
instance_eval( &block )
|
|
65
|
-
_accounts[name] = self
|
|
65
|
+
_accounts[name] = self
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
def to_s
|
|
@@ -81,7 +81,7 @@ module ImapFilter
|
|
|
81
81
|
|
|
82
82
|
print "\n *** auth #{userid} pass #{pass}...".light_cyan unless _options[:verbose] < 2
|
|
83
83
|
imap.authenticate(auth_type, userid, pass)
|
|
84
|
-
@delim = imap.list('', '').first.delim
|
|
84
|
+
@delim = imap.list('', '').first.delim
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
def _close_connection
|
|
@@ -3,7 +3,55 @@ module ImapFilter
|
|
|
3
3
|
module Functionality
|
|
4
4
|
include Forwardable
|
|
5
5
|
include ImapFilter::DSL
|
|
6
|
+
@@facc_list = nil
|
|
7
|
+
|
|
8
|
+
def self._functional_accounts
|
|
9
|
+
@@facc_list ||= _accounts.map { |name, acc|
|
|
10
|
+
[name, FunctAccount.new( acc )]
|
|
11
|
+
}.to_h
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class FunctAccount
|
|
15
|
+
extend Forwardable
|
|
16
|
+
|
|
17
|
+
attr :dacc
|
|
18
|
+
|
|
19
|
+
def_delegators :@dacc, :name, :userid, :pass,
|
|
20
|
+
:fqdn, :use_ssl, :use_port,
|
|
21
|
+
:auth_type, :imap, :delim, :to_s,
|
|
22
|
+
:_open_connection, :_close_connection
|
|
6
23
|
|
|
24
|
+
def initialize acc
|
|
25
|
+
@dacc = acc
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def mbox_list
|
|
29
|
+
@mbox_list ||= @dacc.imap.list('', '*')
|
|
30
|
+
.map { |m| [m['name'], m['attr']] }
|
|
31
|
+
.map { |mbox, attr|
|
|
32
|
+
begin
|
|
33
|
+
[mbox,
|
|
34
|
+
[@dacc.imap.status(mbox, STATUS.values)
|
|
35
|
+
.map{ |k, v| "#{ISTAT[k]}:#{v}" }
|
|
36
|
+
.join(' '),
|
|
37
|
+
attr]]
|
|
38
|
+
rescue
|
|
39
|
+
nil
|
|
40
|
+
end }.compact.to_h
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def member? mbox
|
|
44
|
+
mbox_list.member? mbox
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def ensure_mailbox mbox
|
|
48
|
+
unless member? mbox
|
|
49
|
+
@dacc.imap.create mbox
|
|
50
|
+
@mbox_list[mbox] = [:new_mailbox, :new_mailbox]
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
7
55
|
FULL ='(UID RFC822.SIZE ENVELOPE BODY.PEEK[TEXT])'
|
|
8
56
|
BODYTEXT = 'BODY[TEXT]'
|
|
9
57
|
SUBJECTPEEKLIST = '(UID RFC822.SIZE BODY.PEEK[HEADER.FIELDS (SUBJECT)])'
|
|
@@ -27,7 +75,7 @@ module ImapFilter
|
|
|
27
75
|
a, b = ambox.split ':'
|
|
28
76
|
a, b = [nil, a] if b.nil?
|
|
29
77
|
a = nil if a == ''
|
|
30
|
-
acc = a.nil? ? default_account : _accounts[a.to_sym]
|
|
78
|
+
acc = FunctAccount.new( a.nil? ? default_account : _accounts[a.to_sym] )
|
|
31
79
|
mbox = b
|
|
32
80
|
[acc, mbox]
|
|
33
81
|
end
|
|
@@ -40,9 +88,8 @@ module ImapFilter
|
|
|
40
88
|
|
|
41
89
|
def ensure_mailbox account, mailbox
|
|
42
90
|
begin
|
|
43
|
-
account.
|
|
91
|
+
account.ensure_mailbox mailbox
|
|
44
92
|
rescue Net::IMAP::NoResponseError => e
|
|
45
|
-
# we ignore this because it -- probably -- means the mailbox already exists.
|
|
46
93
|
puts " *** ignored mailbox error: #{e}".red unless _options[:verbose] < 1
|
|
47
94
|
end
|
|
48
95
|
end
|
|
@@ -24,30 +24,16 @@ module ImapFilter
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
# List all mboxes of given account and their statuses
|
|
27
|
-
def self.list_mboxes account
|
|
28
|
-
account.imap.list('', '*')
|
|
29
|
-
.map { |m| [m['name'], m['attr']] }
|
|
30
|
-
.map { |mbox, attr|
|
|
31
|
-
begin
|
|
32
|
-
[mbox,
|
|
33
|
-
account.imap.status(mbox, STATUS.values)
|
|
34
|
-
.map{ |k, v| "#{ISTAT[k]}:#{v}" }
|
|
35
|
-
.join(' '),
|
|
36
|
-
attr]
|
|
37
|
-
rescue
|
|
38
|
-
nil
|
|
39
|
-
end }
|
|
40
|
-
.compact
|
|
41
|
-
end
|
|
42
27
|
|
|
43
28
|
def self.login_imap_accounts test: false
|
|
44
29
|
puts "====== #{test ? 'Test' : 'Login'} Accounts".light_yellow
|
|
45
|
-
|
|
30
|
+
_functional_accounts.each do |name, account|
|
|
46
31
|
print " #{name}...".light_white
|
|
47
32
|
begin
|
|
48
33
|
account._open_connection
|
|
49
|
-
puts "SUCCESS, delim #{account.delim}".light_green
|
|
50
|
-
|
|
34
|
+
puts "SUCCESS, delim #{account.delim}".light_green
|
|
35
|
+
|
|
36
|
+
account.mbox_list.each do |mbox, (stat, attr)|
|
|
51
37
|
print " #{mbox}".light_blue
|
|
52
38
|
print " #{stat}".light_red
|
|
53
39
|
puts " #{attr}".light_cyan
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: imap-filter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fred Mitchell
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-11-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: semver
|
|
@@ -282,6 +282,7 @@ files:
|
|
|
282
282
|
- ".rspec"
|
|
283
283
|
- ".ruby-version"
|
|
284
284
|
- ".semver"
|
|
285
|
+
- ".travis.yml"
|
|
285
286
|
- Gemfile
|
|
286
287
|
- Gemfile.lock
|
|
287
288
|
- LICENSE.txt
|
|
@@ -318,7 +319,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
318
319
|
version: '0'
|
|
319
320
|
requirements: []
|
|
320
321
|
rubyforge_project:
|
|
321
|
-
rubygems_version: 2.
|
|
322
|
+
rubygems_version: 2.6.7
|
|
322
323
|
signing_key:
|
|
323
324
|
specification_version: 4
|
|
324
325
|
summary: IMAP Scriptable filter for one or multiple Email accounts.
|