middleman/middleman-cli/lib/middleman-cli/console.rb

49 lines
1.3 KiB
Ruby

# CLI Module
module Middleman::Cli
# Alias "c" to "console"
Base.map({ 'c' => 'console' })
# The CLI Console class
class Console < Thor
include Thor::Actions
check_unknown_options!
namespace :console
desc 'console [options]', 'Start an interactive console in the context of your Middleman application'
method_option :environment,
:aliases => '-e',
:default => ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development',
:desc => 'The environment Middleman will run under'
method_option :verbose,
:type => :boolean,
:default => false,
:desc => 'Print debug messages'
def console
require 'middleman-core'
require 'irb'
opts = {
:environment => options['environment'],
:debug => options['verbose']
}
@app =::Middleman::Application.server.inst do
if opts[:environment]
config[:environment] = opts[:environment].to_sym
end
::Middleman::Logger.singleton(opts[:debug] ? 0 : 1, opts[:instrumenting] || false)
end
# TODO: get file watcher / reload! working in console
IRB.setup nil
IRB.conf[:MAIN_CONTEXT] = IRB::Irb.new.context
require 'irb/ext/multi-irb'
IRB.irb nil, @app
end
end
end