Sha256: b653eacabb9047245f9bd2faaaba046f0152bbc17bbbd389f950a58b429f37cb

Contents?: true

Size: 858 Bytes

Versions: 3

Compression:

Stored size: 858 Bytes

Contents

#!/usr/bin/env ruby

require 'em-imap'
require 'em-dir-watcher'
require 'forwardable'
require 'em-systemcommand'
require 'mbidle'

MBSYNC_COMMAND = ENV['MBSYNC_BIN']  || 'mbsync'
MBSYNC_HOOK    = ENV['MBSYNC_HOOK'] || '~/.update-mail'

def update_mail_script
  script_file = File.expand_path(MBSYNC_HOOK)
  system "bash #{script_file}" if File.exist?(script_file)
end

MBidle::Sync.after_sync { update_mail_script }

SHUTDOWN = false

EM.run do
  @accounts = MBidle::Accounts.read

  EMDirWatcher.watch File.expand_path('~/.mail') do |paths|
    paths.map! { |p| File.join('~/.mail', p) }
    paths.reject! { |p| p =~ /\.mbsyncstate/ }
    accounts = @accounts.for_paths(*paths)

    update_mail_script unless accounts.empty?

    MBidle::Sync.schedule(*accounts)
  end

  @accounts.each(&:idle!)

  trap('TERM') do
    SHUTDOWN = true
    EM.stop
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mbidle-1.1.1 bin/mbidle
mbidle-1.1.0 bin/mbidle
mbidle-1.0.1 bin/mbidle