Browse Source

gopher export now

master
XeonSquared 10 months ago
parent
commit
47ef6350fd
4 changed files with 168 additions and 0 deletions
  1. 62
    0
      gengopher.lua
  2. 54
    0
      gopher-home.lua
  3. 38
    0
      gopherblog.lua
  4. 14
    0
      sitelib.lua

+ 62
- 0
gengopher.lua View 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
- 0
gopher-home.lua View 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
- 0
gopherblog.lua View 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
- 0
sitelib.lua View File

@@ -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…
Cancel
Save