Added github pages support

This commit is contained in:
Ben Cates 2012-08-29 23:50:23 -04:00
parent c074f8d907
commit 4de34e8948
3 changed files with 48 additions and 13 deletions

View file

@ -18,18 +18,26 @@ module Middleman
true true
end end
desc "deploy", "Copy build directory to a remote host over rsync" desc "deploy", "Copy build directory to a remote host"
method_option "clean", method_option "clean",
:type => :boolean, :type => :boolean,
:aliases => "-c", :aliases => "-c",
:desc => "Remove orphaned files or directories on the remote host" :desc => "Remove orphaned files or directories on the remote host"
def deploy def deploy
shared_inst = ::Middleman::Application.server.inst send("deploy_#{self.middleman_options.method}")
end
host = shared_inst.options.host protected
port = shared_inst.options.port
user = shared_inst.options.user def middleman_options
path = shared_inst.options.path ::Middleman::Application.server.inst.options
end
def deploy_rsync
host = self.middleman_options.host
port = self.middleman_options.port
user = self.middleman_options.user
path = self.middleman_options.path
# These only exists when the config.rb sets them! # These only exists when the config.rb sets them!
if (!host || !user || !path) if (!host || !user || !path)
@ -51,6 +59,30 @@ module Middleman
run command run command
end end
def deploy_git
puts "## Deploying to Github Pages"
Dir.mktmpdir do |tmp|
# clone ./ with branch gh-pages to tmp
repo = Git.clone(ENV['MM_ROOT'], tmp)
repo.checkout('origin/gh-pages', :new_branch => 'gh-pages')
# copy ./build/* to tmp
FileUtils.cp_r(Dir.glob(File.join(ENV['MM_ROOT'], 'build', '*')), tmp)
# git add and commit in tmp
repo.add
repo.commit("Automated commit at #{Time.now.utc}")
# push from tmp to self
repo.push('origin', 'gh-pages')
# push to github
github_url = Git.open(ENV['MM_ROOT']).remote.url
repo.add_remote('github', github_url)
repo.push('github', 'gh-pages')
end
end
end end
# Alias "d" to "deploy" # Alias "d" to "deploy"

View file

@ -5,7 +5,7 @@ require "middleman-core"
module Middleman module Middleman
module Deploy module Deploy
class Options < Struct.new(:host, :port, :user, :path, :clean); end class Options < Struct.new(:method, :host, :port, :user, :path, :clean); end
class << self class << self
@ -17,6 +17,7 @@ module Middleman
options = Options.new(options_hash) options = Options.new(options_hash)
yield options if block_given? yield options if block_given?
options.method ||= :rsync
options.port ||= 22 options.port ||= 22
options.clean ||= false options.clean ||= false
@ -25,8 +26,9 @@ module Middleman
app.send :include, Helpers app.send :include, Helpers
app.after_configuration do app.after_configuration do
if (!options.host || !options.user || !options.path) if (options.method == :rsync)
raise <<EOF if (!options.host || !options.user || !options.path)
raise <<EOF
ERROR: middleman-deploy is not setup correctly. host, user, and path ERROR: middleman-deploy is not setup correctly. host, user, and path
@ -39,6 +41,7 @@ activate :deploy do |deploy|
end end
EOF EOF
end
end end
end end
end end

View file

@ -6,11 +6,11 @@ Gem::Specification.new do |s|
s.name = Middleman::Deploy::PACKAGE s.name = Middleman::Deploy::PACKAGE
s.version = Middleman::Deploy::VERSION s.version = Middleman::Deploy::VERSION
s.platform = Gem::Platform::RUBY s.platform = Gem::Platform::RUBY
s.authors = ["Tom Vaughan"] s.authors = ["Tom Vaughan","Ben Cates"]
s.email = ["thomas.david.vaughan@gmail.com"] s.email = ["thomas.david.vaughan@gmail.com"]
s.homepage = "http://tvaughan.github.com/middleman-deploy/" s.homepage = "http://tvaughan.github.com/middleman-deploy/"
s.summary = %q{Deploy a middleman built site over rsync.} s.summary = %q{Deploy a middleman built site over rsync or to github pages.}
s.description = %q{Deploy a middleman built site over rsync.} s.description = %q{Deploy a middleman built site over rsync or to github pages.}
s.files = `git ls-files`.split("\n") s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@ -21,5 +21,5 @@ Gem::Specification.new do |s|
s.add_runtime_dependency("middleman-core", [">= 3.0.0"]) s.add_runtime_dependency("middleman-core", [">= 3.0.0"])
# Additional dependencies # Additional dependencies
# s.add_runtime_dependency("gem-name", "gem-version") s.add_runtime_dependency("git", "~> 1.2.0")
end end