Class: RuneBlog::Publishing
- Inherits:
-
Object
- Object
- RuneBlog::Publishing
- Defined in:
- lib/global.rb,
lib/publish.rb
Constant Summary collapse
- BadRemoteLogin =
Exception.new("Can't login remotely")
- BadRemotePerms =
Exception.new("Bad remote permissions")
Instance Attribute Summary collapse
-
#docroot ⇒ Object
readonly
Returns the value of attribute docroot.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#server ⇒ Object
readonly
Returns the value of attribute server.
-
#user ⇒ Object
readonly
Returns the value of attribute user.
Instance Method Summary collapse
-
#initialize(view) ⇒ Publishing
constructor
A new instance of Publishing.
- #publish(files, assets = []) ⇒ Object
- #remote_login? ⇒ Boolean
- #remote_permissions? ⇒ Boolean
- #system!(str) ⇒ Object
- #to_h ⇒ Object
- #url ⇒ Object
Constructor Details
#initialize(view) ⇒ Publishing
Returns a new instance of Publishing.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/publish.rb', line 10 def initialize(view) log!(enter: __method__, args: [view.to_s]) @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 = *params # end # find a better way? gfile = @blog.root/:views/view/"themes/standard/global.lt3" data = File.readlines(gfile) grab = ->(var) { data.grep(/^#{var} /).first.chomp.split(" ", 2)[1] } @user = grab.call("publish.user") @server = grab.call("publish.server") @docroot = grab.call("publish.docroot") @path = grab.call("publish.path") @proto = grab.call("publish.proto") end |
Instance Attribute Details
#docroot ⇒ Object (readonly)
Returns the value of attribute docroot.
5 6 7 |
# File 'lib/publish.rb', line 5 def docroot @docroot end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
5 6 7 |
# File 'lib/publish.rb', line 5 def path @path end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
5 6 7 |
# File 'lib/publish.rb', line 5 def server @server end |
#user ⇒ Object (readonly)
Returns the value of attribute user.
5 6 7 |
# File 'lib/publish.rb', line 5 def user @user end |
Instance Method Details
#publish(files, assets = []) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/publish.rb', line 51 def publish(files, assets=[]) log!(enter: __method__, args: [files, assets]) dir = @docroot/@path view_name = @blog.view.name viewpath = dir # /view_name # result = system!("ssh #@user@#@server -x mkdir -p #{viewpath}") result = system!("ssh #@user@#@server -x mkdir -p #{viewpath}/assets") files.each do |file| dest = "#@user@#@server:" + dir # /view_name file.gsub!(/\/\//, "/") # weird... :-/ cmd = "scp -r #{file} #{dest} >/dev/null 2>/tmp/wtf" debug "cmd = #{cmd.inspect} - see /tmp/wtf" result = system!(cmd) || puts("\n Could not copy #{file} to #{dest}") end unless assets.empty? cmd = "scp #{assets.join(' ')} #@user@#@server:#{viewpath}/assets >/dev/null 2>/tmp/wtf2" result = system!(cmd) raise PublishError if !result end dump(files, "#{@blog.view.dir}/last_published") true end |
#remote_login? ⇒ Boolean
74 75 76 77 78 79 80 |
# File 'lib/publish.rb', line 74 def remote_login? log!(enter: __method__) cmd = "ssh -o BatchMode=yes #@user@#@server -x date >/dev/null 2>&1" result = system(cmd) return nil unless result true end |
#remote_permissions? ⇒ Boolean
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/publish.rb', line 82 def log!(enter: __method__) 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 |
#system!(str) ⇒ Object
45 46 47 48 49 |
# File 'lib/publish.rb', line 45 def system!(str) log!(enter: __method__, args: [str]) rc = system(str) rc end |
#to_h ⇒ Object
33 34 35 36 37 |
# File 'lib/publish.rb', line 33 def to_h log!(enter: __method__) {user: @user, server: @server, docroot: @docroot, path: @path, proto: @proto} end |
#url ⇒ Object
39 40 41 42 43 |
# File 'lib/publish.rb', line 39 def url log!(enter: __method__) vname = @blog.view.name # .gsub(/_/, "\\_") url = "#@proto://#@server/#@path" # /#{vname}" end |