Sha256: e86e7a94a9a210c496b71086a5ef5584e9e56e5fa07a84b9379490b67c460938

Contents?: true

Size: 799 Bytes

Versions: 1

Compression:

Stored size: 799 Bytes

Contents

require "optparse"

class Ppl::Application::Shell

  attr_writer :router

  def run(input, output)
    outcome = false
      command = select_command(input)
      prepare_command(command, input)
      outcome = execute_command(command, input, output)
    return outcome
  end


  private

  def select_command(input)
    @router.route(input.arguments.shift)
  end

  def prepare_command(command, input)
    if !command.nil? && !command.is_a?(Ppl::Command::External)
      @optparse = OptionParser.new do |parser|
        command.options(parser, input.options)
      end
      @optparse.parse!(input.arguments)
    end
  end

  def execute_command(command, input, output)
    outcome = false
    if !command.nil?
      outcome = command.execute(input, output)
    end
    return outcome
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ppl-1.17.0 lib/ppl/application/shell.rb