login

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()
        return lud.template.render_file("view/repo.html", {gname=gname, rname=rname, bnames=bnames, tnames=tnames})
    end},
}

local app = lud.app.new_app(routes)
app:run(8080)

git.shutdown()