Merge pull request #1286 from middleman/git_template

Load templates from Git
This commit is contained in:
Thomas Reynolds 2014-07-05 11:23:44 -07:00
commit 09c31b848b
3 changed files with 56 additions and 1 deletions

View file

@ -32,6 +32,8 @@ module Middleman
say "Middleman #{Middleman::VERSION}" say "Middleman #{Middleman::VERSION}"
end end
desc 'help', 'Show help'
# Override the Thor help method to find help for subtasks # Override the Thor help method to find help for subtasks
# @param [Symbol, String, nil] meth # @param [Symbol, String, nil] meth
# @param [Boolean] subcommand # @param [Boolean] subcommand
@ -92,3 +94,4 @@ require 'middleman-cli/extension'
require 'middleman-cli/server' require 'middleman-cli/server'
require 'middleman-cli/build' require 'middleman-cli/build'
require 'middleman-cli/console' require 'middleman-cli/console'
require 'middleman-cli/git'

View file

@ -0,0 +1,52 @@
# CLI Module
module Middleman::Cli
# A thor task for creating new projects
class Git < Thor
include Thor::Actions
check_unknown_options!
namespace :git
desc 'git REPO TARGET [options]', 'Create new project from REPO at TARGET'
# Do not run bundle install
method_option 'skip-bundle',
type: :boolean,
aliases: '-B',
default: false,
desc: "Don't run bundle install"
# The git task
# @param [String] name
def git(repo, target='.')
require 'rugged'
require 'tmpdir'
path = repository_path(repo)
Dir.mktmpdir do |dir|
Rugged::Repository.clone_at(path, dir)
source_paths << dir
directory dir, target, exclude_pattern: /\.git\/|\.gitignore$/
inside(target) do
run('bundle install')
end unless ENV['TEST'] || options[:'skip-bundle']
end
end
protected
def repository_path(repo)
"git://github.com/#{repo}.git"
end
end
def self.exit_on_failure?
true
end
Base.map('g' => 'git')
end

View file

@ -23,5 +23,5 @@ Gem::Specification.new do |s|
s.add_dependency('thor', ['>= 0.17.0', '< 2.0']) s.add_dependency('thor', ['>= 0.17.0', '< 2.0'])
# Templates # Templates
s.add_dependency('octokit', ['~> 3.1']) s.add_dependency('rugged', [])
end end