imap-backup 4.0.1 → 4.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -1
  3. data/docs/development.md +5 -12
  4. data/imap-backup.gemspec +1 -4
  5. data/lib/email/mboxrd/message.rb +6 -2
  6. data/lib/email/provider/apple_mail.rb +7 -0
  7. data/lib/email/provider/base.rb +8 -0
  8. data/lib/email/provider/fastmail.rb +7 -0
  9. data/lib/email/provider/gmail.rb +7 -0
  10. data/lib/email/provider/unknown.rb +11 -0
  11. data/lib/email/provider.rb +16 -26
  12. data/lib/imap/backup/account/connection.rb +19 -29
  13. data/lib/imap/backup/account/folder.rb +9 -10
  14. data/lib/imap/backup/account.rb +103 -0
  15. data/lib/imap/backup/cli/helpers.rb +14 -0
  16. data/lib/imap/backup/cli/local.rb +19 -25
  17. data/lib/imap/backup/cli/utils.rb +67 -10
  18. data/lib/imap/backup/client/apple_mail.rb +11 -0
  19. data/lib/imap/backup/client/default.rb +51 -0
  20. data/lib/imap/backup/configuration/account.rb +3 -1
  21. data/lib/imap/backup/configuration/connection_tester.rb +1 -1
  22. data/lib/imap/backup/configuration/store.rb +10 -5
  23. data/lib/imap/backup/downloader.rb +3 -4
  24. data/lib/imap/backup/serializer/mbox.rb +5 -0
  25. data/lib/imap/backup/serializer/mbox_store.rb +8 -8
  26. data/lib/imap/backup/thunderbird/mailbox_exporter.rb +58 -0
  27. data/lib/imap/backup/version.rb +1 -1
  28. data/lib/imap/backup.rb +1 -0
  29. data/lib/thunderbird/install.rb +16 -0
  30. data/lib/thunderbird/local_folder.rb +65 -0
  31. data/lib/thunderbird/profile.rb +30 -0
  32. data/lib/thunderbird/profiles.rb +71 -0
  33. data/lib/thunderbird/subdirectory.rb +96 -0
  34. data/lib/thunderbird/subdirectory_placeholder.rb +21 -0
  35. data/lib/thunderbird.rb +14 -0
  36. data/spec/features/restore_spec.rb +1 -1
  37. data/spec/features/support/email_server.rb +2 -2
  38. data/spec/unit/email/provider/apple_mail_spec.rb +7 -0
  39. data/spec/unit/email/provider/base_spec.rb +11 -0
  40. data/spec/unit/email/provider/fastmail_spec.rb +7 -0
  41. data/spec/unit/email/provider/gmail_spec.rb +7 -0
  42. data/spec/unit/email/provider_spec.rb +12 -25
  43. data/spec/unit/imap/backup/account/connection_spec.rb +26 -51
  44. data/spec/unit/imap/backup/account/folder_spec.rb +22 -22
  45. data/spec/unit/imap/backup/cli/local_spec.rb +70 -0
  46. data/spec/unit/imap/backup/cli/utils_spec.rb +50 -0
  47. data/spec/unit/imap/backup/client/default_spec.rb +22 -0
  48. data/spec/unit/imap/backup/configuration/connection_tester_spec.rb +3 -3
  49. data/spec/unit/imap/backup/configuration/store_spec.rb +25 -12
  50. data/spec/unit/imap/backup/downloader_spec.rb +1 -2
  51. metadata +68 -30
@@ -1,4 +1,5 @@
1
1
  require "json"
2
+ require "os"
2
3
 
3
4
  # rubocop:disable RSpec/PredicateMatcher
4
5
 
@@ -189,10 +190,16 @@ describe Imap::Backup::Configuration::Store do
189
190
  end
190
191
 
191
192
  context "when file permissions are too open" do
192
- it "sets them to 0600" do
193
- expect(FileUtils).to receive(:chmod).with(0o600, file_path)
193
+ context "when on UNIX" do
194
+ before do
195
+ allow(OS).to receive(:windows?) { false }
196
+ end
194
197
 
195
- subject.save
198
+ it "sets them to 0600" do
199
+ expect(FileUtils).to receive(:chmod).with(0o600, file_path)
200
+
201
+ subject.save
202
+ end
196
203
  end
197
204
  end
198
205
 
@@ -206,18 +213,24 @@ describe Imap::Backup::Configuration::Store do
206
213
  end
207
214
  end
208
215
 
209
- context "when the config file permissions are too lax" do
210
- let(:file_exists) { true }
211
-
216
+ context "when on UNIX" do
212
217
  before do
213
- allow(Imap::Backup::Utils).to receive(:check_permissions).
214
- with(file_path, 0o600).and_raise("Error")
218
+ allow(OS).to receive(:windows?) { false }
215
219
  end
