Sha256: b320b011eb087552a3e550703c53f0eda82a867757c8e227298f37b9b48f521f

Contents?: true

Size: 1.74 KB

Versions: 3

Compression:

Stored size: 1.74 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 = "#{protocol}://#{@server}/#{@path}"
  end
 
  def publish(files)
    reset_output
    dir = "#@docroot/#@path"
    result = system("ssh #@user@#@server -x mkdir #{dir}") 
    list = files.join(' ')
    cmd = "scp -r #{list} #@user@#@server:#{dir} >/dev/null 2>/tmp/wtf"
    output! "Publishing #{files.size} files...\n"
    result = system(cmd)
    raise PublishError unless result

    dump(files, "#{@blog.view.dir}/last_published")
    output! "...finished.\n"
    @out
  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.5 lib/publish.rb
runeblog-0.1.4 lib/publish.rb
runeblog-0.1.3 lib/publish.rb