rgrove-larch 1.0.0.2 → 1.0.0.3
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.
- data/HISTORY +16 -0
- data/README.rdoc +110 -0
- data/bin/larch +2 -0
- data/lib/larch/logger.rb +6 -5
- data/lib/larch/version.rb +1 -1
- metadata +3 -1
data/HISTORY
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
Larch History
|
2
|
+
================================================================================
|
3
|
+
|
4
|
+
Version 1.0.1 (?)
|
5
|
+
* Much more robust handling of unexpected server disconnects and dropped
|
6
|
+
connections.
|
7
|
+
* Fetch message headers in blocks of up to 1024 at a time rather than all at
|
8
|
+
once, to prevent potential problems with certain servers when a mailbox
|
9
|
+
contains a huge number of messages.
|
10
|
+
* Don't try to trap POSIX signals on platforms that aren't likely to support
|
11
|
+
them, and don't die if the platform sniffing doesn't save us.
|
12
|
+
* Add a new "insane" logging level, which will output all IMAP commands and
|
13
|
+
responses to STDERR.
|
14
|
+
|
15
|
+
Version 1.0.0 (2009-03-17)
|
16
|
+
* First release.
|
data/README.rdoc
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
= Larch
|
2
|
+
|
3
|
+
Larch is a tool to copy messages from one IMAP server to another quickly and
|
4
|
+
safely. It's smart enough not to copy messages that already exist on the
|
5
|
+
destination and robust enough to deal with ornery or misbehaving servers.
|
6
|
+
|
7
|
+
Larch is particularly well-suited for copying email to, from, or between Gmail
|
8
|
+
accounts.
|
9
|
+
|
10
|
+
*Author*:: Ryan Grove (mailto:ryan@wonko.com)
|
11
|
+
*Version*:: 1.0.0 (2009-03-17)
|
12
|
+
*Copyright*:: Copyright (c) 2009 Ryan Grove. All rights reserved.
|
13
|
+
*License*:: GPL 2.0 (http://opensource.org/licenses/gpl-2.0.php)
|
14
|
+
*Website*:: http://github.com/rgrove/larch
|
15
|
+
|
16
|
+
== Installation
|
17
|
+
|
18
|
+
Install Larch via RubyGems:
|
19
|
+
|
20
|
+
gem install larch
|
21
|
+
|
22
|
+
== Usage
|
23
|
+
|
24
|
+
Larch is run from the command line. At a minimum, you must specify a source
|
25
|
+
server and a destination server in the form of IMAP URIs. You may also specify
|
26
|
+
one or more options:
|
27
|
+
|
28
|
+
larch --from <uri> --to <uri> [options]
|
29
|
+
|
30
|
+
For an overview of all available command-line options, run:
|
31
|
+
|
32
|
+
larch --help
|
33
|
+
|
34
|
+
Specify a source server and a destination server and Larch will prompt you for
|
35
|
+
the necessary usernames and passwords, then sync the contents of the source's
|
36
|
+
+INBOX+ folder to the destination:
|
37
|
+
|
38
|
+
larch --from imap://mail.example.com --to imap://imap.gmail.com
|
39
|
+
|
40
|
+
To connect using SSL, specify a URI beginning with <tt>imaps://</tt>:
|
41
|
+
|
42
|
+
larch --from imaps://mail.example.com --to imaps://imap.gmail.com
|
43
|
+
|
44
|
+
If you'd like to sync a folder other than +INBOX+, specify the source and
|
45
|
+
destination folders using <tt>--from-folder</tt> and <tt>--to-folder</tt>:
|
46
|
+
|
47
|
+
larch --from imaps://mail.example.com --to imaps://imap.gmail.com \
|
48
|
+
--from-folder "Sent Mail" --to-folder "Sent Mail"
|
49
|
+
|
50
|
+
By default Larch will create the specified folder if it doesn't already exist on
|
51
|
+
the destination server. To prevent this, add the <tt>--no-create-folder</tt>
|
52
|
+
option:
|
53
|
+
|
54
|
+
larch --from imaps://mail.example.com --to imaps://imap.gmail.com \
|
55
|
+
--from-folder "Sent Mail" --to-folder "Sent Mail" --no-create-folder
|
56
|
+
|
57
|
+
== Server Support
|
58
|
+
|
59
|
+
Larch should work well with any server that properly supports
|
60
|
+
IMAP4rev1[http://tools.ietf.org/html/rfc3501], and does its best to get along
|
61
|
+
with servers that have buggy, unreliable, or incomplete IMAP implementations.
|
62
|
+
|
63
|
+
Larch has been tested on and is known to work well with the following IMAP
|
64
|
+
servers:
|
65
|
+
|
66
|
+
* Dovecot
|
67
|
+
* Gmail
|
68
|
+
* Microsoft Exchange 2003
|
69
|
+
|
70
|
+
== Known Issues
|
71
|
+
|
72
|
+
Larch uses Ruby's Net::IMAP standard library for all IMAP operations. While
|
73
|
+
Net::IMAP is generally a very solid library, it contains a bug that can cause a
|
74
|
+
deadlock to occur if a connection drops unexpectedly (either due to network
|
75
|
+
issues or because the server closed the connection without warning) when the
|
76
|
+
server has already begun sending a response and Net::IMAP is waiting to receive
|
77
|
+
more data.
|
78
|
+
|
79
|
+
If this happens, Net::IMAP will continue waiting forever without passing control
|
80
|
+
back to Larch, and you will need to manually kill and restart Larch.
|
81
|
+
|
82
|
+
== Credit
|
83
|
+
|
84
|
+
The Larch::IMAP class borrows heavily from Sup[http://sup.rubyforge.org] by
|
85
|
+
William Morgan, the source code of which should be required reading if you're
|
86
|
+
doing anything with IMAP in Ruby.
|
87
|
+
|
88
|
+
Larch uses the excellent Trollop[http://trollop.rubyforge.org] command-line
|
89
|
+
option parser (also by William Morgan) and the
|
90
|
+
HighLine[http://highline.rubyforge.org] command-line IO library (by James Edward
|
91
|
+
Gray II).
|
92
|
+
|
93
|
+
== License
|
94
|
+
|
95
|
+
Copyright (c) 2009 Ryan Grove <ryan@wonko.com>
|
96
|
+
|
97
|
+
Licensed under the GNU General Public License version 2.0.
|
98
|
+
|
99
|
+
This program is free software; you can redistribute it and/or modify it under
|
100
|
+
the terms of version 2.0 of the GNU General Public License as published by the
|
101
|
+
Free Software Foundation.
|
102
|
+
|
103
|
+
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
104
|
+
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
105
|
+
PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
106
|
+
|
107
|
+
You should have received a copy of the GNU General Public License along with
|
108
|
+
this program; if not, visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
109
|
+
or write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
110
|
+
Boston, MA 02111-1307 USA.
|
data/bin/larch
CHANGED
@@ -74,6 +74,8 @@ EOS
|
|
74
74
|
# Go go go!
|
75
75
|
init(options[:verbosity])
|
76
76
|
|
77
|
+
Net::IMAP.debug = true if @log.level == :insane
|
78
|
+
|
77
79
|
source = IMAP.new(options[:from], options[:from_user], options[:from_pass],
|
78
80
|
:fast_scan => options[:fast_scan],
|
79
81
|
:max_retries => options[:max_retries])
|
data/lib/larch/logger.rb
CHANGED
@@ -4,11 +4,12 @@ class Logger
|
|
4
4
|
attr_reader :level, :output
|
5
5
|
|
6
6
|
LEVELS = {
|
7
|
-
:fatal
|
8
|
-
:error
|
9
|
-
:warn
|
10
|
-
:info
|
11
|
-
:debug
|
7
|
+
:fatal => 0,
|
8
|
+
:error => 1,
|
9
|
+
:warn => 2,
|
10
|
+
:info => 3,
|
11
|
+
:debug => 4,
|
12
|
+
:insane => 5
|
12
13
|
}
|
13
14
|
|
14
15
|
def initialize(level = :info, output = $stdout)
|
data/lib/larch/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rgrove-larch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Grove
|
@@ -41,7 +41,9 @@ extensions: []
|
|
41
41
|
extra_rdoc_files: []
|
42
42
|
|
43
43
|
files:
|
44
|
+
- HISTORY
|
44
45
|
- LICENSE
|
46
|
+
- README.rdoc
|
45
47
|
- bin/larch
|
46
48
|
- lib/larch.rb
|
47
49
|
- lib/larch/errors.rb
|