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

52 lines
1.4 KiB
Ruby
Raw Permalink Normal View History

# CLI Module
module Middleman::Cli
# The CLI Console class
2015-01-04 21:23:35 +01:00
class Console < Thor::Group
include Thor::Actions
check_unknown_options!
2015-01-04 21:23:35 +01:00
class_option :environment,
aliases: '-e',
default: ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development',
desc: 'The environment Middleman will run under'
class_option :verbose,
type: :boolean,
default: false,
desc: 'Print debug messages'
def console
require 'middleman-core'
require 'irb'
opts = {
2014-04-29 19:50:21 +02:00
environment: options['environment'],
debug: options['verbose']
}
2014-09-11 01:00:07 +02:00
@app = ::Middleman::Application.new do
2014-04-29 20:43:05 +02:00
config[:environment] = opts[:environment].to_sym if opts[:environment]
::Middleman::Logger.singleton(opts[:debug] ? 0 : 1, opts[:instrumenting] || false)
end
2015-04-26 22:01:19 +02:00
self.class.interact_with @app
2015-04-26 20:32:47 +02:00
end
2015-04-26 20:32:47 +02:00
# Start an interactive console in the context of the provided object.
# @param [Object] context
# @return [void]
2015-04-26 22:01:19 +02:00
def self.interact_with(context)
IRB.setup nil
IRB.conf[:MAIN_CONTEXT] = IRB::Irb.new.context
require 'irb/ext/multi-irb'
2015-04-26 20:32:47 +02:00
IRB.irb nil, context
end
2015-01-04 21:23:35 +01:00
# Add to CLI
Base.register(self, 'console', 'console [options]', 'Start an interactive console in the context of your Middleman application')
# Map "c" to "console"
Base.map('c' => 'console')
end
end