Sha256: f916ee25a1ddb75717631ce2d77ded131e7f44f88cafdd1aae8f7509e380017e

Contents?: true

Size: 864 Bytes

Versions: 5

Compression:

Stored size: 864 Bytes

Contents

module Warder
  # responsible for cli integration
  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
      return 0 unless @options.send(key)
      runner = validator.new(@stdout, @options)
      runner.perform
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
warder-0.3.1 lib/warder/cli.rb
warder-0.3.0 lib/warder/cli.rb
warder-0.2.4 lib/warder/cli.rb
warder-0.2.3 lib/warder/cli.rb
warder-0.2.2 lib/warder/cli.rb