local git = require "git"
local scan = require "scan"
local lud = require "ludweb"
git.init()
local path = "/tmp/cogit"
local groups = scan.scanrepos(path)
local routes = {
{"GET", "/", function (req)
local gnames = {}
for gname in pairs(groups) do
table.insert(gnames, gname)
end
return lud.template.render_file("view/home.html", {gnames=gnames})
end},
{"GET", "/group/([%w_-]+)", function (req, gname)
local rnames = {}
for rname in pairs(groups[gname]) do
table.insert(rnames, rname)
end
return lud.template.render_file("view/group.html", {gname=gname, rnames=rnames})
end},
{"GET", "/group/([%w_-]+)/repo/([%w_-]+)", function (req, gname, rname)
local repo = groups[gname][rname]
local bnames = repo:branches()
local tnames = repo:tags()
local env = {gname=gname, rname=rname, bnames=bnames, tnames=tnames}
return lud.template.render_file("view/repo.html", env)
end},
{"GET", "/group/([%w_-]+)/repo/([%w_-]+)/history/([%w_-]+)", function (req, gname, rname, first)
local repo = groups[gname][rname]
local commit = repo:commit(first)
local prev = repo:find_prev(commit:id(), 20)
local env = {gname=gname, rname=rname, bname=bname, commit=commit, prev=prev, first=first}
return lud.template.render_file("view/history.html", env)
end},
}
local app = lud.app.new_app(routes)
app:run(8080)
git.shutdown()