Sha256: cc8ebbb3a86f193e3c383f68dc3ab06adcef51a9b8a8d06267584252183fa7f3

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

require 'optparse'

module Outback
  module CLI
    DEFAULT_CONFIGURATION_FILE = '/etc/outback/outback.conf'
    
    def self.invoke
      options = {}
      option_parser = OptionParser.new do |p|
        p.banner = "Usage: outback [configfile]"
        # p.on -v --verbose be talky
        p.on_tail("-h", "--help", "Show this message") do
          puts p
          exit
        end
        p.on_tail("--version", "Show version") do
          puts "Outback #{Outback::VERSION}"
          exit
        end
      end
      option_parser.parse!
      options[:configuration] = ARGV.first unless ARGV.first.blank?
      Outback::Configuration.reset
      config_file = options[:configuration] or begin
        unless File.exists?(DEFAULT_CONFIGURATION_FILE)
          puts 'no configuration found'
          exit(1)
        end
        DEFAULT_CONFIGURATION_FILE
      end
      begin
        load config_file
      rescue ConfigurationError => conf_error
        puts "Configuration Error! #{conf_error}"
        exit(1)
      rescue Exception => e
        puts 'Error loading config file'
        puts e
        exit(1)
      end
      if Outback::Configuration.loaded.empty?
        puts 'no configuration could be loaded'
        exit(1)
      end
      Outback::Configuration.loaded.each do |configuration|
        Outback::Backup.new(configuration).run!
      end
    end
  end  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
outback-0.0.2 lib/outback/cli.rb
outback-0.0.1 lib/outback/cli.rb