lib/middleman/templates.rb



require "thor"
require "thor/group"

module Middleman::Templates
  @@template_mappings = {}
  def self.register(name, klass)
    @@template_mappings[name] = klass
  end
  
  def self.registered_names
    @@template_mappings.keys
  end
  
  def self.registered_templates
    @@template_mappings
  end
  
  class Base < ::Thor::Group
    include Thor::Actions
    
    argument :location, :type => :string
    class_option :template, :default => "default"
    class_option :css_dir, :default => "stylesheets"
    class_option :js_dir, :default => "javascripts"
    class_option :images_dir, :default => "images"
    class_option :rack, :type => :boolean, :default => false
    class_option :bundler, :type => :boolean, :default => false
    
    def generate_rack
      if options[:rack]
        template "shared/config.ru", File.join(location, "config.ru")
      end
    end
    
    def generate_bundler
      if options[:bundler]
        template "shared/Gemfile.tt", File.join(location, "Gemfile")
        
        say_status :run, "bundle install"
        print `cd #{location} && "#{Gem.ruby}" -rubygems "#{Gem.bin_path('bundler', 'bundle')}" install`
      end
    end
  end
end

# Default template
require "middleman/templates/default"

# HTML5 template
require "middleman/templates/html5"

# Local templates
require "middleman/templates/local"