Sha256: 8fa7539e8fa7008bbf1237b9081198379dedbd6a4942d4de1cd7904632d649e5

Contents?: true

Size: 1.39 KB

Versions: 14

Compression:

Stored size: 1.39 KB

Contents

module MailRoom
  # The CLI parses ARGV into configuration to start the coordinator with.
  # @author Tony Pitale
  class CLI
    attr_accessor :configuration, :coordinator

    # Initialize a new CLI instance to handle option parsing from arguments
    #   into configuration to start the coordinator running on all mailboxes
    #
    # @param args [Array] `ARGV` passed from `bin/mail_room`
    def initialize(args)
      options = {}

      OptionParser.new do |parser|
        parser.banner = [
          "Usage: #{@name} [-c config_file]\n",
          "       #{@name} --help\n"
        ].compact.join

        parser.on('-c', '--config FILE') do |path|
          options[:config_path] = path
        end

        parser.on('-q', '--quiet') do
          options[:quiet] = true
        end

        # parser.on("-l", "--log FILE") do |path|
        #   options[:log_path] = path
        # end

        parser.on_tail("-?", "--help", "Display this usage information.") do
          puts "#{parser}\n"
          exit
        end
      end.parse!(args)

      self.configuration = Configuration.new(options)
      self.coordinator = Coordinator.new(configuration.mailboxes)
    end

    # Start the coordinator running, sets up signal traps
    def start
      Signal.trap(:INT) do
        coordinator.running = false
      end

      Signal.trap(:TERM) do
        exit
      end

      coordinator.run
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
mail_room-0.10.0 lib/mail_room/cli.rb
mail_room-0.9.1 lib/mail_room/cli.rb
mail_room-0.9.0 lib/mail_room/cli.rb
mail_room-0.8.1 lib/mail_room/cli.rb
mail_room-0.8.0 lib/mail_room/cli.rb
mail_room-0.7.0 lib/mail_room/cli.rb
mail_room-0.6.1 lib/mail_room/cli.rb
mail_room-0.6.0 lib/mail_room/cli.rb
mail_room-0.5.2 lib/mail_room/cli.rb
mail_room-0.5.1 lib/mail_room/cli.rb
mail_room-0.5.0 lib/mail_room/cli.rb
mail_room-0.4.2 lib/mail_room/cli.rb
mail_room-0.4.1 lib/mail_room/cli.rb
mail_room-0.4.0 lib/mail_room/cli.rb