Sha256: 3d6ad005ca9254e8cf58837fc49d54b8cdbf9aef7d56ccf63e259f879b98e7d7

Contents?: true

Size: 873 Bytes

Versions: 3

Compression:

Stored size: 873 Bytes

Contents

module Warder
  # responsible for executing warder tools
  class CLI
    def initialize(argv, stdin = STDIN, stdout = STDOUT,
                   stderr = STDERR, kernel = Kernel)
      @argv = argv
      @stdin = stdin
      @stdout = stdout
      @stderr = stderr
      @kernel = kernel
    end

    def execute!
      @kernel.exit execute
    end

    private

    def execute
      parse_arguments
      exit_codes = Warder.validators.map do |validator|
        perform_validation(validator)
      end
      exit_codes.compact.inject(0, :+)
    end

    def parse_arguments
      args = Arguments.new(@argv, @stdout, @kernel)
      @options = args.parse
    end

    def perform_validation(validator)
      key = validator::CLI_FULL_OPTION

      if @options.send(key)
        runner = validator.new(@stdout, @options)
        runner.perform
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
warder-0.1.8 lib/warder/cli.rb
warder-0.1.7 lib/warder/cli.rb
warder-0.1.6 lib/warder/cli.rb