Sha256: 2eea81ab6c3ccd1b400771beb88b0ace12baa1980d7fbc8c92bf3244157ff589

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

module Downer
  class Application
    
    attr_accessor :output
    
    def initialize(output = nil)
      @output = (output) ? output : $stdout
      @options = nil
    end
    
    def run!(*arguments)
      @options = Downer::Options.new(arguments)
      
      if @options[:invalid_argument]
        @output.puts @options[:invalid_argument]
        @options[:show_help] = true
      end
      
      return exit_with_help_banner if @options[:file_manifest].nil?
      return exit_with_help_banner if @options[:target_directory].nil?
      return exit_with_help_banner if @options[:show_help]
      
      begin
        manager = Downer::DownloadManager.new(@options[:file_manifest], @options[:target_directory], @output)
        manager.start
        return 0
      rescue Downer::WriteFailed
        @output.puts %Q{Insufficient permissions to write to directory}
        return 1
      end
    end
    
    private
    
    def exit_with_help_banner
      @output.puts @options.opts.banner
      return 1
    end
    
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
downer-0.2.2 lib/downer/application.rb
downer-0.1.1 lib/downer/application.rb