imap-backup 4.0.0.rc2 → 4.0.0.rc6
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/docs/restore.md +13 -0
- data/docs/setup.md +5 -0
- data/imap-backup.gemspec +11 -1
- data/lib/imap/backup/cli/local.rb +25 -9
- data/lib/imap/backup/cli.rb +77 -73
- data/lib/imap/backup/downloader.rb +2 -1
- data/lib/imap/backup/serializer/mbox_store.rb +3 -3
- data/lib/imap/backup/version.rb +1 -1
- data/spec/unit/imap/backup/downloader_spec.rb +3 -2
- metadata +6 -15
- data/.circleci/config.yml +0 -51
- data/.gitignore +0 -8
- data/.rspec +0 -2
- data/.rspec-all +0 -4
- data/.rubocop.yml +0 -21
- data/.rubocop_todo.yml +0 -129
- data/CHANGELOG.md +0 -19
- data/Gemfile +0 -3
- data/Rakefile +0 -18
- data/docker-compose.yml +0 -15
- data/imap-backup +0 -9
- data/tmp/.gitkeep +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7b332f900f4a22c6683220d746d4ff1565a0f9f4a69e5de1e7a107a1a17960e
|
4
|
+
data.tar.gz: b8d883e30dd1aa8fe65e839b350610755c66edf08da646579ec1aed1d3db2def
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ca8d8e00cbc067e365b71c6ebe356c13d2595f7718281dac2e03da366e0eddff9d34b17a42e6881274597a5211f17e3035d6b6e2d3d1e0ecf3ea9a64c48493d
|
7
|
+
data.tar.gz: 846f087342def5d962a6683a9ff7f082ddfa628ffe803258eb8e33b3cfc3d0dddb2cd4ab34e2a9e19dd39740499b5a87e7f362bd03ddbed4beacfce67475272d
|
data/docs/restore.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# FAQ
|
2
|
+
|
3
|
+
# How does restore work?
|
4
|
+
|
5
|
+
# What are all these 'INBOX.12345' files?
|
6
|
+
|
7
|
+
# Will my email get overwritten?
|
8
|
+
|
9
|
+
## How do I restore to a different service?
|
10
|
+
|
11
|
+
1. Run setup and add the new server, (but don't run any backups),
|
12
|
+
2. Rename of the existing backup directory to match the new email address,
|
13
|
+
3. Run the restore.
|
data/docs/setup.md
ADDED
data/imap-backup.gemspec
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.expand_path("lib", __dir__))
|
2
2
|
require "imap/backup/version"
|
3
|
+
require "rake/file_list"
|
3
4
|
|
4
5
|
Gem::Specification.new do |gem|
|
5
6
|
gem.name = "imap-backup"
|
@@ -8,8 +9,17 @@ Gem::Specification.new do |gem|
|
|
8
9
|
gem.authors = ["Joe Yates"]
|
9
10
|
gem.email = ["joe.g.yates@gmail.com"]
|
10
11
|
gem.homepage = "https://github.com/joeyates/imap-backup"
|
12
|
+
gem.licenses = ["MIT"]
|
13
|
+
|
14
|
+
# Build list of files manually, see also
|
15
|
+
# https://github.com/rubygems/rubygems/blob/master/bundler/bundler.gemspec#L37
|
16
|
+
gem.files = %w[bin/imap-backup]
|
17
|
+
gem.files += Dir.glob("docs/*{.png,.md}")
|
18
|
+
gem.files += Dir.glob("lib/**/*.rb")
|
19
|
+
gem.files += Dir.glob("spec/**/*{.rb,.yml}")
|
20
|
+
gem.files += %w[imap-backup.gemspec]
|
21
|
+
gem.files += %w[LICENSE README.md]
|
11
22
|
|
12
|
-
gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
|
13
23
|
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
14
24
|
gem.test_files = gem.files.grep(%r{^spec/})
|
15
25
|
gem.require_paths = ["lib"]
|
@@ -21,8 +21,8 @@ module Imap::Backup
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
desc "
|
25
|
-
def
|
24
|
+
desc "list EMAIL FOLDER", "List emails in a folder"
|
25
|
+
def list(email, folder_name)
|
26
26
|
connections = Imap::Backup::Configuration::List.new
|
27
27
|
account = connections.accounts.find { |a| a[:username] == email }
|
28
28
|
raise "#{email} is not a configured account" if !account
|
@@ -40,7 +40,11 @@ module Imap::Backup
|
|
40
40
|
uids = folder_serializer.uids
|
41
41
|
|
42
42
|
folder_serializer.each_message(uids).map do |uid, message|
|
43
|
-
m = {
|
43
|
+
m = {
|
44
|
+
uid: uid,
|
45
|
+
date: message.parsed.date.to_s,
|
46
|
+
subject: message.parsed.subject || ""
|
47
|
+
}
|
44
48
|
if m[:subject].length > max_subject
|
45
49
|
puts format("% 10<uid>u: %.#{max_subject - 3}<subject>s... - %<date>s", m)
|
46
50
|
else
|
@@ -49,8 +53,13 @@ module Imap::Backup
|
|
49
53
|
end
|
50
54
|
end
|
51
55
|
|
52
|
-
desc "
|
53
|
-
|
56
|
+
desc "show EMAIL FOLDER UID[,UID]", "Show one or more emails"
|
57
|
+
long_desc <<~DESC
|
58
|
+
Prints out the requested emails.
|
59
|
+
If more than one UID is given, they are separated by a header indicating
|
60
|
+
the UID.
|
61
|
+
DESC
|
62
|
+
def show(email, folder_name, uids)
|
54
63
|
connections = Imap::Backup::Configuration::List.new
|
55
64
|
account = connections.accounts.find { |a| a[:username] == email }
|
56
65
|
raise "#{email} is not a configured account" if !account
|
@@ -61,10 +70,17 @@ module Imap::Backup
|
|
61
70
|
end
|
62
71
|
raise "Folder '#{folder_name}' not found" if !folder_serializer
|
63
72
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
73
|
+
uid_list = uids.split(",")
|
74
|
+
folder_serializer.each_message(uid_list).each do |uid, message|
|
75
|
+
if uid_list.count > 1
|
76
|
+
puts <<~HEADER
|
77
|
+
#{"-" * 80}
|
78
|
+
#{format("| UID: %-71s |", uid)}
|
79
|
+
#{"-" * 80}
|
80
|
+
HEADER
|
81
|
+
end
|
82
|
+
puts message.supplied_body
|
83
|
+
end
|
68
84
|
end
|
69
85
|
end
|
70
86
|
end
|
data/lib/imap/backup/cli.rb
CHANGED
@@ -1,87 +1,91 @@
|
|
1
1
|
require "thor"
|
2
2
|
|
3
|
-
|
4
|
-
require "imap/backup/cli/helpers"
|
3
|
+
module Imap; end
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
autoload :Remote, "imap/backup/cli/remote"
|
10
|
-
autoload :Restore, "imap/backup/cli/restore"
|
11
|
-
autoload :Setup, "imap/backup/cli/setup"
|
12
|
-
autoload :Status, "imap/backup/cli/status"
|
5
|
+
module Imap::Backup
|
6
|
+
class CLI < Thor
|
7
|
+
require "imap/backup/cli/helpers"
|
13
8
|
|
14
|
-
|
9
|
+
autoload :Backup, "imap/backup/cli/backup"
|
10
|
+
autoload :Folders, "imap/backup/cli/folders"
|
11
|
+
autoload :Local, "imap/backup/cli/local"
|
12
|
+
autoload :Remote, "imap/backup/cli/remote"
|
13
|
+
autoload :Restore, "imap/backup/cli/restore"
|
14
|
+
autoload :Setup, "imap/backup/cli/setup"
|
15
|
+
autoload :Status, "imap/backup/cli/status"
|
15
16
|
|
16
|
-
|
17
|
+
include Helpers
|
17
18
|
|
18
|
-
|
19
|
-
true
|
20
|
-
end
|
19
|
+
default_task :backup
|
21
20
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
type: :string,
|
26
|
-
banner: "a comma-separated list of accounts (defaults to all configured accounts)",
|
27
|
-
aliases: ["-a"]
|
28
|
-
)
|
29
|
-
end
|
21
|
+
def self.exit_on_failure?
|
22
|
+
true
|
23
|
+
end
|
30
24
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
accounts_option
|
40
|
-
def backup
|
41
|
-
Backup.new(symbolized(options)).run
|
42
|
-
end
|
25
|
+
def self.accounts_option
|
26
|
+
method_option(
|
27
|
+
"accounts",
|
28
|
+
type: :string,
|
29
|
+
banner: "a comma-separated list of accounts (defaults to all configured accounts)",
|
30
|
+
aliases: ["-a"]
|
31
|
+
)
|
32
|
+
end
|
43
33
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
34
|
+
desc "backup [OPTIONS]", "Run the backup"
|
35
|
+
long_desc <<~DESC
|
36
|
+
Downloads any emails not yet present locally.
|
37
|
+
Runs the backup for each configured account,
|
38
|
+
or for those requested via the --accounts option.
|
39
|
+
By default all folders, are backed up.
|
40
|
+
The setup tool can be used to choose a specific list of folders to back up.
|
41
|
+
DESC
|
42
|
+
accounts_option
|
43
|
+
def backup
|
44
|
+
Backup.new(symbolized(options)).run
|
45
|
+
end
|
55
46
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
47
|
+
desc "folders [OPTIONS]", "This command is deprecated, use `imap-backup remote folders ACCOUNT`"
|
48
|
+
long_desc <<~DESC
|
49
|
+
Lists all folders of all configured accounts.
|
50
|
+
This command is deprecated.
|
51
|
+
Instead, use a combination of `imap-backup local accounts` to get the list of accounts,
|
52
|
+
and `imap-backup remote folders ACCOUNT` to get the folder list.
|
53
|
+
DESC
|
54
|
+
accounts_option
|
55
|
+
def folders
|
56
|
+
Folders.new(symbolized(options)).run
|
57
|
+
end
|
66
58
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
59
|
+
desc "restore [OPTIONS]", "This command is deprecated, use `imap-backup restore ACCOUNT`"
|
60
|
+
long_desc <<~DESC
|
61
|
+
By default, restores all local emails to their respective servers.
|
62
|
+
This command is deprecated.
|
63
|
+
Instead, use `imap-backup restore ACCOUNT` to restore a single account.
|
64
|
+
DESC
|
65
|
+
accounts_option
|
66
|
+
def restore
|
67
|
+
Restore.new(symbolized(options)).run
|
68
|
+
end
|
75
69
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
70
|
+
desc "setup", "Configure imap-backup"
|
71
|
+
long_desc <<~DESC
|
72
|
+
A menu-driven command-line application used to configure imap-backup.
|
73
|
+
Configure email accounts to back up.
|
74
|
+
DESC
|
75
|
+
def setup
|
76
|
+
Setup.new().run
|
77
|
+
end
|
84
78
|
|
85
|
-
|
86
|
-
|
79
|
+
desc "status", "Show backup status"
|
80
|
+
long_desc <<~DESC
|
81
|
+
For each configured account and folder, lists the number of emails yet to be downloaded.
|
82
|
+
DESC
|
83
|
+
accounts_option
|
84
|
+
def status
|
85
|
+
Status.new(symbolized(options)).run
|
86
|
+
end
|
87
|
+
|
88
|
+
desc "local SUBCOMMAND [OPTIONS]", "View local info"
|
89
|
+
subcommand "local", Local
|
90
|
+
end
|
87
91
|
end
|
@@ -40,7 +40,7 @@ module Imap::Backup
|
|
40
40
|
@uids || []
|
41
41
|
end
|
42
42
|
|
43
|
-
def add(uid,
|
43
|
+
def add(uid, body)
|
44
44
|
do_load if !loaded
|
45
45
|
raise "Can't add messages without uid_validity" if !uid_validity
|
46
46
|
|
@@ -52,7 +52,6 @@ module Imap::Backup
|
|
52
52
|
return
|
53
53
|
end
|
54
54
|
|
55
|
-
body = message["RFC822"]
|
56
55
|
mboxrd_message = Email::Mboxrd::Message.new(body)
|
57
56
|
mbox = nil
|
58
57
|
begin
|
@@ -84,7 +83,8 @@ module Imap::Backup
|
|
84
83
|
def each_message(required_uids)
|
85
84
|
return enum_for(:each_message, required_uids) if !block_given?
|
86
85
|
|
87
|
-
indexes = required_uids.each.with_object({}) do |
|
86
|
+
indexes = required_uids.each.with_object({}) do |uid_maybe_string, acc|
|
87
|
+
uid = uid_maybe_string.to_i
|
88
88
|
index = uids.find_index(uid)
|
89
89
|
acc[index] = uid if index
|
90
90
|
end
|
data/lib/imap/backup/version.rb
CHANGED
@@ -2,7 +2,8 @@ describe Imap::Backup::Downloader do
|
|
2
2
|
describe "#run" do
|
3
3
|
subject { described_class.new(folder, serializer) }
|
4
4
|
|
5
|
-
let(:
|
5
|
+
let(:body) { "blah" }
|
6
|
+
let(:message) { {"RFC822" => body} }
|
6
7
|
let(:folder) do
|
7
8
|
instance_double(
|
8
9
|
Imap::Backup::Account::Folder,
|
@@ -18,7 +19,7 @@ describe Imap::Backup::Downloader do
|
|
18
19
|
|
19
20
|
context "with fetched messages" do
|
20
21
|
specify "are saved" do
|
21
|
-
expect(serializer).to receive(:save).with("111",
|
22
|
+
expect(serializer).to receive(:save).with("111", body)
|
22
23
|
|
23
24
|
subject.run
|
24
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imap-backup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0.
|
4
|
+
version: 4.0.0.rc6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Yates
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -158,21 +158,12 @@ executables:
|
|
158
158
|
extensions: []
|
159
159
|
extra_rdoc_files: []
|
160
160
|
files:
|
161
|
-
- ".circleci/config.yml"
|
162
|
-
- ".gitignore"
|
163
|
-
- ".rspec"
|
164
|
-
- ".rspec-all"
|
165
|
-
- ".rubocop.yml"
|
166
|
-
- ".rubocop_todo.yml"
|
167
|
-
- CHANGELOG.md
|
168
|
-
- Gemfile
|
169
161
|
- LICENSE
|
170
162
|
- README.md
|
171
|
-
- Rakefile
|
172
163
|
- bin/imap-backup
|
173
|
-
- docker-compose.yml
|
174
164
|
- docs/docker-imap.md
|
175
|
-
-
|
165
|
+
- docs/restore.md
|
166
|
+
- docs/setup.md
|
176
167
|
- imap-backup.gemspec
|
177
168
|
- lib/email/mboxrd/message.rb
|
178
169
|
- lib/email/provider.rb
|
@@ -235,9 +226,9 @@ files:
|
|
235
226
|
- spec/unit/imap/backup/uploader_spec.rb
|
236
227
|
- spec/unit/imap/backup/utils_spec.rb
|
237
228
|
- spec/unit/imap/backup_spec.rb
|
238
|
-
- tmp/.gitkeep
|
239
229
|
homepage: https://github.com/joeyates/imap-backup
|
240
|
-
licenses:
|
230
|
+
licenses:
|
231
|
+
- MIT
|
241
232
|
metadata: {}
|
242
233
|
post_install_message:
|
243
234
|
rdoc_options: []
|
data/.circleci/config.yml
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
version: 2.1
|
2
|
-
|
3
|
-
orbs:
|
4
|
-
ruby: circleci/ruby@1.1.2
|
5
|
-
|
6
|
-
references:
|
7
|
-
restore: &restore
|
8
|
-
restore_cache:
|
9
|
-
keys:
|
10
|
-
- 'imap.backup.<< parameters.ruby_version >>.{{checksum "imap-backup.gemspec"}}'
|
11
|
-
bundle: &bundle
|
12
|
-
run:
|
13
|
-
name: Install Ruby dependencies
|
14
|
-
command: |
|
15
|
-
bundle install
|
16
|
-
bundle clean
|
17
|
-
save: &save
|
18
|
-
save_cache:
|
19
|
-
key: 'imap.backup.<< parameters.ruby_version >>.{{checksum "imap-backup.gemspec"}}'
|
20
|
-
paths:
|
21
|
-
- vendor/bundle
|
22
|
-
|
23
|
-
jobs:
|
24
|
-
test:
|
25
|
-
parameters:
|
26
|
-
ruby_version:
|
27
|
-
type: string
|
28
|
-
environment:
|
29
|
-
BUNDLE_PATH: ./vendor/bundle
|
30
|
-
DOCKER_IMAP_SERVER: 993
|
31
|
-
docker:
|
32
|
-
- image: "cimg/ruby:<< parameters.ruby_version >>"
|
33
|
-
- image: antespi/docker-imap-devel:latest
|
34
|
-
environment:
|
35
|
-
MAIL_ADDRESS: address@example.org
|
36
|
-
MAIL_PASS: pass
|
37
|
-
MAILNAME: example.org
|
38
|
-
steps:
|
39
|
-
- checkout
|
40
|
-
- <<: *restore
|
41
|
-
- <<: *bundle
|
42
|
-
- <<: *save
|
43
|
-
- ruby/rspec-test
|
44
|
-
|
45
|
-
workflows:
|
46
|
-
all-tests:
|
47
|
-
jobs:
|
48
|
-
- test:
|
49
|
-
matrix:
|
50
|
-
parameters:
|
51
|
-
ruby_version: ["2.5", "2.6", "2.7"]
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.rspec-all
DELETED
data/.rubocop.yml
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
inherit_from:
|
2
|
-
- https://raw.githubusercontent.com/leanpanda-com/rubocop/0.89.1/rubocop-rspec.yml
|
3
|
-
- .rubocop_todo.yml
|
4
|
-
|
5
|
-
AllCops:
|
6
|
-
Exclude:
|
7
|
-
- "bin/stubs/*"
|
8
|
-
DisplayCopNames:
|
9
|
-
Enabled: true
|
10
|
-
|
11
|
-
RSpec/ContextWording:
|
12
|
-
Exclude:
|
13
|
-
- "spec/features/**/*"
|
14
|
-
RSpec/LeakyConstantDeclaration:
|
15
|
-
Enabled: false
|
16
|
-
RSpec/MessageSpies:
|
17
|
-
Enabled: false
|
18
|
-
RSpec/ReturnFromStub:
|
19
|
-
Enabled: false
|
20
|
-
Style/EmptyCaseCondition:
|
21
|
-
Enabled: false
|
data/.rubocop_todo.yml
DELETED
@@ -1,129 +0,0 @@
|
|
1
|
-
# This configuration was generated by
|
2
|
-
# `rubocop --auto-gen-config`
|
3
|
-
# on 2021-09-21 15:30:34 UTC using RuboCop version 1.21.0.
|
4
|
-
# The point is for the user to remove these configuration records
|
5
|
-
# one by one as the offenses are removed from the code base.
|
6
|
-
# Note that changes in the inspected code, or installation of new
|
7
|
-
# versions of RuboCop, may require this file to be generated again.
|
8
|
-
|
9
|
-
# Offense count: 1
|
10
|
-
# Cop supports --auto-correct.
|
11
|
-
Layout/ElseAlignment:
|
12
|
-
Exclude:
|
13
|
-
- 'lib/imap/backup/configuration/gmail_oauth2.rb'
|
14
|
-
|
15
|
-
# Offense count: 2
|
16
|
-
# Cop supports --auto-correct.
|
17
|
-
# Configuration parameters: EmptyLineBetweenMethodDefs, EmptyLineBetweenClassDefs, EmptyLineBetweenModuleDefs, AllowAdjacentOneLineDefs, NumberOfEmptyLines.
|
18
|
-
Layout/EmptyLineBetweenDefs:
|
19
|
-
Exclude:
|
20
|
-
- 'lib/google/auth/stores/in_memory_token_store.rb'
|
21
|
-
|
22
|
-
# Offense count: 1
|
23
|
-
# Cop supports --auto-correct.
|
24
|
-
# Configuration parameters: EnforcedStyleAlignWith, Severity.
|
25
|
-
# SupportedStylesAlignWith: keyword, variable, start_of_line
|
26
|
-
Layout/EndAlignment:
|
27
|
-
Exclude:
|
28
|
-
- 'lib/imap/backup/configuration/gmail_oauth2.rb'
|
29
|
-
|
30
|
-
# Offense count: 1
|
31
|
-
# Cop supports --auto-correct.
|
32
|
-
# Configuration parameters: Width, IgnoredPatterns.
|
33
|
-
Layout/IndentationWidth:
|
34
|
-
Exclude:
|
35
|
-
- 'lib/imap/backup/configuration/gmail_oauth2.rb'
|
36
|
-
|
37
|
-
# Offense count: 34
|
38
|
-
# Configuration parameters: AllowedMethods.
|
39
|
-
# AllowedMethods: enums
|
40
|
-
Lint/ConstantDefinitionInBlock:
|
41
|
-
Exclude:
|
42
|
-
- 'lib/imap/backup/configuration/asker.rb'
|
43
|
-
- 'spec/unit/gmail/authenticator_spec.rb'
|
44
|
-
- 'spec/unit/google/auth/stores/in_memory_token_store_spec.rb'
|
45
|
-
- 'spec/unit/imap/backup/account/connection_spec.rb'
|
46
|
-
- 'spec/unit/imap/backup/account/folder_spec.rb'
|
47
|
-
- 'spec/unit/imap/backup/configuration/account_spec.rb'
|
48
|
-
- 'spec/unit/imap/backup/configuration/gmail_oauth2_spec.rb'
|
49
|
-
|
50
|
-
# Offense count: 2
|
51
|
-
# Cop supports --auto-correct.
|
52
|
-
# Configuration parameters: AllowComments.
|
53
|
-
Lint/UselessMethodDefinition:
|
54
|
-
Exclude:
|
55
|
-
- 'lib/imap/backup/configuration/account.rb'
|
56
|
-
- 'lib/imap/backup/configuration/asker.rb'
|
57
|
-
|
58
|
-
# Offense count: 11
|
59
|
-
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
|
60
|
-
Metrics/AbcSize:
|
61
|
-
Max: 33
|
62
|
-
|
63
|
-
# Offense count: 3
|
64
|
-
# Configuration parameters: CountComments, CountAsOne.
|
65
|
-
Metrics/ClassLength:
|
66
|
-
Max: 172
|
67
|
-
|
68
|
-
# Offense count: 19
|
69
|
-
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
|
70
|
-
Metrics/MethodLength:
|
71
|
-
Max: 26
|
72
|
-
|
73
|
-
# Offense count: 2
|
74
|
-
# Configuration parameters: CountComments, CountAsOne.
|
75
|
-
Metrics/ModuleLength:
|
76
|
-
Max: 145
|
77
|
-
|
78
|
-
# Offense count: 2
|
79
|
-
# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers.
|
80
|
-
# SupportedStyles: snake_case, normalcase, non_integer
|
81
|
-
# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339
|
82
|
-
Naming/VariableNumber:
|
83
|
-
Exclude:
|
84
|
-
- 'lib/email/provider.rb'
|
85
|
-
- 'spec/unit/email/provider_spec.rb'
|
86
|
-
|
87
|
-
# Offense count: 209
|
88
|
-
# Configuration parameters: AllowSubject.
|
89
|
-
RSpec/MultipleMemoizedHelpers:
|
90
|
-
Max: 16
|
91
|
-
|
92
|
-
# Offense count: 49
|
93
|
-
RSpec/NestedGroups:
|
94
|
-
Max: 6
|
95
|
-
|
96
|
-
# Offense count: 8
|
97
|
-
# Cop supports --auto-correct.
|
98
|
-
# Configuration parameters: EnforcedStyle.
|
99
|
-
# SupportedStyles: nested, compact
|
100
|
-
Style/ClassAndModuleChildren:
|
101
|
-
Exclude:
|
102
|
-
- 'lib/email/mboxrd/message.rb'
|
103
|
-
- 'lib/imap/backup/downloader.rb'
|
104
|
-
- 'lib/imap/backup/serializer.rb'
|
105
|
-
- 'lib/imap/backup/serializer/mbox.rb'
|
106
|
-
- 'lib/imap/backup/serializer/mbox_enumerator.rb'
|
107
|
-
- 'lib/imap/backup/serializer/mbox_store.rb'
|
108
|
-
- 'lib/imap/backup/uploader.rb'
|
109
|
-
- 'lib/imap/backup/utils.rb'
|
110
|
-
|
111
|
-
# Offense count: 1
|
112
|
-
# Cop supports --auto-correct.
|
113
|
-
Style/RedundantBegin:
|
114
|
-
Exclude:
|
115
|
-
- 'lib/imap/backup/account/connection.rb'
|
116
|
-
|
117
|
-
# Offense count: 1
|
118
|
-
# Cop supports --auto-correct.
|
119
|
-
# Configuration parameters: MinSize, WordRegex.
|
120
|
-
# SupportedStyles: percent, brackets
|
121
|
-
Style/WordArray:
|
122
|
-
EnforcedStyle: percent
|
123
|
-
|
124
|
-
# Offense count: 1
|
125
|
-
# Cop supports --auto-correct.
|
126
|
-
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
127
|
-
# URISchemes: http, https
|
128
|
-
Layout/LineLength:
|
129
|
-
Max: 133
|
data/CHANGELOG.md
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
# Change Log
|
2
|
-
All notable changes to this project will be documented in this file.
|
3
|
-
|
4
|
-
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
5
|
-
and this project adheres to [Semantic Versioning](http://semver.org/).
|
6
|
-
|
7
|
-
## [4.0.0.rc2] - 2021-11-18
|
8
|
-
|
9
|
-
### Removed
|
10
|
-
|
11
|
-
* GMail OAuth2 support. Tokens only last a few days, so this authentication
|
12
|
-
method is not usable for automated backups.
|
13
|
-
|
14
|
-
## [4.0.0.rc1] - 2021-11-17
|
15
|
-
|
16
|
-
### Added
|
17
|
-
|
18
|
-
* `local` commands to list accounts, folders and emails and to view single
|
19
|
-
emails.
|
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
require "rspec/core/rake_task"
|
3
|
-
require "rubocop/rake_task"
|
4
|
-
|
5
|
-
RSpec::Core::RakeTask.new do |t|
|
6
|
-
t.pattern = "spec/**/*_spec.rb"
|
7
|
-
end
|
8
|
-
|
9
|
-
desc "Run RSpec examples, excluding ones relying on Docker IMAP"
|
10
|
-
RSpec::Core::RakeTask.new("no-docker") do |t|
|
11
|
-
t.pattern = "spec/**/*_spec.rb"
|
12
|
-
t.rspec_opts = "--tag ~docker"
|
13
|
-
end
|
14
|
-
|
15
|
-
RuboCop::RakeTask.new
|
16
|
-
|
17
|
-
task default: :spec
|
18
|
-
task default: :rubocop
|
data/docker-compose.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# This file adapted from github.com/antespi/docker-imap-devel
|
2
|
-
version: "3"
|
3
|
-
|
4
|
-
services:
|
5
|
-
imap:
|
6
|
-
image: antespi/docker-imap-devel:latest
|
7
|
-
container_name: imap
|
8
|
-
ports:
|
9
|
-
- "8025:25"
|
10
|
-
- "8143:143"
|
11
|
-
- "8993:993"
|
12
|
-
environment:
|
13
|
-
- MAILNAME=example.org
|
14
|
-
- MAIL_ADDRESS=address@example.org
|
15
|
-
- MAIL_PASS=pass
|
data/imap-backup
DELETED
data/tmp/.gitkeep
DELETED
File without changes
|