Sha256: 231e7bd4069ea43782dbf48b1485221bb3b17d6644b06bd346464ec612d8fe86
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
require "net/ssh" require "yaml" module Yads class ConfigNotFound < Errno::ENOENT; end class Deployer def initialize(logger = STDOUT) @logger = logger end def deploy begin config = YAML.load(File.open("config/deploy.yml")) rescue Errno::ENOENT raise Yads::ConfigNotFound, "config/deploy.yml not found" end Net::SSH.start(config["host"], config["user"], :forward_agent => config["forward_agent"]) do |ssh| check_path(ssh, config["path"], config["commands"].delete("clone")) commands = config["commands"].values.unshift("cd #{config['path']}").join(" && ") @logger.puts "> #{commands}" @logger.puts ssh.exec(commands) do |ch, stream, data| print data end ssh.loop end end def check_path(ssh, path, clone) @logger.puts "> cd #{path}/.git" ssh.exec("cd #{path}/.git") do |ch, stream, data| if stream == :stderr @logger.puts "> cd #{path}" ssh.exec("mkdir -p #{path}; cd #{path}") do |ch1, stream1, data1| @logger.puts "> #{clone}" ssh.exec(clone) do |ch1, stream1, data1| abort data1 if stream1 == :stderr @logger.puts "> cd #{path}" ssh.exec("cd #{path}") end end end end ssh.loop end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
yads-0.0.3.pre2 | lib/yads.rb |