vmail 2.5.8 → 2.5.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -43,7 +43,10 @@ problem, and mention what system you're using. You might want to try
43
43
 
44
44
  sudo gem install vmail
45
45
 
46
- to see if that puts `vmail` on your PATH.
46
+ to see if that puts `vmail` on your PATH. (If you're using [rbenv], running
47
+ `rbenv rehash` should do the trick.)
48
+
49
+ [rbenv]: https://github.com/sstephenson/rbenv
47
50
 
48
51
  Vmail is evolving rapidly. To update to the latest version, simply run the
49
52
  installation command again.
@@ -59,9 +62,9 @@ during execution (see below).
59
62
 
60
63
  ## Configuration file
61
64
 
62
- To run Vmail, create a yaml file called `.vmailrc` and save it either in the
63
- current directory (the directory from which you launch Vmail) or in your home
64
- directory.
65
+ To run Vmail, create a yaml file called `.vmailrc` and save it either in
66
+ ~/.vmail/defaults/ or in your home directory. If you do the latter,
67
+ Vmail will move the file to ~/.vmail/defaults/ when it starts up.
65
68
 
66
69
  The `.vmailrc` file should look something like this. Substitute your own values.
67
70
 
@@ -110,11 +113,11 @@ configuration options][firewall] that you can use.
110
113
  ## Contacts autocompletion
111
114
 
112
115
  Vmail uses Vim autocompletion to help you auto-complete email addresses.
113
- To use this feature, generate a `vmail-contacts.txt` file in the current or
114
- home directory. This is a simple list of your email contacts.
115
- Invoking Vmail with the `-g` option generates this file for you by
116
- collecting all the recipients and cc's from your last 500 sent
117
- emails. You can adjust this number by using `-g` with a number argument.
116
+ To use this feature, generate a `vmail-contacts.txt` file. This is a
117
+ simple list of your email contacts. Invoking Vmail with the `-g` option
118
+ generates this file for you by collecting all the recipients and cc's
119
+ from your last 500 sent emails. You can adjust this number by using `-g`
120
+ with a number argument.
118
121
 
119
122
  After Vmail generates this file for you, you can edit it however and whenever
120
123
  you want, as long as there is one address per line.
@@ -463,9 +466,10 @@ invoke Vmail will show Vmail's logging output while MacVim is running. To quit
463
466
  Vmail, first quit the MacVim window running Vmail, and then press CTRL-c in the
464
467
  original terminal window to stop the Vmail process.
465
468
 
466
- ## Vmail file byproducts
469
+ ## Alternate VMAIL_HOME working directories
467
470
 
468
- Vmail generates a few files in the current directory when it is running:
471
+ Vmail generates a directory called ~/.vmail/defaults and uses this as
472
+ the default `VMAIL_HOME`. Vmail places these files in it:
469
473
 
470
474
  * `vmail.db` is a sqlite3 database. Vmail uses this to cache messages it has seen..
471
475
 
@@ -479,6 +483,10 @@ Finally, Vmail logs output to a `vmail.log` file which it creates in the
479
483
  current directory. You can tail this file in a separate terminal window to see
480
484
  what's going on behind the scenes as you use Vmail.
481
485
 
486
+ You can use up other working directories by setting the `VMAIL_HOME`
487
+ environment variable before or when you launch Vmail. Make sure you
488
+ place a `.vmailrc` configuration in that directory.
489
+
482
490
  ## Is my Gmail password secure?
483
491
 
484
492
  In short, yes. Vmail uses TLS ([Transport Layer Security][tls]) to perform IMAP
@@ -1,6 +1,5 @@
1
1
  require 'vmail/version'
2
2
  require 'vmail/options'
3
- require 'vmail/imap_client'
4
3
  require 'vmail/query'
5
4
  require 'vmail/message_formatter'
6
5
 
@@ -16,17 +15,6 @@ module Vmail
16
15
  exit
17
16
  end
18
17
 
19
- # check database version
20
- print "Checking vmail.db version... "
21
- db = Sequel.connect 'sqlite://vmail.db'
22
- if (r = db[:version].first) && r[:vmail_version] != Vmail::VERSION
23
- print "Vmail database version is outdated. Recreating.\n"
24
- `rm vmail.db`
25
- `sqlite3 vmail.db < #{CREATE_TABLE_SCRIPT}`
26
- else
27
- print "OK\n"
28
- end
29
-
30
18
  vim = ENV['VMAIL_VIM'] || 'vim'
