Add an experimental "console" CLI command.
The "console" command drops you into an IRB session in the context of the Middleman application instance. You can look at configuration, poke around at the sitemap and data, try out handlers (after calling self.current_path = "foo"), etc.
This commit is contained in:
parent
52c4677391
commit
2a5513dcc9
|
@ -87,3 +87,4 @@ require "middleman-core/cli/bundler"
|
||||||
require "middleman-core/cli/extension"
|
require "middleman-core/cli/extension"
|
||||||
require "middleman-core/cli/server"
|
require "middleman-core/cli/server"
|
||||||
require "middleman-core/cli/build"
|
require "middleman-core/cli/build"
|
||||||
|
require "middleman-core/cli/console"
|
||||||
|
|
46
middleman-core/lib/middleman-core/cli/console.rb
Normal file
46
middleman-core/lib/middleman-core/cli/console.rb
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
# CLI Module
|
||||||
|
module Middleman::Cli
|
||||||
|
|
||||||
|
# A thor task for creating new projects
|
||||||
|
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]
|
||||||
|
set :environment, opts[:environment].to_sym
|
||||||
|
end
|
||||||
|
|
||||||
|
logger(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
|
Loading…
Reference in a new issue