larch 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY CHANGED
@@ -1,6 +1,13 @@
1
1
  Larch History
2
2
  ================================================================================
3
3
 
4
+ Version 1.1.2 (2013-01-24)
5
+ * Fixed an issue in which a folder containing only one message would not be
6
+ copied.
7
+ * Switched to the sqlite3 gem instead of amalgalite, since the latter fails
8
+ to compile against Ruby 1.9.3. This means you'll need to have SQLite
9
+ available on your system, since it's no longer bundled.
10
+
4
11
  Version 1.1.1 (2011-06-26)
5
12
  * Relaxed dependency versions.
6
13
 
@@ -9,8 +9,8 @@ Larch is particularly well-suited for copying email to, from, or between Gmail
9
9
  accounts.
10
10
 
11
11
  *Author*:: Ryan Grove (mailto:ryan@wonko.com)
12
- *Version*:: 1.1.0 (2011-01-22)
13
- *Copyright*:: Copyright (c) 2011 Ryan Grove. All rights reserved.
12
+ *Version*:: 1.1.2 (2013-01-24)
13
+ *Copyright*:: Copyright (c) 2013 Ryan Grove. All rights reserved.
14
14
  *License*:: GPL 2.0 (http://opensource.org/licenses/gpl-2.0.php)
15
15
  *Website*:: http://github.com/rgrove/larch
16
16
 
@@ -245,19 +245,6 @@ has originated outside of Gmail (Gmail itself does not corrupt the message).
245
245
  There is currently no known solution for this problem apart from deleting the
246
246
  corrupted messages.
247
247
 
248
- ==== Maximum folder name length of 40 characters
249
-
250
- Folders in Gmail IMAP are really just labels, and a nested folder hierarchy like
251
- "Foo\Bar\Baz" is actually just a single label with "\" characters in it. Since
252
- Gmail limits label names to 40 characters, it's impossible to create a nested
253
- folder hierarchy with a combined name length of more than 40 characters
254
- including delimiters.
255
-
256
- If you try to copy a too-long folder hierarchy to Gmail using Larch, Gmail will
257
- return a "Folder name is not allowed" error. To work around this, reorganize
258
- your mail into a shallower hierarchy on the source server to avoid hitting the
259
- folder name length limit.
260
-
261
248
  ==== Folder names cannot contain leading or trailing whitespace
262
249
 
263
250
  Most IMAP servers allow folder names to contain leading and trailing whitespace,
@@ -330,8 +317,9 @@ Larch was created and is maintained by Ryan Grove <ryan@wonko.com>.
330
317
 
331
318
  The following lovely people have also contributed to Larch:
332
319
 
333
- * Andrew Hobson <ahobson@damballa.com>
320
+ * Torey Heinz <torey@ihswebdesign.com>
334
321
  * Edgardo Hames <ehames@gmail.com>
322
+ * Andrew Hobson <ahobson@damballa.com>
335
323
  * Justin Mazzi <hh@mailheist.com>
336
324
 
337
325
  == Credit
@@ -347,7 +335,7 @@ Gray II).
347
335
 
348
336
  == License
349
337
 
350
- Copyright (c) 2011 Ryan Grove <ryan@wonko.com>
338
+ Copyright (c) 2013 Ryan Grove <ryan@wonko.com>
351
339
 
352
340
  Licensed under the GNU General Public License version 2.0.
353
341
 
@@ -121,7 +121,7 @@ module Larch
121
121
  end
122
122
 
123
123
  begin
124
- db = Sequel.amalgalite(:database => filename)
124
+ db = Sequel.sqlite(:database => filename)
125
125
  db.test_connection
126
126
  rescue => e
127
127
  @log.fatal "unable to open message database: #{e}"
@@ -143,6 +143,9 @@ class IMAP
143
143
 
144
144
  # Gmail doesn't allow folders with leading or trailing whitespace.
145
145
  name.strip! if @quirks[:gmail]
146
+
147
+ #Rackspace namespaces everything under INDEX.
148
+ name.sub!(/^|inbox\./i, "INBOX.") if @quirks[:rackspace] && name != 'INBOX'
146
149
 
147
150
  begin
148
151
  @mailboxes.fetch(name) do
@@ -264,6 +267,10 @@ class IMAP
264
267
  elsif host =~ /^imap(?:-ssl)?\.mail\.yahoo\.com$/
265
268
  @quirks[:yahoo] = true
266
269
  debug "looks like Yahoo! Mail"
270
+
271
+ elsif host =~ /emailsrvr\.com/
272
+ @quirks[:rackspace] = true
273
+ debug "looks like Rackspace Mail"
267
274
  end
