require "markd" require "dir" require "file" require "path" begin Dir.mkdir_p Path["dist/static"] rescue if !Dir.exists? Path["dist/static"] puts "Could not create required folders. Exiting." exit 1 end end Base = begin if File.file? "base.html" File.read "base.html" elsif File.file? Path[ENV["HOME"]+"/.config/blogtool/base.html"] File.read Path[ENV["HOME"]+"/.config/blogtool/base.html"] elsif File.file? Path["/etc/blogtool/base.html"] File.read Path["/etc/blogtool/base.html"] else puts "Can't find base.html" exit 1 end end BaseCSS = begin if File.file? Path[ENV["HOME"]+"/.config/blogtool/styles.css"] File.read Path[ENV["HOME"]+"/.config/blogtool/styles.css"] elsif File.file? Path["/etc/blogtool/styles.css"] File.read Path["/etc/blogtool/styles.css"] else "" end end def render_file(filename : String | Path) Base.sub("## CONTENT", Markd.to_html(File.read(filename), Markd::Options.new(smart: true, safe: false))) end index = Base content = "" Dir.entries("articles").select{ |i| i != "." && i != ".." }.each do |article| if article[article.size-3, article.size] == ".md" File.write Path.new("dist", article[0,article.size-3]+".html"), render_file("articles/"+article) content += "

"+article[0,article.size-3].gsub("-", " ")+"

\n" else File.write Path.new("dist", article+".html"), render_file("articles/"+article) content += "

"+article.gsub("-", " ")+"

\n" end end index = index.gsub("## CONTENT") { content } File.write Path["dist/index.html"], index Dir.entries("assets").select{ |i| i != "." && i != ".." }.each do |asset| File.copy Path.new("assets", asset), Path.new("dist", "static", asset) end File.write Path.new("dist", "static", "styles.css"), BaseCSS+File.read("styles.css") File.write Path.new("dist", "about.html"), render_file("about.md")