Class: RuneBlog::Publishing

Inherits:
Object
  • Object
show all
Defined in:
lib/runeblog_version.rb,
lib/publish.rb

Constant Summary collapse

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(view) ⇒ Publishing

Returns a new instance of Publishing.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/publish.rb', line 14

def initialize(view)
  log!(enter: __method__, args: [view.to_s])
  @blog = RuneBlog.blog
  dir = @blog.root/:views/view/"themes/standard/"
  gfile = dir/"global.lt3"
there = File.exist?(gfile)
puts "Pub#init 0 gfile = $ gfile.inspect}  exist = #{there}"
  return unless File.exist?(gfile)  # FIXME Hackish as hell

# puts "Pub#init 1"
  live = get_live_vars(gfile)
# puts "Pub#init 2 - vars = #{live.vars.inspect}\n "
  @user    = live.vars["publish.user"]
  @server  = live.vars["publish.server"]
  @docroot = live.vars["publish.docroot"]
  @path    = live.vars["publish.path"]
  @proto   = live.vars["publish.proto"]
end

Instance Attribute Details

#docrootObject (readonly)

Returns the value of attribute docroot.



9
10
11
# File 'lib/publish.rb', line 9

def docroot
  @docroot
end

#pathObject (readonly)

Returns the value of attribute path.



9
10
11
# File 'lib/publish.rb', line 9

def path
  @path
end

#serverObject (readonly)

Returns the value of attribute server.



9
10
11
# File 'lib/publish.rb', line 9

def server
  @server
end

#userObject (readonly)

Returns the value of attribute user.



9
10
11
# File 'lib/publish.rb', line 9

def user
  @user
end

Instance Method Details

#check_new_postsObject



45
46
47
48
49
50
51
# File 'lib/publish.rb', line 45

def check_new_posts
  # How do we know??
  # If it's newly published:
  #   autopost on reddit   (if enabled and not already)
  #       "    "  twitter  (if enabled and not already)
  #       "    "  facebook (if enabled and not already)
end

#publishObject



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/publish.rb', line 53

def publish
  log!(enter: __method__, level: 1)
  dir = @docroot/@path
  view_name = @blog.view.name
  viewpath = dir 
  cmd = "rsync -r -z #{@blog.root}/views/#{@blog.view}/remote/ #@user@#@server:#{viewpath}/"
  system!(cmd)
  check_new_posts
  dump("#{@blog.view} at #{Time.now}", "#{@blog.view.dir}/last_published")
  true
end

#remote_login?Boolean

Returns:

  • (Boolean)


65
66
67
68
69
70
71
# File 'lib/publish.rb', line 65

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

Returns:

  • (Boolean)


73
74
75
76
77
78
79
80
81
82
# File 'lib/publish.rb', line 73

def remote_permissions?
  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

#to_hObject



33
34
35
36
37
# File 'lib/publish.rb', line 33

def to_h
  log!(enter: __method__, level: 3)
  {user: @user, server: @server, docroot: @docroot,
   path: @path, proto: @proto}
end

#urlObject



39
40
41
42
43
# File 'lib/publish.rb', line 39

def url
  log!(enter: __method__, level: 3)
  vname = @blog.view.name # .gsub(/_/, "\\_")
  url = "#@proto://#@server/#@path"  # /#{vname}"
end