268
275
  end
269
276
 
@@ -243,8 +243,8 @@ class Mailbox
243
243
 
244
244
  @db_mailbox.update(:uidvalidity => status['UIDVALIDITY'])
245
245
 
246
- need_flag_scan = flag_range && flag_range.max && flag_range.min && flag_range.max - flag_range.min > 0
247
- need_full_scan = full_range && full_range.max && full_range.min && full_range.max - full_range.min > 0
246
+ need_flag_scan = flag_range && flag_range.max && flag_range.min && flag_range.max - flag_range.min >= 0
247
+ need_full_scan = full_range && full_range.max && full_range.min && full_range.max - full_range.min >= 0
248
248
 
249
249
  return unless need_flag_scan || need_full_scan
250
250
 
@@ -582,6 +582,7 @@ class Mailbox
582
582
  end
583
583
 
584
584
  yield data unless data.nil?
585
+ return
585
586
  end
586
587
 
587
588
  blocks = []
@@ -1,9 +1,9 @@
1
1
  module Larch
2
2
  APP_NAME = 'Larch'
3
- APP_VERSION = '1.1.1'
3
+ APP_VERSION = '1.1.2'
4
4
  APP_AUTHOR = 'Ryan Grove'
5
5
  APP_EMAIL = 'ryan@wonko.com'
6
6
  APP_URL = 'https://github.com/rgrove/larch/'
7
- APP_COPYRIGHT = 'Copyright (c) 2011 Ryan Grove <ryan@wonko.com>. All ' <<
7
+ APP_COPYRIGHT = 'Copyright (c) 2013 Ryan Grove <ryan@wonko.com>. All ' <<
8
8
  'rights reserved.'
9
9
  end
metadata CHANGED
@@ -1,70 +1,87 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: larch
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.2
4
5
  prerelease:
5
- version: 1.1.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Ryan Grove
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-27 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: amalgalite
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2013-01-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: highline
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
23
- version: "1.0"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.5'
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: highline
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
30
25
  none: false
31
- requirements:
26
+ requirements:
32
27
  - - ~>
33
- - !ruby/object:Gem::Version
34
- version: "1.5"
35
- type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
28
+ - !ruby/object:Gem::Version
29
+ version: '1.5'
30
+ - !ruby/object:Gem::Dependency
38
31
  name: sequel
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '3.14'
38
+ type: :runtime
39
39
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '3.14'
46
+ - !ruby/object:Gem::Dependency
47
+ name: sqlite3
48
+ requirement: !ruby/object:Gem::Requirement
41
49
  none: false
42
- requirements:
50
+ requirements:
43
51
  - - ~>
44
- - !ruby/object:Gem::Version
45
- version: "3.14"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.3'
46
54
  type: :runtime
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: trollop
50
55
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ - !ruby/object:Gem::Dependency
63
+ name: trollop
64
+ requirement: !ruby/object:Gem::Requirement
52
65
  none: false
53
- requirements:
66
+ requirements:
54
67
  - - ~>
55
- - !ruby/object:Gem::Version
56
- version: "1.13"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.13'
57
70
  type: :runtime
58
- version_requirements: *id004
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '1.13'
59
78
  description:
60
79
  email: ryan@wonko.com
61
- executables:
80
+ executables:
62
81
  - larch
63
82
  extensions: []
64
-
65
83
  extra_rdoc_files: []
66
-
67
- files:
84
+ files:
68
85
  - HISTORY
69
86
  - LICENSE
70
87
  - README.rdoc
@@ -82,32 +99,28 @@ files:
82
99
  - lib/larch/monkeypatch/net/imap.rb
83
100
  - lib/larch/version.rb
84
101
  - lib/larch.rb
85
- homepage: https://github.com/rgrove/larch/
102
+ homepage: https://github.com/rgrove/larch
86
103
  licenses: []
87
-
88
104
  post_install_message:
89
105
  rdoc_options: []
90
-
91
- require_paths:
106
+ require_paths:
92
107
  - lib
93
- required_ruby_version: !ruby/object:Gem::Requirement
108
+ required_ruby_version: !ruby/object:Gem::Requirement
94
109
  none: false
95
- requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
98
113
  version: 1.8.6
99
- required_rubygems_version: !ruby/object:Gem::Requirement
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
115
  none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: "0"
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
105
120
  requirements: []
106
-
107
121
  rubyforge_project:
108
- rubygems_version: 1.8.5
122
+ rubygems_version: 1.8.24
109
123
  signing_key:
110
124
  specification_version: 3
111
125
  summary: Larch copies messages from one IMAP server to another. Awesomely.
112
126
  test_files: []
113
-