module Xmvc module Generator class App < Thor::Group include Thor::Actions def self.source_root File.join(Xmvc::TEMPLATE_PATH, "app", "public") end argument :name, :type => :string, :desc => "Name of application to generate" desc "Generates a new Xmvc application" def create_root empty_directory(name) self.destination_root = name FileUtils.chdir(name) end def create_app empty_directory("app") inside("app", {}) do #copy_file("App.js", "#{destination_root}/App.js") directory("models", "models") directory("views", "views") directory("controllers", "controllers") end end def create_config directory("config", "config") end def create_lib directory("lib", "lib") end def create_public empty_directory("public") inside("public", {}) do copy_file("index.html", "index.html") directory("images", "images") directory("stylesheets", "stylesheets") directory("javascripts", "javascripts") end end def create_spec directory("spec", "spec", :recursive => false) inside("spec", {}) do directory("models", "models") directory("controllers", "controllers") end end def create_vendor directory("vendor", "vendor") inside("vendor", {}) do empty_directory("plugins") end end def install_host inside("vendor", {}) do |dir| host = Xmvc.host.new([], {}) host.invoke(:install, [dir]) #Xmvc.host.install(dir) end end def install_plugins inside("vendor/plugins", {}) do # install vendor/plugins here end end end end end