216
220
 
217
- it "fails" do
218
- expect do
219
- subject.save
220
- end.to raise_error(RuntimeError, "Error")
221
+ context "when the config file permissions are too lax" do
222
+ let(:file_exists) { true }
223
+
224
+ before do
225
+ allow(Imap::Backup::Utils).to receive(:check_permissions).
226
+ with(file_path, 0o600).and_raise("Error")
227
+ end
228
+
229
+ it "fails" do
230
+ expect do
231
+ subject.save
232
+ end.to raise_error(RuntimeError, "Error")
233
+ end
221
234
  end
222
235
  end
223
236
  end
@@ -3,11 +3,10 @@ describe Imap::Backup::Downloader do
3
3
  subject { described_class.new(folder, serializer) }
4
4
 
5
5
  let(:body) { "blah" }
6
- let(:message) { {"RFC822" => body} }
7
6
  let(:folder) do
8
7
  instance_double(
9
8
  Imap::Backup::Account::Folder,
10
- fetch: message,
9
+ fetch: body,
11
10
  name: "folder",
12
11
  uids: folder_uids
13
12
  )
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.1
4
+ version: 4.0.5
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-12-06 00:00:00.000000000 Z
11
+ date: 2021-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: os
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -156,11 +170,7 @@ email:
156
170
  executables:
157
171
  - imap-backup
158
172
  extensions: []
159
- extra_rdoc_files:
160
- - README.md
161
- - docs/setup.md
162
- - docs/restore.md
163
- - docs/development.md
173
+ extra_rdoc_files: []
164
174
  files:
165
175
  - LICENSE
166
176
  - README.md
@@ -171,7 +181,13 @@ files:
171
181
  - imap-backup.gemspec
172
182
  - lib/email/mboxrd/message.rb
173
183
  - lib/email/provider.rb
184
+ - lib/email/provider/apple_mail.rb
185
+ - lib/email/provider/base.rb
186
+ - lib/email/provider/fastmail.rb
187
+ - lib/email/provider/gmail.rb
188
+ - lib/email/provider/unknown.rb
174
189
  - lib/imap/backup.rb
190
+ - lib/imap/backup/account.rb
175
191
  - lib/imap/backup/account/connection.rb
176
192
  - lib/imap/backup/account/folder.rb
177
193
  - lib/imap/backup/cli.rb
@@ -183,6 +199,8 @@ files:
183
199
  - lib/imap/backup/cli/setup.rb
184
200
  - lib/imap/backup/cli/status.rb
185
201
  - lib/imap/backup/cli/utils.rb
202
+ - lib/imap/backup/client/apple_mail.rb
203
+ - lib/imap/backup/client/default.rb
186
204
  - lib/imap/backup/configuration/account.rb
187
205
  - lib/imap/backup/configuration/asker.rb
188
206
  - lib/imap/backup/configuration/connection_tester.rb
@@ -195,10 +213,18 @@ files:
195
213
  - lib/imap/backup/serializer/mbox.rb
196
214
  - lib/imap/backup/serializer/mbox_enumerator.rb
197
215
  - lib/imap/backup/serializer/mbox_store.rb
216
+ - lib/imap/backup/thunderbird/mailbox_exporter.rb
198
217
  - lib/imap/backup/uploader.rb
199
218
  - lib/imap/backup/utils.rb
200
219
  - lib/imap/backup/version.rb
201
220
  - lib/retry_on_error.rb
221
+ - lib/thunderbird.rb
222
+ - lib/thunderbird/install.rb
223
+ - lib/thunderbird/local_folder.rb
224
+ - lib/thunderbird/profile.rb
225
+ - lib/thunderbird/profiles.rb
226
+ - lib/thunderbird/subdirectory.rb
227
+ - lib/thunderbird/subdirectory_placeholder.rb
202
228
  - spec/features/backup_spec.rb
203
229
  - spec/features/helper.rb
204
230
  - spec/features/restore_spec.rb
@@ -214,9 +240,16 @@ files:
214
240
  - spec/support/shared_examples/account_flagging.rb
215
241
  - spec/support/silence_logging.rb
216
242
  - spec/unit/email/mboxrd/message_spec.rb
243
+ - spec/unit/email/provider/apple_mail_spec.rb
244
+ - spec/unit/email/provider/base_spec.rb
245
+ - spec/unit/email/provider/fastmail_spec.rb
246
+ - spec/unit/email/provider/gmail_spec.rb
217
247
  - spec/unit/email/provider_spec.rb
218
248
  - spec/unit/imap/backup/account/connection_spec.rb
219
249
  - spec/unit/imap/backup/account/folder_spec.rb
