lib/xcbootstrap/cli.rb in xcbootstrap-0.0.3 vs lib/xcbootstrap/cli.rb in xcbootstrap-0.1.0

- old
+ new

@@ -1,17 +1,41 @@ -require 'clamp' +require 'thor' require 'xcbootstrap/bootstrap' +require 'xcbootstrap/templates' module XCBootstrap - class Cli < Clamp::Command - - option ["-t", "--template"], "T", "name of the template to use", :required => true - option ["-p", "--project"], "P", "relative path to the desired project to create", :required => true - - def execute - template_root = File.expand_path(File.join(File.dirname(__FILE__), "../../templates")) - bootstrapper = XCBootstrap::Bootstrap.new(template_root, template, project) - bootstrapper.process - bootstrapper.finish + + class Create < Thor + + Templates.all_templates.each do |template_name| + desc template_name, "Create a project PROJECT_NAME based on the template '#{template_name}'" + define_method(template_name) do |project_name| + template_root = File.expand_path(File.join(File.dirname(__FILE__), "../../templates")) + bootstrapper = Bootstrap.new(template_root, template_name, project_name) + bootstrapper.process + bootstrapper.finish + end end + end + + class Cli < Thor + + desc "list", "list available project templates" + def list + puts "Templates:" + + Templates.all_templates.each do |template| + puts " #{template}" + end + end + + desc "create", "Create a new project, in the current working directory, based on a specified template" + subcommand "create", Create + + def self.exit_on_failure? + true + end + + end + end