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)