Sha256: 93f44cdfac2464cb66c9b7f675a080d6eea939898da128644cd2cc25acc9567d

Contents?: true

Size: 953 Bytes

Versions: 4

Compression:

Stored size: 953 Bytes

Contents

require 'rack/app'
require 'optparse'
class Rack::App::CLI

  require 'rack/app/cli/command'
  require 'rack/app/cli/default_commands'
  require 'rack/app/cli/runner'

  class << self

    def start(argv)
      runner.start(argv)
    end

    def runner
      Rack::App::CLI::Runner.new(rack_app)
    end

    def rack_app
      @rack_app ||= lambda {
        context = {}
        Kernel.__send__(:define_method, :run) { |app, *_| context[:app]= app }
        config_ru_file_path = Rack::App::Utils.pwd('config.ru')
        load(config_ru_file_path) if File.exist?(config_ru_file_path)
        context[:app]
      }.call
    end

  end

  def merge!(cli)
    commands.merge!(cli.commands)
    self
  end

  def commands
    @commands ||= {}
  end

  protected

  def command(name, &block)
    command_prototype = Class.new(Rack::App::CLI::Command)
    command_prototype.class_exec(&block)
    commands[name.to_s.to_sym]= command_prototype.new
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rack-app-3.4.0 lib/rack/app/cli.rb
rack-app-3.3.0 lib/rack/app/cli.rb
rack-app-3.2.1 lib/rack/app/cli.rb
rack-app-3.2.0 lib/rack/app/cli.rb