lib/middleman-deploy/commands.rb in middleman-deploy-0.0.4 vs lib/middleman-deploy/commands.rb in middleman-deploy-0.0.5

- old
+ new

@@ -24,46 +24,83 @@ method_option "clean", :type => :boolean, :aliases => "-c", :desc => "Remove orphaned files or directories on the remote host" def deploy - send("deploy_#{self.middleman_options.method}") + send("deploy_#{self.deploy_options.method}") end protected - def middleman_options - ::Middleman::Application.server.inst.options + def print_usage_and_die(message) + raise Error, "ERROR: " + message + "\n" + <<EOF + +You should follow one of the two examples below to setup the deploy +extension in config.rb. + +# To copy the build directory to a remote host: +activate :deploy do |deploy| + deploy.method = :rsync + # host, user, and path *must* be set + deploy.user = "tvaughan" + deploy.host = "www.example.com" + deploy.path = "/srv/www/site" + # clean is optional (default is false). + deploy.clean = true +end + +# To push to a remote gh-pages branch on GitHub: +activate :deploy do |deploy| + deploy.method = :git +end +EOF end - def deploy_rsync - host = self.middleman_options.host - port = self.middleman_options.port - user = self.middleman_options.user - path = self.middleman_options.path + def deploy_options + options = nil - # These only exists when the config.rb sets them! - if (!host || !user || !path) - raise Thor::Error.new "You need to activate the deploy extension in config.rb" + begin + options = ::Middleman::Application.server.inst.options + rescue + print_usage_and_die "You need to activate the deploy extension in config.rb" end + if (!options.method) + print_usage_and_die "The deploy extension requires you to set a method" + end + + if (options.method == :rsync) + if (!options.host || !options.user || !options.path) + print_usage_and_die "The rsync deploy method requires host, user, and path to be set" + end + end + + options + end + + def deploy_rsync + host = self.deploy_options.host + port = self.deploy_options.port + user = self.deploy_options.user + path = self.deploy_options.path + command = "rsync -avze '" + "ssh -p #{port}" + "' build/ #{user}@#{host}:#{path}" if options.has_key? "clean" clean = options.clean else - clean = shared_inst.options.clean + clean = self.deploy_options.clean end if clean command += " --delete" end run command end def deploy_git - puts "## Deploying to Github Pages" + 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')