250
+ - spec/unit/imap/backup/cli/local_spec.rb
251
+ - spec/unit/imap/backup/cli/utils_spec.rb
252
+ - spec/unit/imap/backup/client/default_spec.rb
220
253
  - spec/unit/imap/backup/configuration/account_spec.rb
221
254
  - spec/unit/imap/backup/configuration/asker_spec.rb
222
255
  - spec/unit/imap/backup/configuration/connection_tester_spec.rb
@@ -236,9 +269,7 @@ licenses:
236
269
  - MIT
237
270
  metadata: {}
238
271
  post_install_message:
239
- rdoc_options:
240
- - "--main"
241
- - README.md
272
+ rdoc_options: []
242
273
  require_paths:
243
274
  - lib
244
275
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -252,40 +283,47 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
283
  - !ruby/object:Gem::Version
253
284
  version: '0'
254
285
  requirements: []
255
- rubygems_version: 3.1.4
286
+ rubygems_version: 3.1.2
256
287
  signing_key:
257
288
  specification_version: 4
258
289
  summary: Backup GMail (or other IMAP) accounts to disk
259
290
  test_files:
260
291
  - spec/spec_helper.rb
292
+ - spec/fixtures/connection.yml
293
+ - spec/unit/email/provider/gmail_spec.rb
294
+ - spec/unit/email/provider/apple_mail_spec.rb
295
+ - spec/unit/email/provider/fastmail_spec.rb
296
+ - spec/unit/email/provider/base_spec.rb
297
+ - spec/unit/email/provider_spec.rb
298
+ - spec/unit/email/mboxrd/message_spec.rb
261
299
  - spec/unit/imap/backup_spec.rb
262
- - spec/unit/imap/backup/configuration/account_spec.rb
263
- - spec/unit/imap/backup/configuration/list_spec.rb
300
+ - spec/unit/imap/backup/cli/utils_spec.rb
301
+ - spec/unit/imap/backup/cli/local_spec.rb
302
+ - spec/unit/imap/backup/utils_spec.rb
303
+ - spec/unit/imap/backup/client/default_spec.rb
304
+ - spec/unit/imap/backup/downloader_spec.rb
305
+ - spec/unit/imap/backup/configuration/store_spec.rb
264
306
  - spec/unit/imap/backup/configuration/connection_tester_spec.rb
265
- - spec/unit/imap/backup/configuration/setup_spec.rb
266
307
  - spec/unit/imap/backup/configuration/asker_spec.rb
308
+ - spec/unit/imap/backup/configuration/setup_spec.rb
267
309
  - spec/unit/imap/backup/configuration/folder_chooser_spec.rb
268
- - spec/unit/imap/backup/configuration/store_spec.rb
310
+ - spec/unit/imap/backup/configuration/account_spec.rb
311
+ - spec/unit/imap/backup/configuration/list_spec.rb
312
+ - spec/unit/imap/backup/account/folder_spec.rb
313
+ - spec/unit/imap/backup/account/connection_spec.rb
269
314
  - spec/unit/imap/backup/serializer/mbox_spec.rb
270
315
  - spec/unit/imap/backup/serializer/mbox_store_spec.rb
271
316
  - spec/unit/imap/backup/serializer/mbox_enumerator_spec.rb
272
- - spec/unit/imap/backup/downloader_spec.rb
273
317
  - spec/unit/imap/backup/uploader_spec.rb
274
- - spec/unit/imap/backup/account/folder_spec.rb
275
- - spec/unit/imap/backup/account/connection_spec.rb
276
- - spec/unit/imap/backup/utils_spec.rb
277
- - spec/unit/email/mboxrd/message_spec.rb
278
- - spec/unit/email/provider_spec.rb
318
+ - spec/support/fixtures.rb
319
+ - spec/support/shared_examples/account_flagging.rb
320
+ - spec/support/higline_test_helpers.rb
321
+ - spec/support/silence_logging.rb
322
+ - spec/gather_rspec_coverage.rb
279
323
  - spec/features/backup_spec.rb
280
324
  - spec/features/helper.rb
281
- - spec/features/restore_spec.rb
282
- - spec/features/support/email_server.rb
283
325
  - spec/features/support/backup_directory.rb
284
- - spec/features/support/shared/connection_context.rb
285
326
  - spec/features/support/shared/message_fixtures.rb
286
- - spec/support/fixtures.rb
287
- - spec/support/silence_logging.rb
288
- - spec/support/higline_test_helpers.rb
289
- - spec/support/shared_examples/account_flagging.rb
290
- - spec/fixtures/connection.yml
291
- - spec/gather_rspec_coverage.rb
327
+ - spec/features/support/shared/connection_context.rb
328
+ - spec/features/support/email_server.rb
329
+ - spec/features/restore_spec.rb