Sha256: 44a80817a9efe25e70b5647f6c4ec4dc0602b5accc6950ed7631237332e80a0c

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

require_relative "options"
require_relative "locator"
require_relative "sweeper"
require_relative "target_context"

module Stowaway
  class Runner

    def initialize(options, locator, sweeper)
      @options = options
      @locator = locator
      @sweeper = sweeper
    end

    #TODO: clean-up all the print and puts methods and use
    def run
      context = TargetContext.new(@options.path)
      assets = locate_assets(context)
      Dir.chdir(context.root)
      puts "sweeping: #{Dir.pwd}"
      display_results(@sweeper.sweep(context, assets))
    end

    private

    def locate_assets(context)
      print "\nLocating files ... "
      assets = @locator.find_all(context)
      print "#{assets.length} files located"
      blank_lines
      assets
    end

    def display_results(result)
      files = result.files
      name_only_matches = result.name_only_matches

      if files.empty?
        print "Zero stowaways found. "
      end

      if files.empty? and name_only_matches.empty?
        print "You run a tight ship."
        blank_lines
        return
      end

      damage(result)
    end

    def damage(result)
      files = result.files
      name_only_matches = result.name_only_matches

      print "\nYou have #{files.length} stowaway(s) ... scurvy dogs!\n"
      warn name_only_matches unless name_only_matches.empty?
      60.times { print "-" }
      blank_lines
      files.each_with_index { |f, i| print "#{i+1}: #{f.root_path}\n" }
    end

    def warn name_only_matches
        print "WARNING: #{name_only_matches.length} file(s) partially matched on name only\n"
    end

    def blank_lines
      print "\n\n"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
stowaway-0.2.5 lib/stowaway/runner.rb