31
19
  ENV['VMAIL_BROWSER'] ||= if RUBY_PLATFORM.downcase.include?('linux')
32
20
  tools = ['gnome-open', 'kfmclient-exec', 'xdg-open', 'konqueror']
@@ -45,6 +33,18 @@ module Vmail
45
33
  puts "Setting VMAIL_BROWSER to '#{ENV['VMAIL_BROWSER']}'"
46
34
  check_lynx
47
35
 
36
+ working_dir = ENV['VMAIL_HOME'] || "#{ENV['HOME']}/.vmail/default"
37
+ `mkdir -p #{working_dir}`
38
+ # legacy migration: move files into VMAIL_HOME
39
+ ['.vmailrc', 'vmail.log', 'vmail.db', 'vmail-contacts.txt', 'compose_message.txt', 'attachments'].each do |x|
40
+ if File.size?(x)
41
+ c = "mv #{x} #{working_dir}"
42
+ puts c
43
+ %x{#{c}}
44
+ end
45
+ end
46
+ puts "Changing working directory to #{working_dir}"
47
+ Dir.chdir(working_dir)
48
48
  opts = Vmail::Options.new(ARGV)
49
49
  opts.config
50
50
  config = opts.config
@@ -67,6 +67,11 @@ module Vmail
67
67
  end
68
68
  end
69
69
 
70
+ puts "WORKING DIR: #{Dir.pwd}"
71
+
72
+ # require after the working dir is set
73
+ require 'vmail/imap_client'
74
+
70
75
  drb_uri = begin
71
76
  Vmail::ImapClient.daemon config
72
77
  rescue
@@ -1,12 +1,28 @@
1
1
  require 'sequel'
2
2
 
3
+ # check database version
4
+
3
5
  CREATE_TABLE_SCRIPT = File.expand_path("../../../db/create.sql", __FILE__)
6
+ print "Checking vmail.db version... "
7
+ db = Sequel.connect 'sqlite://vmail.db'
8
+ if db.tables.include?(:version) &&
9
+ (r = db[:version].first) &&
10
+ r[:vmail_version] != Vmail::VERSION
11
+
12
+ print "Vmail database version is outdated. Recreating.\n"
13
+ `rm vmail.db`
14
+ `sqlite3 vmail.db < #{CREATE_TABLE_SCRIPT}`
15
+ else
16
+ print "OK\n"
17
+ end
18
+ db.disconnect
4
19
 
5
20
  if !File.size?('vmail.db')
6
21
  puts `sqlite3 vmail.db < #{CREATE_TABLE_SCRIPT}`
7
22
  end
8
23
 
9
24
  DB = Sequel.connect 'sqlite://vmail.db'
25
+ puts "Connecting to database"
10
26
 
11
27
  if DB[:version].count == 0
12
28
  DB[:version].insert(:vmail_version => Vmail::VERSION)
@@ -505,6 +505,7 @@ EOF
505
505
  end
506
506
 
507
507
  def self.daemon(config)
508
+ puts "STARTING Vmail::ImapClient in dir #{Dir.pwd}"
508
509
  $gmail = self.start(config)
509
510
  use_uri = config['drb_uri'] || nil # redundant but explicit
510
511
  DRb.start_service(use_uri, $gmail)
@@ -61,8 +61,9 @@ module Vmail
61
61
  headers = format_headers headers_hash
62
62
  # replace the date value with the one derived from the envelope
63
63
  body = formatter.plaintext_part
64
- body.force_encoding("UTF-8")
65
- body = Iconv.conv('UTF-8//IGNORE', 'UTF-8', body)
64
+ conv_from = /charset=(.*)\s/.match(parts_list)[1].strip
65
+ body.force_encoding conv_from
66
+ body = body.encode!('utf-8', undef: :replace, invalid: :replace)
66
67
  message_text = <<-EOF
67
68
  #{message_id} #{number_to_human_size message.size} #{message.flags} #{parts_list}
68
69
  #{divider '-'}
@@ -1,3 +1,3 @@
1
1
  module Vmail
2
- VERSION = '2.5.8'
2
+ VERSION = '2.5.9'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmail
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.8
4
+ version: 2.5.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-20 00:00:00.000000000 Z
12
+ date: 2012-12-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mail