catfriend 0.13 → 0.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/bin/catfriend +19 -3
  2. data/lib/catfriend/imap.rb +16 -7
  3. metadata +5 -5
data/bin/catfriend CHANGED
@@ -97,10 +97,14 @@ end
97
97
  # unrecoverable error. Perhaps I should make it exit if any thread exits.
98
98
  def self.main args
99
99
  work_accounts = false
100
+ foreground = false
100
101
  Catfriend.verbose = false
101
102
  begin
102
103
  OptionParser.new do |opts|
103
104
  opts.banner = "usage: #{APP_NAME} [options]"
105
+ opts.on("-f", "--foreground", "run in foreground") do
106
+ foreground = true
107
+ end
104
108
 
105
109
  opts.on("-w", "--work", "enable work accounts") do
106
110
  work_accounts = true
@@ -110,13 +114,20 @@ def self.main args
110
114
  end
111
115
  end.parse!
112
116
 
117
+ Catfriend.verbose = false unless foreground
118
+
113
119
  servers = parse_config
114
120
  servers.reject! { |s| s.work_account } unless work_accounts
115
121
  raise ConfigError, "no servers to check" if servers.empty?
116
122
 
117
- # todo: daemonize here unless certain command line argument given
118
- servers.each { |s| s.start }
119
- servers.each { |s| s.join }
123
+ if foreground
124
+ start_servers servers
125
+ else
126
+ pid = fork do
127
+ start_servers servers
128
+ end
129
+ Process.detach pid
130
+ end
120
131
  rescue ConfigError => e
121
132
  puts "misconfiguration: #{e.message}"
122
133
  rescue Interrupt
@@ -130,6 +141,11 @@ def self.main args
130
141
  1
131
142
  end
132
143
 
144
+ def self.start_servers servers
145
+ servers.each { |s| s.start }
146
+ servers.each { |s| s.join }
147
+ end
148
+
133
149
  end ########################### end module
134
150
 
135
151
  exit Catfriend.main ARGV
@@ -62,7 +62,7 @@ class ImapServer
62
62
  else
63
63
  loop {
64
64
  check_loop
65
- break if stopped?
65
+ break if stopping?
66
66
  }
67
67
  end
68
68
  end
@@ -93,11 +93,11 @@ class ImapServer
93
93
  Catfriend.whisper "idle loop over"
94
94
  rescue Net::IMAP::Error, IOError
95
95
  # reconnect and carry on
96
- reconnect unless stopped?
96
+ reconnect unless stopping?
97
97
  rescue => e
98
- unless stopped?
98
+ unless stopping?
99
99
  # todo: see if we have to re-open socket
100
- notify_message "error - #{e.message}"
100
+ notify_message "#{@message_count} [error: #{e.message}]"
101
101
  puts e.backtrace.join "\n"
102
102
  end
103
103
  end
@@ -107,7 +107,12 @@ class ImapServer
107
107
  Catfriend.whisper @notification.summary
108
108
  end
109
109
 
110
+ def stopping?
111
+ stopped? or @stopping
112
+ end
113
+
110
114
  def kill
115
+ @stopping = true
111
116
  disconnect
112
117
  super
113
118
  end
@@ -129,10 +134,14 @@ class ImapServer
129
134
  end
130
135
 
131
136
  def reconnect
132
- # todo: log an error unless this completes within a short time
133
- Catfriend.whisper "#{id}: reconnecting"
137
+ notify_message "#{@message_count} [reconnecting]"
134
138
  new_count = connect
135
- notify_message(new_count) if new_count != @message_count
139
+ if new_count != @message_count
140
+ notify_message new_count
141
+ else
142
+ # todo: only if it was still open
143
+ @notification.close
144
+ end
136
145
  @message_count = new_count
137
146
  end
138
147
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: catfriend
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.13'
4
+ version: '0.14'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,19 +9,19 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-02 00:00:00.000000000 Z
12
+ date: 2012-01-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: libnotify
16
- requirement: &9300880 !ruby/object:Gem::Requirement
16
+ requirement: &14748540 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: '0.7'
21
+ version: 0.7.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *9300880
24
+ version_requirements: *14748540
25
25
  description: E-mail checker with libnotify desktop notifications.
26
26
  email:
27
27
  - catfriend@chilon.net