middleman/middleman-cli/lib/middleman-cli/init.rb
2014-05-26 17:58:35 -07:00

60 lines
1.7 KiB
Ruby

require 'middleman-templates'
# CLI Module
module Middleman::Cli
# A thor task for creating new projects
class Init < Thor
check_unknown_options!
namespace :init
desc 'init NAME [options]', 'Create new project NAME'
available_templates = ::Middleman::Templates.registered.keys.join(', ')
method_option 'template',
aliases: '-T',
default: 'default',
desc: "Use a project template: #{available_templates}"
method_option 'css_dir',
desc: 'The path to the css files'
method_option 'js_dir',
desc: 'The path to the javascript files'
method_option 'images_dir',
desc: 'The path to the image files'
method_option 'rack',
type: :boolean,
default: false,
desc: 'Include a config.ru file'
method_option 'skip-bundle',
type: :boolean,
aliases: '-B',
default: false,
desc: "Don't run bundle install"
method_option 'skip-git',
type: :boolean,
default: false,
desc: 'Skip Git ignores and keeps'
# The init task
# @param [String] name
def init(name='.')
key = options[:template].to_sym
unless ::Middleman::Templates.registered.key?(key)
raise Thor::Error, "Unknown project template '#{key}'"
end
thor_group = ::Middleman::Templates.registered[key]
thor_group.new([name], options).invoke_all
end
end
def self.exit_on_failure?
true
end
# Map "i", "new" and "n" to "init"
Base.map(
'i' => 'init',
'new' => 'init',
'n' => 'init'
)
end