Sha256: 21d1862cf7d0d71bc6964df1c8224eca8377d887bc40d956cbe439e118069b58

Contents?: true

Size: 1.99 KB

Versions: 3

Compression:

Stored size: 1.99 KB

Contents

require 'helpers-blog'
require 'runeblog'

class RuneBlog::Publishing
  attr_reader :user, :server, :docroot, :path

  BadRemoteLogin = Exception.new("Can't login remotely")
  BadRemotePerms = Exception.new("Bad remote permissions")

  def initialize(*params)
    @blog = RuneBlog.blog
    # Clunky...
    if params.size == 1 && params[0].is_a?(OpenStruct)
      obj = params[0]
      array = obj.to_h.values_at(:user, :server, :docroot, 
                                 :path, :proto)
      @user, @server, @docroot, @path, @proto = *array
    else
      @user, @server, @docroot, @path, @proto = *obj
    end
  end

  def to_h
    {user: @user, server: @server, docroot: @docroot,
     path: @path, proto: @proto}
  end

  def url
    url = "#@proto://#@server/#@path"
  end

  def system!(str)
    rc = system(str)
    puts "Running: #{str}"
    puts "Failed: #{str}" if ! rc
    rc
  end

  def publish(files, assets=[])
    dir = "#@docroot/#@path"
    result = system!("ssh #@user@#@server -x mkdir -p #{dir}") 
    result = system!("ssh #@user@#@server -x mkdir -p #{dir}/../assets") 
    list = files.join(' ')
    cmd = "scp #{list} #@user@#@server:#{dir} >/dev/null 2>/tmp/wtf"
    debug "cmd = #{cmd.inspect}  - see /tmp/wtf"
    result = system!(cmd)
    cmd = "scp #{assets.join(' ')} #@user@#@server:#{dir}/../assets >/dev/null 2>/tmp/wtf2"
    result = system!(cmd)
    raise PublishError if !result
    dump(files, "#{@blog.view.dir}/last_published")
    true
  end

  def remote_login?
    cmd = "ssh -o BatchMode=yes #@user@#@server -x date >/dev/null 2>&1"
    result = system(cmd)
    return nil unless result
    true
  end

  def remote_permissions?
    dir = "#@docroot/#@path"
    temp = "#@path/__only_testing" 
    try1 = system("ssh -o BatchMode=yes -o ConnectTimeout=1 #@user@#@server -x mkdir -p #{temp} >/dev/null 2>&1")
    return nil unless try1
    try2 = system("ssh -o BatchMode=yes -o ConnectTimeout=1 #@user@#@server -x rmdir #{temp} >/dev/null 2>&1")
    return nil unless try2
    true
  end
end


Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
runeblog-0.1.26 lib/publish.rb
runeblog-0.1.25 lib/publish.rb
runeblog-0.1.24 lib/publish.rb