#!/usr/bin/env ruby $stdout.sync = true require 'optparse' require File.expand_path(File.dirname(__FILE__) + '/../lib/redimap') # = Parse opts options = {} OptionParser.new do |opts| opts.banner = "Usage: redimap [options]" opts.separator "" opts.separator "Polling:" opts.on("-e", "--[no-]eternal", "Run eternally") do |o| options[:eternal] = o end opts.on("--polling-interval [N]", "Poll every N seconds when --eternal") do |o| options[:polling_interval] = o end opts.separator "" opts.separator "IMAP:" opts.on("-h", "--imap-host HOST", "Connect IMAP with HOST") do |o| options[:imap_host] = o end opts.on("--imap-port [PORT]", Integer, "Connect IMAP with PORT") do |o| options[:imap_port] = o end opts.on("-u", "--imap-username USERNAME", "Connect IMAP with USERNAME") do |o| options[:imap_username] = o end opts.on("-p", "--imap-password PASSWORD", "Connect IMAP with PASSWORD") do |o| options[:imap_password] = o end opts.on("--imap-mailboxes [INBOX,IN]", Array, "Read IMAP MAILBOXES") do |o| options[:imap_mailboxes] = o end opts.separator "" opts.separator "Redis:" opts.on("--redis-url [URL]", "Connect Redis to URL") do |o| options[:redis_url] = o end opts.on("--redis-ns-redimap [NS]", "Namespace Redis 'redimap:' as NS") do |o| options[:redis_ns_redimap] = o end opts.on("--redis-ns-queue [NS]", "Namespace Redis 'resque:' as NS") do |o| options[:redis_ns_queue] = o end opts.separator "" opts.separator "Other:" opts.on("-v", "--[no-]verbose", "Be somewhat verbose") do |o| options[:log_level] = 'DEBUG' end opts.on_tail("--help", "Show this message") do puts opts exit end opts.on_tail("--version", "Show version") do puts "Redimap version:#{Redimap::VERSION}" exit end end.parse! # = Configure Redimap.configure do |c| %w[ log_level imap_host imap_port imap_username imap_password imap_mailboxes redis_url redis_ns_redimap redis_ns_queue polling_interval ].each do |e_k| e_v = case e_k when 'imap_port' ENV[e_k].to_i when 'imap_mailboxes' ENV[e_k].split(',') else ENV[e_k] end if ENV[e_k] # Read env var if set, parsing as for params. e_v = options[e_k.to_sym] if options[e_k.to_sym] # Override from params. c.instance_variable_set("@#{e_k}", e_v) if e_v # Only set extant settings. end end @logger = Redimap.logger # = Main loop loop do Redimap.queue_new_mailboxes_uids break unless (options[:eternal] || ENV['eternal'].to_i == 1) @logger.debug { "Snoring for #{Redimap.config.polling_interval} s" } sleep Redimap.config.polling_interval # Sleep awhile. end