gopher export now
This commit is contained in:
parent
f3a78ccf42
commit
47ef6350fd
62
gengopher.lua
Executable file
62
gengopher.lua
Executable file
@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env lua
|
||||
local sitelib = require "sitelib"
|
||||
local fs = require "lfs"
|
||||
|
||||
print("Copying static content...")
|
||||
--os.execute("cp -rv static/* out/")
|
||||
for k,v in pairs({"jpg","jpeg","png","gif"}) do
|
||||
os.execute("find static/ -name '*."..v.."' -exec echo '{}' \\;")
|
||||
end
|
||||
|
||||
print("Building list of markdown files")
|
||||
local mdfiles = {}
|
||||
local dqueue = {sitelib.srcpath}
|
||||
for k,path in pairs(dqueue) do
|
||||
for file in fs.dir(path) do
|
||||
if file:sub(1,1) ~= "." then
|
||||
local attr = fs.attributes(path.."/"..file)
|
||||
if attr.mode == "directory" then
|
||||
dqueue[#dqueue+1] = path.."/"..file
|
||||
elseif file:sub(-3) == ".md" then
|
||||
mdfiles[#mdfiles+1] = path.."/"..file
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if not fs.attributes(sitelib.gopherpath) then
|
||||
fs.mkdir(sitelib.outpath)
|
||||
end
|
||||
|
||||
print("Creating directories")
|
||||
for k,v in pairs(dqueue) do
|
||||
local path = sitelib.outpath..v:sub(sitelib.srcpath:len()+1)
|
||||
fs.mkdir(path)
|
||||
print(path)
|
||||
end
|
||||
|
||||
print("Generating output files")
|
||||
for k,infile in pairs(mdfiles) do
|
||||
local outfile = (sitelib.gopherpath..infile:sub(sitelib.srcpath:len()+1))
|
||||
print(infile,outfile)
|
||||
local f = io.open(infile,"rb")
|
||||
local c = f:read("*a")
|
||||
f:close()
|
||||
local page = sitelib.parsepage(c)
|
||||
local f = io.open(outfile,"wb")
|
||||
if page.title then
|
||||
f:write("# "..page.title.."\n")
|
||||
end
|
||||
if page.author then
|
||||
f:write("By "..page.author.."\n")
|
||||
end
|
||||
if page.date then
|
||||
f:write(page.date.."\n")
|
||||
end
|
||||
f:write(page.md)
|
||||
if page.tags then
|
||||
f:write("Tags: "..page.tags)
|
||||
end
|
||||
f:close()
|
||||
end
|
||||
|
54
gopher-home.lua
Executable file
54
gopher-home.lua
Executable file
@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env lua
|
||||
local sitelib = require "sitelib"
|
||||
local fs = require "lfs"
|
||||
local articles = 4
|
||||
|
||||
print("Finding blog posts...")
|
||||
local ftab = {}
|
||||
for file in fs.dir(sitelib.srcpath.."/blog") do
|
||||
if file:sub(1,1) ~= "." then
|
||||
local index = tonumber(file:match("(%d+).md"))
|
||||
if index then
|
||||
ftab[index] = file
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local pages = {}
|
||||
for i = #ftab, #ftab-(articles-1), -1 do
|
||||
local f = io.open(sitelib.srcpath.."/blog/"..ftab[i])
|
||||
local c = f:read("*a")
|
||||
f:close()
|
||||
local page = sitelib.parsepage(c)
|
||||
pages[#pages+1] = {page.title,"/blog/"..tostring(i)..".md"}
|
||||
end
|
||||
|
||||
print("Reading template...")
|
||||
local f = io.open(sitelib.includepath.."/gheader-home","rb")
|
||||
local header = f:read("*a")
|
||||
f:close()
|
||||
local f = io.open(sitelib.includepath.."/gfooter-home","rb")
|
||||
local footer = f:read("*a")
|
||||
f:close()
|
||||
|
||||
print("Writing index...")
|
||||
local f = io.open(sitelib.gopherpath.."/.gopherdir","wb")
|
||||
f:write(header)
|
||||
while #pages > 0 do
|
||||
local article = table.remove(pages,1)
|
||||
f:write(string.format("0%s\t%s\t%s\t%d\n",article[1],article[2],sitelib.hostname,sitelib.gopherport))
|
||||
--[[
|
||||
local lp, rp = table.remove(pages,1), table.remove(pages,1)
|
||||
f:write('<div class="wrapper">')
|
||||
f:write(' <div class="left-column">')
|
||||
f:write(' <h2><a href="'..lp[2]..'">'..lp[1]..'</a></h2>')
|
||||
f:write(' </div>')
|
||||
f:write(' <div class="right-column">')
|
||||
f:write(' <h2><a href="'..rp[2]..'">'..rp[1]..'</a></h2>')
|
||||
f:write(' </div>')
|
||||
f:write('</div>')
|
||||
]]--
|
||||
end
|
||||
f:write(footer)
|
||||
--f:write(sitelib.footer)
|
||||
f:close()
|
38
gopherblog.lua
Executable file
38
gopherblog.lua
Executable file
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env lua
|
||||
local sitelib = require "sitelib"
|
||||
local fs = require "lfs"
|
||||
|
||||
print("Reading blog entries")
|
||||
local mdfiles = {}
|
||||
for file in fs.dir(sitelib.srcpath.."/blog/") do
|
||||
if file:sub(1,1) ~= "." then
|
||||
local index = tonumber(file:match("(%d+).md"))
|
||||
if index then
|
||||
mdfiles[index] = file
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if not fs.attributes(sitelib.gopherpath) then
|
||||
fs.mkdir(sitelib.gopherpath)
|
||||
end
|
||||
|
||||
local index=""
|
||||
print("Generating index")
|
||||
for k,infile in ipairs(mdfiles) do
|
||||
local fpath = "/blog/"..infile
|
||||
local infile = sitelib.srcpath.."/blog/"..infile
|
||||
print(infile,fpath)
|
||||
local f = io.open(infile,"rb")
|
||||
local c = f:read("*a")
|
||||
f:close()
|
||||
local page = sitelib.parsepage(c)
|
||||
if page.date then page.title = string.format("%s (%s)",page.title,page.date) end
|
||||
local fline = page.md:match("\n\n(.-)\n")
|
||||
index = string.format("0%s\t%s\t%s\t%d\ni%s\n%s",page.title,fpath,sitelib.hostname,sitelib.gopherport,fline,index)
|
||||
end
|
||||
index=sitelib.gheader .. index .. sitelib.gfooter
|
||||
|
||||
local f = io.open(sitelib.gopherpath.."/blog/.gopherdir","wb")
|
||||
f:write(index)
|
||||
f:close()
|
14
sitelib.lua
14
sitelib.lua
@ -2,10 +2,14 @@ local sitelib = {}
|
||||
|
||||
sitelib.srcpath = "src"
|
||||
sitelib.outpath = "out"
|
||||
sitelib.gopherpath = "gopher"
|
||||
sitelib.includepath = "include"
|
||||
sitelib.staticpath = "static"
|
||||
sitelib.hostname = "shadowkat.net"
|
||||
sitelib.gopherport = 70
|
||||
|
||||
sitelib.header, sitelib.footer = "", ""
|
||||
sitelib.gheader, sitelib.gfooter = "", ""
|
||||
local f = io.open("include/header.html")
|
||||
if f then
|
||||
sitelib.header = f:read("*a")
|
||||
@ -16,6 +20,16 @@ if f then
|
||||
sitelib.footer = f:read("*a")
|
||||
f:close()
|
||||
end
|
||||
local f = io.open("include/gheader")
|
||||
if f then
|
||||
sitelib.gheader = f:read("*a")
|
||||
f:close()
|
||||
end
|
||||
local f = io.open("include/gfooter")
|
||||
if f then
|
||||
sitelib.gfooter = f:read("*a")
|
||||
f:close()
|
||||
end
|
||||
|
||||
function sitelib.parsepage(s)
|
||||
local page={}
|
||||
|
Loading…
Reference in New Issue
Block a user