cleanup
This commit is contained in:
parent
71c4e6339b
commit
e14f90fe1d
29 changed files with 360 additions and 237 deletions
|
@ -1,8 +1,8 @@
|
|||
require "middleman-core"
|
||||
require 'middleman-core'
|
||||
|
||||
require "middleman-deploy/commands"
|
||||
require 'middleman-deploy/commands'
|
||||
|
||||
::Middleman::Extensions.register(:deploy) do
|
||||
require "middleman-deploy/extension"
|
||||
require 'middleman-deploy/extension'
|
||||
::Middleman::Deploy
|
||||
end
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
require "middleman-core/cli"
|
||||
require 'middleman-core/cli'
|
||||
|
||||
require "middleman-deploy/extension"
|
||||
require "middleman-deploy/methods"
|
||||
require "middleman-deploy/strategies"
|
||||
require "middleman-deploy/pkg-info"
|
||||
require 'middleman-deploy/pkg-info'
|
||||
require 'middleman-deploy/extension'
|
||||
require 'middleman-deploy/methods'
|
||||
require 'middleman-deploy/strategies'
|
||||
|
||||
module Middleman
|
||||
module Cli
|
||||
|
||||
# This class provides a "deploy" command for the middleman CLI.
|
||||
class Deploy < Thor
|
||||
include Thor::Actions
|
||||
|
@ -21,11 +20,11 @@ module Middleman
|
|||
true
|
||||
end
|
||||
|
||||
desc "deploy [options]", Middleman::Deploy::TAGLINE
|
||||
method_option "build_before",
|
||||
:type => :boolean,
|
||||
:aliases => "-b",
|
||||
:desc => "Run `middleman build` before the deploy step"
|
||||
desc 'deploy [options]', Middleman::Deploy::TAGLINE
|
||||
method_option 'build_before',
|
||||
type: :boolean,
|
||||
aliases: '-b',
|
||||
desc: 'Run `middleman build` before the deploy step'
|
||||
def deploy
|
||||
build_before(options)
|
||||
process
|
||||
|
@ -33,7 +32,7 @@ module Middleman
|
|||
|
||||
protected
|
||||
|
||||
def build_before(options={})
|
||||
def build_before(options = {})
|
||||
build_enabled = options.fetch('build_before', self.deploy_options.build_before)
|
||||
|
||||
if build_enabled
|
||||
|
@ -43,10 +42,7 @@ module Middleman
|
|||
end
|
||||
|
||||
def print_usage_and_die(message)
|
||||
usage_path = File.join(File.dirname(__FILE__), '..', '..', 'USAGE')
|
||||
usage_message = File.read(usage_path)
|
||||
|
||||
raise Error, "ERROR: #{message}\n#{usage_message}"
|
||||
raise Error, "ERROR: #{message}\n#{Middleman::Deploy::README}"
|
||||
end
|
||||
|
||||
def process
|
||||
|
@ -65,11 +61,11 @@ module Middleman
|
|||
begin
|
||||
options = ::Middleman::Application.server.inst.options
|
||||
rescue NoMethodError
|
||||
print_usage_and_die "You need to activate the deploy extension in config.rb."
|
||||
print_usage_and_die 'You need to activate the deploy extension in config.rb.'
|
||||
end
|
||||
|
||||
unless options.method
|
||||
print_usage_and_die "The deploy extension requires you to set a method."
|
||||
print_usage_and_die 'The deploy extension requires you to set a method.'
|
||||
end
|
||||
|
||||
case options.method
|
||||
|
@ -79,7 +75,7 @@ module Middleman
|
|||
end
|
||||
when :ftp
|
||||
unless options.host && options.user && options.password && options.path
|
||||
print_usage_and_die "The ftp deploy method requires host, path, user, and password to be set."
|
||||
print_usage_and_die 'The ftp deploy method requires host, path, user, and password to be set.'
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -88,6 +84,6 @@ module Middleman
|
|||
end
|
||||
|
||||
# Alias "d" to "deploy"
|
||||
Base.map({ "d" => "deploy" })
|
||||
Base.map('d' => 'deploy')
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,19 +1,17 @@
|
|||
# Require core library
|
||||
require "middleman-core"
|
||||
require 'middleman-core'
|
||||
|
||||
# Extension namespace
|
||||
module Middleman
|
||||
module Deploy
|
||||
|
||||
class Options < Struct.new(:whatisthis, :method, :host, :port, :user, :password, :path, :clean, :remote, :branch, :strategy, :build_before, :flags, :commit_message); end
|
||||
class Options < Struct.new(:method, :host, :port, :user, :password, :path, :clean, :remote, :branch, :strategy, :build_before, :flags, :commit_message); end
|
||||
|
||||
class << self
|
||||
|
||||
def options
|
||||
@@options
|
||||
end
|
||||
|
||||
def registered(app, options_hash={}, &block)
|
||||
def registered(app, options_hash = {}, &block)
|
||||
options = Options.new(options_hash)
|
||||
yield options if block_given?
|
||||
|
||||
|
@ -22,9 +20,9 @@ module Middleman
|
|||
options.clean ||= false
|
||||
|
||||
# Default options for the git method.
|
||||
options.remote ||= "origin"
|
||||
options.branch ||= "gh-pages"
|
||||
options.strategy ||= :force_push
|
||||
options.remote ||= 'origin'
|
||||
options.branch ||= 'gh-pages'
|
||||
options.strategy ||= :force_push
|
||||
options.commit_message ||= nil
|
||||
|
||||
options.build_before ||= false
|
||||
|
@ -34,8 +32,7 @@ module Middleman
|
|||
app.send :include, Helpers
|
||||
end
|
||||
|
||||
alias :included :registered
|
||||
|
||||
alias_method :included, :registered
|
||||
end
|
||||
|
||||
module Helpers
|
||||
|
@ -43,6 +40,5 @@ module Middleman
|
|||
::Middleman::Deploy.options
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,7 +4,7 @@ module Middleman
|
|||
class Base
|
||||
attr_reader :options, :server_instance
|
||||
|
||||
def initialize(server_instance, options={})
|
||||
def initialize(server_instance, options = {})
|
||||
@options = options
|
||||
@server_instance = server_instance
|
||||
end
|
||||
|
@ -12,7 +12,6 @@ module Middleman
|
|||
def process
|
||||
raise NotImplementedError
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,10 +5,9 @@ module Middleman
|
|||
module Deploy
|
||||
module Methods
|
||||
class Ftp < Base
|
||||
|
||||
attr_reader :host, :port, :pass, :path, :user
|
||||
|
||||
def initialize(server_instance, options={})
|
||||
def initialize(server_instance, options = {})
|
||||
super(server_instance, options)
|
||||
|
||||
@host = self.options.host
|
||||
|
@ -27,7 +26,7 @@ module Middleman
|
|||
filtered_files.each do |filename|
|
||||
if File.directory?(filename)
|
||||
upload_directory(ftp, filename)
|
||||
else
|
||||
else
|
||||
upload_binary(ftp, filename)
|
||||
end
|
||||
end
|
||||
|
@ -36,7 +35,7 @@ module Middleman
|
|||
ftp.close
|
||||
end
|
||||
|
||||
protected
|
||||
protected
|
||||
|
||||
def filtered_files
|
||||
files = Dir.glob('**/*', File::FNM_DOTMATCH)
|
||||
|
@ -46,7 +45,7 @@ module Middleman
|
|||
|
||||
def handle_exception(exception, ftp, filename)
|
||||
reply = exception.message
|
||||
err_code = reply[0,3].to_i
|
||||
err_code = reply[0, 3].to_i
|
||||
|
||||
if err_code == 550
|
||||
if File.binary?(filename)
|
||||
|
@ -83,8 +82,6 @@ module Middleman
|
|||
rescue
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,7 +2,6 @@ module Middleman
|
|||
module Deploy
|
||||
module Methods
|
||||
class Git < Base
|
||||
|
||||
def process
|
||||
puts "## Deploying via git to remote=\"#{self.options.remote}\" and branch=\"#{self.options.branch}\""
|
||||
|
||||
|
@ -12,7 +11,6 @@ module Middleman
|
|||
|
||||
strategy_instance.process
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,10 +2,9 @@ module Middleman
|
|||
module Deploy
|
||||
module Methods
|
||||
class Rsync < Base
|
||||
|
||||
attr_reader :clean, :flags, :host, :path, :port, :user
|
||||
|
||||
def initialize(server_instance, options={})
|
||||
def initialize(server_instance, options = {})
|
||||
super(server_instance, options)
|
||||
|
||||
@clean = self.options.clean
|
||||
|
@ -25,13 +24,12 @@ module Middleman
|
|||
command = "rsync #{flags} '-e ssh -p #{self.port}' #{self.server_instance.build_dir}/ #{dest_url}"
|
||||
|
||||
if self.clean
|
||||
command += " --delete"
|
||||
command += ' --delete'
|
||||
end
|
||||
|
||||
puts "## Deploying via rsync to #{dest_url} port=#{self.port}"
|
||||
exec command
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,12 +5,11 @@ module Middleman
|
|||
module Deploy
|
||||
module Methods
|
||||
class Sftp < Ftp
|
||||
|
||||
def process
|
||||
puts "## Deploying via sftp to #{self.user}@#{self.host}:#{path}"
|
||||
|
||||
# `nil` is a valid value for user and/or pass.
|
||||
Net::SFTP.start(self.host, self.user, :password => self.pass, :port => self.port) do |sftp|
|
||||
Net::SFTP.start(self.host, self.user, password: self.pass, port: self.port) do |sftp|
|
||||
sftp.mkdir(self.path)
|
||||
|
||||
Dir.chdir(self.server_instance.build_dir) do
|
||||
|
@ -25,11 +24,11 @@ module Middleman
|
|||
end
|
||||
end
|
||||
|
||||
protected
|
||||
protected
|
||||
|
||||
def handle_exception(exception)
|
||||
reply = exception.message
|
||||
err_code = reply[0,3].to_i
|
||||
err_code = reply[0, 3].to_i
|
||||
|
||||
if err_code == 550
|
||||
sftp.upload(filename, file_path)
|
||||
|
@ -57,9 +56,7 @@ module Middleman
|
|||
|
||||
puts "Copied #{filename}"
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1,7 +1,64 @@
|
|||
module Middleman
|
||||
module Deploy
|
||||
PACKAGE = "middleman-deploy"
|
||||
VERSION = "0.2.4"
|
||||
TAGLINE = "Deploy a middleman built site over rsync, ftp, sftp, or git (e.g. gh-pages on github)."
|
||||
end
|
||||
PACKAGE = 'middleman-deploy'
|
||||
VERSION = '0.2.5'
|
||||
TAGLINE = 'Deploy a middleman built site over rsync, ftp, sftp, or git (e.g. gh-pages on github).'
|
||||
README = %Q{
|
||||
You should follow one of the four examples below to setup the deploy
|
||||
extension in config.rb.
|
||||
|
||||
# To deploy the build directory to a remote host via rsync:
|
||||
activate :deploy do |deploy|
|
||||
deploy.method = :rsync
|
||||
# host and path *must* be set
|
||||
deploy.host = "www.example.com"
|
||||
deploy.path = "/srv/www/site"
|
||||
# user is optional (no default)
|
||||
deploy.user = "tvaughan"
|
||||
# port is optional (default is 22)
|
||||
deploy.port = 5309
|
||||
# clean is optional (default is false)
|
||||
deploy.clean = true
|
||||
# flags is optional (default is -avze)
|
||||
deploy.flags = "-rltgoDvzO --no-p --del -e"
|
||||
end
|
||||
|
||||
# To deploy to a remote branch via git (e.g. gh-pages on github):
|
||||
activate :deploy do |deploy|
|
||||
deploy.method = :git
|
||||
# remote is optional (default is "origin")
|
||||
# run `git remote -v` to see a list of possible remotes
|
||||
deploy.remote = "some-other-remote-name"
|
||||
|
||||
# branch is optional (default is "gh-pages")
|
||||
# run `git branch -a` to see a list of possible branches
|
||||
deploy.branch = "some-other-branch-name"
|
||||
|
||||
# strategy is optional (default is :force_push)
|
||||
deploy.strategy = :submodule
|
||||
end
|
||||
|
||||
# To deploy the build directory to a remote host via ftp:
|
||||
activate :deploy do |deploy|
|
||||
deploy.method = :ftp
|
||||
# host, user, passwword and path *must* be set
|
||||
deploy.host = "ftp.example.com"
|
||||
deploy.path = "/srv/www/site"
|
||||
deploy.user = "tvaughan"
|
||||
deploy.password = "secret"
|
||||
end
|
||||
|
||||
# To deploy the build directory to a remote host via sftp:
|
||||
activate :deploy do |deploy|
|
||||
deploy.method = :sftp
|
||||
# host, user, passwword and path *must* be set
|
||||
deploy.host = "sftp.example.com"
|
||||
deploy.port = 22
|
||||
deploy.path = "/srv/www/site"
|
||||
# user is optional (no default)
|
||||
deploy.user = "tvaughan"
|
||||
# password is optional (no default)
|
||||
deploy.password = "secret"
|
||||
end}
|
||||
end
|
||||
end
|
|
@ -16,7 +16,7 @@ module Middleman
|
|||
raise NotImplementedError
|
||||
end
|
||||
|
||||
protected
|
||||
protected
|
||||
|
||||
def add_signature_to_commit_message(base_message)
|
||||
signature = "#{Middleman::Deploy::PACKAGE} #{Middleman::Deploy::VERSION}"
|
||||
|
@ -34,14 +34,13 @@ module Middleman
|
|||
end
|
||||
end
|
||||
|
||||
def commit_branch(options='')
|
||||
def commit_branch(options = '')
|
||||
message = self.commit_message ? self.commit_message : add_signature_to_commit_message('Automated commit')
|
||||
|
||||
`git add -A`
|
||||
`git commit --allow-empty -am "#{message}"`
|
||||
`git push #{options} origin #{self.branch}`
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,7 +3,6 @@ module Middleman
|
|||
module Strategies
|
||||
module Git
|
||||
class ForcePush < Base
|
||||
|
||||
def process
|
||||
Dir.chdir(self.build_dir) do
|
||||
add_remote_url
|
||||
|
@ -12,12 +11,12 @@ module Middleman
|
|||
end
|
||||
end
|
||||
|
||||
private
|
||||
private
|
||||
|
||||
def add_remote_url
|
||||
url = get_remote_url
|
||||
|
||||
unless File.exists?('.git')
|
||||
unless File.exist?('.git')
|
||||
`git init`
|
||||
`git remote add origin #{url}`
|
||||
else
|
||||
|
@ -46,7 +45,6 @@ module Middleman
|
|||
|
||||
url
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,7 +3,6 @@ module Middleman
|
|||
module Strategies
|
||||
module Git
|
||||
class Submodule < Base
|
||||
|
||||
def process
|
||||
Dir.chdir(self.build_dir) do
|
||||
checkout_branch
|
||||
|
@ -14,7 +13,7 @@ module Middleman
|
|||
commit_submodule
|
||||
end
|
||||
|
||||
private
|
||||
private
|
||||
|
||||
def commit_submodule
|
||||
current_branch = `git rev-parse --abbrev-ref HEAD`
|
||||
|
@ -36,7 +35,6 @@ module Middleman
|
|||
exit
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1 +1 @@
|
|||
require "middleman-deploy"
|
||||
require 'middleman-deploy'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue