Sha256: 14362fbe8cf576e979bff97e58070e1f350adb6851049a295806b3d64efdbf97

Contents?: true

Size: 1.31 KB

Versions: 3

Compression:

Stored size: 1.31 KB

Contents

require_relative 'configuration'
require_relative 'critic'
require_relative 'cli/options'
require_relative 'logger'
require_relative 'reporter'

class Tailor

  # The Command-Line Interface worker.  Execution from the command line
  # comes through here.
  class CLI
    include LogSwitch::Mixin

    # The main method of execution from the command line.
    def self.run(args)
      new(args).execute!
    end

    # @param [Array] args Arguments from the command-line.
    def initialize(args)
      Tailor::Logger.log = false
      options = Options.parse!(args)

      @configuration = Configuration.new(args, options)
      @configuration.load!

      if options.show_config
        @configuration.show
        exit
      end

      @critic = Critic.new
      @reporter = Reporter.new(@configuration.formatters)
    end

    # This checks all of the files detected during the configuration gathering
    # process, then hands results over to the {Tailor::Reporter} to be reported.
    #
    # @return [Boolean] +true+ if no problems were detected; false if there
    #   were.
    def execute!
      @critic.critique(@configuration.file_sets) do |problems_for_file, label|
        @reporter.file_report(problems_for_file, label)
      end

      @reporter.summary_report(@critic.problems)

      @critic.problem_count > 0
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tailor-1.1.0 lib/tailor/cli.rb
tailor-1.0.1 lib/tailor/cli.rb
tailor-1.0.0 lib/tailor/cli.rb