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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 307d6f8c3448e730c14e9550fbfcbfee0c946f28953a9cb6a7070f75feda3033
4
- data.tar.gz: 553f15b7bf8dee1ad126111915d398b25181cd4f9aa50b252a980ecc5002ef63
3
+ metadata.gz: c7b332f900f4a22c6683220d746d4ff1565a0f9f4a69e5de1e7a107a1a17960e
4
+ data.tar.gz: b8d883e30dd1aa8fe65e839b350610755c66edf08da646579ec1aed1d3db2def
5
5
  SHA512:
6
- metadata.gz: 11a50621ff9ef4eacdfa5622ab0d2a9e2fa4dd2adf5cc162a1709686e5187db89ed0aa5d91a374d968e38e1caba62c87d0c384f3c1964a8b001338bbb3b3eb13
7
- data.tar.gz: 35902dcb5520b7ca17a6adab6833b2d2296e3655e2ff5cffb7843c018d5b7eb25a2779a3955833088730df95eff5bb02fecff2c8911653637cceafb8897ae7f0
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
@@ -0,0 +1,5 @@
1
+ # HOWTOs
2
+
3
+ ## Set the server for a Google Apps account
4
+
5
+ Use imap.gmail.com
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 "emails EMAIL FOLDER", "List emails in a folder"
25
- def emails(email, folder_name)
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 = {uid: uid, date: message.parsed.date.to_s, subject: message.parsed.subject}
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 "email EMAIL FOLDER UID", "Show an email"
53
- def email(email, folder_name, uid)
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
- loaded_message = folder_serializer.load(uid)
65
- raise "Message #{uid} not found in folder '#{folder_name}'" if !loaded_message
66
-
67
- puts loaded_message.supplied_body
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
@@ -1,87 +1,91 @@
1
1
  require "thor"
2
2
 
3
- class Imap::Backup::CLI < Thor
4
- require "imap/backup/cli/helpers"
3
+ module Imap; end
5
4
 
6
- autoload :Backup, "imap/backup/cli/backup"
7
- autoload :Folders, "imap/backup/cli/folders"
8
- autoload :Local, "imap/backup/cli/local"
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
- include Helpers
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
- default_task :backup
17
+ include Helpers
17
18
 
18
- def self.exit_on_failure?
19
- true
20
- end
19
+ default_task :backup
21
20
 
22
- def self.accounts_option
23
- method_option(
24
- "accounts",
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
- desc "backup [OPTIONS]", "Run the backup"
32
- long_desc <<~DESC
33
- Downloads any emails not yet present locally.
34
- Runs the backup for each configured account,
35
- or for those requested via the --accounts option.
36
- By default all folders, are backed up.
37
- The setup tool can be used to choose a specific list of folders to back up.
38
- DESC
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
- desc "folders [OPTIONS]", "This command is deprecated, use `imap-backup remote folders ACCOUNT`"
45
- long_desc <<~DESC
46
- Lists all folders of all configured accounts.
47
- This command is deprecated.
48
- Instead, use a combination of `imap-backup local accounts` to get the list of accounts,
49
- and `imap-backup remote folders ACCOUNT` to get the folder list.
50
- DESC
51
- accounts_option
52
- def folders
53
- Folders.new(symbolized(options)).run
54
- end
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
- desc "restore [OPTIONS]", "This command is deprecated, use `imap-backup restore ACCOUNT`"
57
- long_desc <<~DESC
58
- By default, restores all local emails to their respective servers.
59
- This command is deprecated.
60
- Instead, use `imap-backup restore ACCOUNT` to restore a single account.
61
- DESC
62
- accounts_option
63
- def restore
64
- Restore.new(symbolized(options)).run
65
- end
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
- desc "setup", "Configure imap-backup"
68
- long_desc <<~DESC
69
- A menu-driven command-line application used to configure imap-backup.
70
- Configure email accounts to back up.
71
- DESC
72
- def setup
73
- Setup.new().run
74
- end
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
- desc "status", "Show backup status"
77
- long_desc <<~DESC
78
- For each configured account and folder, lists the number of emails yet to be downloaded.
79
- DESC
80
- accounts_option
81
- def status
82
- Status.new(symbolized(options)).run
83
- end
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
- desc "local SUBCOMMAND [OPTIONS]", "View local info"
86
- subcommand "local", Local
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
@@ -22,7 +22,8 @@ module Imap::Backup
22
22
  Imap::Backup.logger.debug(
23
23
  "#{log_prefix} #{message['RFC822'].size} bytes"
24
24
  )
25
- serializer.save(uid, message)
25
+ body = message["RFC822"]
26
+ serializer.save(uid, body)
26
27
  end
27
28
  end
28
29
  end
@@ -40,7 +40,7 @@ module Imap::Backup
40
40
  @uids || []
41
41
  end
42
42
 
43
- def add(uid, message)
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 |uid, acc|
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
@@ -4,6 +4,6 @@ module Imap::Backup
4
4
  MAJOR = 4
5
5
  MINOR = 0
6
6
  REVISION = 0
7
- PRE = "rc2"
7
+ PRE = "rc6"
8
8
  VERSION = [MAJOR, MINOR, REVISION, PRE].compact.map(&:to_s).join(".")
9
9
  end
@@ -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(:message) { {"RFC822" => "blah"} }
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", message)
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.rc2
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-18 00:00:00.000000000 Z
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
- - imap-backup
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
@@ -1,8 +0,0 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- coverage
5
- pkg
6
- .rbenv-version
7
- vendor
8
- /tmp
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --require spec_helper
data/.rspec-all DELETED
@@ -1,4 +0,0 @@
1
- --color
2
- --format documentation
3
- --order random
4
- --require spec_helper
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
@@ -1,3 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec
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
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $LOAD_PATH.unshift(File.expand_path("../lib/", __dir__))
4
- require "imap/backup/cli"
5
-
6
- Imap::Backup::CLI.start(ARGV)
7
-
8
- __END__
9
-
data/tmp/.gitkeep DELETED
File without changes