lib/runeblog.rb in runeblog-0.3.22 vs lib/runeblog.rb in runeblog-0.3.23
- old
+ new
@@ -95,11 +95,10 @@
end
def self.create_new_blog_repo(root_rel = ".blogs")
log!(enter: __method__, args: [root_rel])
check_nonempty_string(root_rel)
- self.blog = self # Weird. Like a singleton - dumbass circular dependency?
repo_root = Dir.pwd/root_rel
check_error(BlogRepoAlreadyExists) { Dir.exist?(repo_root) }
create_dirs(repo_root)
Dir.chdir(repo_root) do
@@ -111,31 +110,33 @@
unless File.exist?(repo_root/"data/VIEW")
copy_data(repo_root/:data)
end
# copy_data(:extra, repo_root/:config)
write_repo_config(root: repo_root)
- @blog = self.new
- @blog
+ # Weird. Like a singleton - dumbass circular dependency?
+ self.blog = blog = self.new
+ blog
rescue => err
puts "Can't create blog repo: '#{repo_root}' - #{err}"
puts err.backtrace.join("\n")
end
def self.open(root_rel = ".blogs")
+ raise "Not impl"
log!(enter: __method__, args: [root_rel])
- self.blog = self # Weird. Like a singleton - dumbass circular dependency?
blog = self.new(root_rel)
rescue => err
_tmp_error(err)
end
def initialize(root_rel = ".blogs") # always assumes existing blog
log!(enter: "initialize", args: [root_rel])
- self.class.blog = self # Weird. Like a singleton - dumbass circular dependency?
+ # Weird. Like a singleton - dumbass circular dependency?
+ self.class.blog = self
@root = Dir.pwd/root_rel
- write_repo_config(root: @root) # ?? FIXME
+ # write_repo_config(root: @root) # ?? FIXME
get_repo_config
read_features # top level
@views = retrieve_views
self.view = File.read(@root/"data/VIEW").chomp
md = Dir.pwd.match(%r[.*/views/(.*?)/])
@@ -144,10 +145,15 @@
@view = str2view(@view_name)
end
@sequence = get_sequence
@post_views = []
@post_tags = []
+ rescue => err
+ puts "Error - see stdout.txt"
+ STDERR.puts err.inspect
+ STDERR.puts err.backtrace
+ sleep 3
end
def complete_file(name, vars, hash)
debugging = vars.nil?
return if hash.empty?
@@ -239,11 +245,11 @@
nslug = sourcefile.sub(/.lt3/, "")
dir = @root/:posts/nslug
create_dirs(dir)
# FIXME dependencies?
preprocess cwd: dir, src: @root/:drafts/sourcefile, dst: @root/:posts/sourcefile.sub(/.lt3/, ".html"), # ZZZ
- mix: "liveblog" # , debug: true
+ mix: "liveblog", vars: @view.globals # , debug: true
_deploy_local(dir)
rescue => err
_tmp_error(err)
end
@@ -262,18 +268,18 @@
log!(enter: __method__, args: [name], level: 3)
check_nonempty_string(name)
views.any? {|x| x.name == name }
end
- def view(name = nil)
- log!(enter: __method__, args: [name], level: 3)
- return @view if name.nil?
+# def view(name = nil)
+# log!(enter: __method__, args: [name], level: 3)
+# return @view if name.nil?
+#
+# check_nonempty_string(name)
+# return str2view(name)
+# end
- check_nonempty_string(name)
- return str2view(name)
- end
-
def str2view(str)
log!(enter: __method__, args: [str], level: 3)
check_nonempty_string(str) # redundant?
@views.find {|x| x.name == str }
end
@@ -285,30 +291,32 @@
_tmp_error(err)
end
def view=(arg)
log!(enter: __method__, args: [arg], level: 2)
+ if arg == "[no view]"
+ @view = nil
+ return
+ end
+# STDERR.puts "view= #{arg.inspect}"
+
case arg
- when "[no view]"
- # puts "Warning: No current view set"
- @view = nil
when RuneBlog::View
@view = arg
- read_features(@view)
- @view.get_globals
- _set_publisher
+ @view.get_globals(true)
when String
new_view = str2view(arg)
-# puts "new_view = #{new_view} (#{new_view.class})"
+# STDERR.puts "view= new view #{new_view.inspect}"
check_error(NoSuchView, arg) { new_view.nil? }
@view = new_view
- read_features(@view)
- @view.get_globals
- _set_publisher
else
raise CantAssignView(arg.class.to_s)
end
+ read_features(@view)
+ @view.get_globals(true)
+ _set_publisher
+ File.write(@root/"data/VIEW", @view.to_s)
rescue => err
_tmp_error(err)
end
def get_sequence
@@ -325,11 +333,13 @@
def viewdir(v = nil) # delete?
log!(enter: __method__, args: [v], level: 3)
return @view if v.nil?
check_nonempty_string(v)
- return @root/:views/v
+ dir = @root/:views/v
+ puts "Dir = #{dir}" # ; sleep 5
+ return dir
end
def self.exist?
log!(enter: __method__, level: 3)
Dir.exist?(DotDir)
@@ -373,12 +383,13 @@
def create_view(view_name)
log!(enter: __method__, args: [view_name], level: 2)
make_empty_view_tree(view_name)
add_view(view_name)
mark_last_published("Initial creation")
- system("cp #@root/data/global.lt3 #@root/views/#{view_name}/themes/standard/global.lt3")
- @view.get_globals
+ # system("cp #@root/data/global.lt3 #@root/views/#{view_name}/themes/standard/global.lt3")
+ system("cp #@root/data/global.lt3 #@root/views/#{view_name}/data/global.lt3")
+ @view.get_globals(true)
rescue => err
_tmp_error(err)
end
def delete_view(name, force = false)
@@ -406,11 +417,11 @@
dir_posts = @vdir/:posts
posts = Dir.entries(dir_posts).grep(/^\d\d\d\d/).map {|x| dir_posts/x }
posts.select! {|x| File.directory?(x) }
posts = posts.select {|x| File.basename(x).to_i == postid }
- postdir = exactly_one(posts)
+ postdir = exactly_one(posts, posts.join("/"))
vp = RuneBlog::ViewPost.new(self.view, postdir)
vp
rescue => err
_tmp_error(err)
end
@@ -422,11 +433,11 @@
@theme = @view.dir/"themes/standard"
post_entry_name = @theme/"blog/post_entry.lt3"
depend = [post_entry_name]
html = "/tmp/post_entry.html"
preprocess src: post_entry_name, dst: html,
- call: ".nopara" # , deps: depend # , debug: true
+ call: ".nopara", vars: @view.globals # , deps: depend # , debug: true
@_post_entry = File.read(html)
vp = post_lookup(id)
nslug, aslug, title, date, teaser_text =
vp.nslug, vp.aslug, vp.title, vp.date, vp.teaser_text
path = vp.path
@@ -564,19 +575,20 @@
def generate_view(view) # huh?
log!(enter: __method__, args: [view])
vdir = @root/:views/view
@theme = @root/:views/view/:themes/:standard
- depend = [vdir/"remote/etc/blog.css.lt3", @theme/"global.lt3",
+ @data = @root/:views/view/:data
+ depend = [vdir/"remote/etc/blog.css.lt3", @data/"global.lt3",
@theme/"blog/head.lt3",
# @theme/"navbar/navbar.lt3",
@theme/"blog/index.lt3"] # FIXME what about assets?
preprocess cwd: vdir/"themes/standard/etc", src: "blog.css.lt3",
- copy: vdir/"remote/etc/", call: [".nopara"], strip: true
+ copy: vdir/"remote/etc/", call: [".nopara"], strip: true , vars: @view.globals
preprocess cwd: vdir/"themes/standard", deps: depend, force: true,
src: "blog/generate.lt3", dst: vdir/:remote/"index.html",
- call: ".nopara"
+ call: ".nopara" , vars: @view.globals
copy!("#{vdir}/themes/standard/banner/*", "#{vdir}/remote/banner/") # includes navbar/
copy("#{vdir}/assets/*", "#{vdir}/remote/assets/")
# rebuild widgets?
copy_widget_html(view)
rescue => err
@@ -586,11 +598,11 @@
end
def _get_views(draft)
log!(enter: __method__, args: [draft], level: 2)
# FIXME dumb code
- view_line = exactly_one(File.readlines(draft).grep(/^.views /))
+ view_line = exactly_one(File.readlines(draft).grep(/^.views /), ".view line")
views = view_line[7..-1].split
views.uniq
rescue => err
_tmp_error(err)
end
@@ -624,36 +636,45 @@
date = meta.date
longdate = ::Date.parse(date).strftime("%B %e, %Y")
title = meta.title
tags = meta.tags
# FIXME simplify
- addvar(hash, "post.num" => pnum, "post.aslug" => aslug,
- "post.date" => date, title: title.chomp,
- teaser: excerpt.chomp, longdate: longdate,
- "post.nslug" => pnum + "-" + aslug,
- "post.tags" => tags.join(" "))
+ addvar(hash, "post.num" => pnum,
+ "post.aslug" => aslug,
+ "post.date" => date,
+ title: title.chomp,
+ teaser: excerpt.chomp,
+ longdate: longdate,
+ "post.nslug" => pnum + "-" + aslug,
+ "post.tags" => tags.join(" "))
end
hash
rescue => err
_tmp_error(err)
end
def copy_widget_html(view)
log!(enter: __method__, level: 2)
+log! str: "=== cwh cp 1"
vdir = @root/:views/view
remote = vdir/:remote
wdir = vdir/:widgets
widgets = Dir[wdir/"*"].select {|w| File.directory?(w) }
+log! str: "=== cwh cp 2"
widgets.each do |w|
dir = File.basename(w)
rem = w.sub(/widgets/, "remote/widgets")
+log! str: "=== cwh cp 3 w = #{w.inspect}"
create_dirs(rem)
files = Dir[w/"*"]
# files = files.select {|x| x =~ /(html|css)$/ }
tag = File.basename(w)
- files.each {|file| system!("cp #{file} #{rem}", show: (tag == "zzz")) }
+log! str: "=== cwh cp 4 tag = #{tag.inspect}"
+ files.each {|file| system!("cp #{file} #{rem}", show: true) }
+log! str: "=== cwh cp 5 tag was #{tag.inspect}"
end
+log! str: "=== cwh cp 6"
rescue => err
_tmp_error(err)
end
def _handle_post(draft, view_name = self.view.to_s)
@@ -665,40 +686,60 @@
aslug = nslug.sub(/\d\d\d\d-/, "") # this-is-a-post
ahtml = aslug + ".html" # this-is-a-post.html
pdraft = @root/:posts/nslug
remote = @root/:views/view_name/:remote
@theme = @root/:views/view_name/:themes/:standard
+ pmeta = @root/:views/view_name/:posts/nslug
+log! str: "=== hpost cp 1"
+
create_dirs(pdraft) # Step 1...
+log! str: "=== hpost cp 2"
preprocess cwd: pdraft, src: draft, # FIXME dependencies?
- dst: "guts.html", mix: "liveblog"
+ dst: "guts.html", mix: "liveblog", vars: (@view.globals || {})
+log! str: "=== hpost cp 3"
hash = _post_metadata(draft, pdraft)
+log! str: "=== hpost cp 4"
+ hash[:CurrentPost] = pmeta
vposts = @root/:views/view_name/:posts # Step 2...
-puts "-- hpost:"
-hash.each_pair {|k,v| puts " #{k}: #{v}" if k.is_a? Symbol }
-puts
+# 5.times { STDERR.puts }
+# STDERR.puts "-- hpost:"
+# hash.each_pair {|k,v| STDERR.puts " #{k}: #{v}" if k.is_a? Symbol }
+# 5.times { STDERR.puts }
copy!(pdraft, vposts) # ??
- copy(pdraft/"guts.html", @theme/:post) # Step 3...
- preprocess cwd: @theme/:post, src: "generate.lt3", # Step 4...
- force: true, vars: hash,
- dst: remote/ahtml, call: ".nopara"
+ copy(pdraft/"guts.html", vposts/nslug) # Step 3...
+ # Step 4...
+ # preprocess cwd: @theme/:post, src: "generate.lt3",
+log! str: "=== hpost cp 5"
+# @view.dump_globals_stderr
+ preprocess cwd: pmeta, src: "../../themes/standard/post/generate.lt3",
+ force: true, vars: hash, debug: true,
+ dst: remote/ahtml, call: ".nopara"
+log! str: "=== hpost cp 6"
FileUtils.rm_f(remote/"published")
+log! str: "=== hpost cp 7"
timelog("Generated", remote/"history")
copy_widget_html(view_name)
+log! str: "=== hpost cp 8"
rescue => err
+log! str: "=== hpost cp 9"
_tmp_error(err)
+ # puts err.backtrace.join("\n")
end
def _check_view?(view)
flag = self.view?(view)
puts " Warning: '#{view}' is not a view" unless flag
flag
end
def generate_post(draft, force = false)
log!(enter: __method__, args: [draft], level: 1)
+log! str: "=== gpost cp 1"
views = _get_views(draft)
+log! str: "=== gpost cp 2"
views.each {|view| _handle_post(draft, view) }
+log! str: "=== gpost cp 3"
# For current view:
slug = File.basename(draft).sub(/.lt3$/, "")
postdir = self.view.dir/"remote/post/"/slug
rescue => err
_tmp_error(err)