unify repository metadata access
7 files changed, 89 insertions(+), 78 deletions(-)
M routes/routes.go → routes/routes.go
@@ -43,12 +43,10 @@ return d.NotFound(rc) } pageData := templates.PageData{ - Meta: d.c.Meta, - Name: repoName, - Ref: gr.MainBranch, - Description: gr.Description, - Servername: d.c.Server.Name, - Gomod: gr.Gomod, + Meta: d.c.Meta, + Repo: gr, + Ref: gr.MainBranch, + Servername: d.c.Server.Name, } rc.SetContentType("text/html; charset=utf-8")@@ -76,11 +74,10 @@ rc.SetContentType("text/html; charset=utf-8") pageData := templates.PageData{ - Meta: d.c.Meta, - Name: repoName, - Ref: ref, - Description: gr.Description, - Parent: treePath, + Meta: d.c.Meta, + Repo: gr, + Ref: ref, + Parent: treePath, } return templates.TreePage(pageData, files, gr.ReadmeContent, filepath.Dir(treePath)).Render(rc)@@ -114,12 +111,11 @@ rc.SetContentType("text/html; charset=utf-8") pageData := templates.PageData{ - Meta: d.c.Meta, - Name: repoName, - Ref: ref, - Description: gr.Description, - Path: treePath, - Content: contents, + Meta: d.c.Meta, + Repo: gr, + Ref: ref, + Path: treePath, + Content: contents, } if len(pageData.Content) > 0 {@@ -219,11 +215,10 @@ return err } pageData := templates.PageData{ - Meta: d.c.Meta, - Name: repoName, - Ref: ref, - Description: gr.Description, - Log: true, + Meta: d.c.Meta, + Repo: gr, + Ref: ref, + Log: true, } rc.SetContentType("text/html; charset=utf-8")@@ -246,12 +241,11 @@ return err } pageData := templates.PageData{ - Meta: d.c.Meta, - Name: repoName, - Stat: diff.Stat, - Diff: diff.Diff, - Ref: ref, - Description: gr.Description, + Meta: d.c.Meta, + Repo: gr, + Stat: diff.Stat, + Diff: diff.Diff, + Ref: ref, } rc.SetContentType("text/html; charset=utf-8")@@ -266,23 +260,22 @@ ref := rc.UserValue("ref").(string) filePath := strings.TrimSuffix(rc.UserValue("file").(string), "/") - g, found := d.repos.BySlug[repoName] + gr, found := d.repos.BySlug[repoName] if !found { return d.NotFound(rc) } - diff, err := g.DiffFile(filePath) + diff, err := gr.DiffFile(filePath) if err != nil { return err } pageData := templates.PageData{ - Meta: d.c.Meta, - Name: repoName, - Ref: ref, - Description: g.Description, - Path: filePath, - Diff: diff.Diff, + Meta: d.c.Meta, + Repo: gr, + Ref: ref, + Path: filePath, + Diff: diff.Diff, } rc.SetContentType("text/html; charset=utf-8")@@ -310,9 +303,8 @@ return err } pageData := templates.PageData{ - Meta: d.c.Meta, - Name: repoName, - Description: gr.Description, + Meta: d.c.Meta, + Repo: gr, } rc.SetContentType("text/html; charset=utf-8")
M templates/commit.go → templates/commit.go
@@ -25,14 +25,14 @@ CommitInfo(diff.Commit.Author), ), Div( Strong(g.Text("commit")), - P(A(Href(fmt.Sprintf("/%s/commit/%s", data.Name, diff.Commit.This)), + P(A(Href(fmt.Sprintf("/%s/commit/%s", data.Repo.Name, diff.Commit.This)), Class("commit-hash"), g.Text(diff.Commit.This))), ), g.If(diff.Commit.Parent != "", Div( Strong(g.Text("parent")), - P(A(Href(fmt.Sprintf("/%s/commit/%s", data.Name, diff.Commit.Parent)), + P(A(Href(fmt.Sprintf("/%s/commit/%s", data.Repo.Name, diff.Commit.Parent)), Class("commit-hash"), g.Text(diff.Commit.Parent))), ),@@ -48,7 +48,9 @@ Strong(g.Text("changed files")), Ul(g.Map(diff.Diff, func(d git.Diff) g.Node { return Li( A( - Href(fmt.Sprintf("/%s/commit/%s/%s", data.Name, diff.Commit.This, d.Name.New)), + Href( + fmt.Sprintf("/%s/commit/%s/%s", data.Repo.Name, diff.Commit.This, d.Name.New), + ), g.Text(d.Name.New), ), )@@ -70,21 +72,30 @@ ), g.Text(" "), g.If(d.Name.Old != "", g.Group{ - A(Href(fmt.Sprintf("/%s/blob/%s/%s", data.Name, diff.Commit.Parent, d.Name.Old)), - g.Text(d.Name.Old)), + A( + Href( + fmt.Sprintf("/%s/blob/%s/%s", data.Repo.Name, diff.Commit.Parent, d.Name.Old), + ), + g.Text(d.Name.Old), + ), g.If(d.Name.New != "", g.Group{ g.Text(" → "), A( Href( - fmt.Sprintf("/%s/blob/%s/%s", data.Name, diff.Commit.This, d.Name.New), + fmt.Sprintf( + "/%s/blob/%s/%s", + data.Repo.Name, + diff.Commit.This, + d.Name.New, + ), ), g.Text(d.Name.New), ), }, ), }, - A(Href(fmt.Sprintf("/%s/blob/%s/%s", data.Name, diff.Commit.This, d.Name.New)), + A(Href(fmt.Sprintf("/%s/blob/%s/%s", data.Repo.Name, diff.Commit.This, d.Name.New)), g.Text(d.Name.New)), ), g.If(d.IsBinary,
M templates/log.go → templates/log.go
@@ -27,7 +27,7 @@ g.Map(commits, func(commit *git.CommitReference) g.Node { return g.Group{ Div(Class("commit-header"), A( - Href(fmt.Sprintf("/%s/commit/%s", data.Name, commit.Hash.String())), + Href(fmt.Sprintf("/%s/commit/%s", data.Repo.Name, commit.Hash.String())), Class("commit-message"), g.Text(firstLine(commit.Message)), ),@@ -36,7 +36,7 @@ g.If( commit.HasReference(), g.Map(commit.References(), func(ref *plumbing.Reference) g.Node { return A( - Href(fmt.Sprintf("/%s/tree/%s/", data.Name, ref.Name().Short())), + Href(fmt.Sprintf("/%s/tree/%s/", data.Repo.Name, ref.Name().Short())), Class("commit-reference"), g.Text(ref.Name().Short()), )
M templates/page.go → templates/page.go
@@ -5,6 +5,7 @@ "fmt" "strings" "alin.ovh/elgit/config" + "alin.ovh/elgit/data" "alin.ovh/elgit/git" g "alin.ovh/gomponents" c "alin.ovh/gomponents/components"@@ -18,9 +19,8 @@ } type PageData struct { Meta config.Meta - Name string + Repo *data.Repository Ref string - Description string Path string Parent string Diff []git.Diff@@ -31,28 +31,27 @@ Content string RenderedContent string Log bool Servername string - Gomod bool Error *Error } func RenderHead(data PageData) []g.Node { return []g.Node{ Link(Rel("stylesheet"), Href("/static/style.css"), Type("text/css")), - g.If(data.Servername != "" && data.Gomod, - Meta( + g.Iff(data.Servername != "" && data.Repo.Gomod, func() g.Node { + return Meta( Name("go-import"), - Content(fmt.Sprintf("%s/%s git https://%[1]s/%[2]s", data.Servername, data.Name)), - ), - ), + Content(fmt.Sprintf("%s/%s git https://%[1]s/%[2]s", data.Servername, data.Repo.Name)), + ) + }), } } func RenderNav(data PageData) g.Node { return Nav(Ul( - g.If(data.Name != "", NavItem(joinPaths(data.Name), "summary")), - g.If(data.Name != "", NavItem(joinPaths(data.Name, "refs", ""), "refs")), - g.If(data.Ref != "", NavItem(joinPaths(data.Name, "tree", data.Ref, ""), "tree")), - g.If(data.Ref != "", NavItem(joinPaths(data.Name, "log", data.Ref), "log")), + g.If(data.Repo.Name != "", NavItem(joinPaths(data.Repo.Name), "summary")), + g.If(data.Repo.Name != "", NavItem(joinPaths(data.Repo.Name, "refs", ""), "refs")), + g.If(data.Ref != "", NavItem(joinPaths(data.Repo.Name, "tree", data.Ref, ""), "tree")), + g.If(data.Ref != "", NavItem(joinPaths(data.Repo.Name, "log", data.Ref), "log")), )) }@@ -64,10 +63,10 @@ func RepoHeader(data PageData) g.Node { return Header( H2( A(Href("/"), g.Text("all repos")), - g.Textf(" — %s", data.Name), + g.Textf(" — %s", data.Repo.Name), g.If(data.Ref != "", Span(Class("ref"), g.Textf(" @ %s", data.Ref))), ), - H3(Class("desc"), g.Text(data.Description)), + H3(Class("desc"), g.Text(data.Repo.Description)), ) }@@ -89,11 +88,11 @@ metaTitle := data.Meta.Title switch { case data.Parent != "": - return fmt.Sprintf("%s — %s (%s): %s/", metaTitle, data.Name, data.Ref, data.Parent) + return fmt.Sprintf("%s — %s (%s): %s/", metaTitle, data.Repo.Name, data.Ref, data.Parent) case data.Path != "": - return fmt.Sprintf("%s — %s (%s): %s", metaTitle, data.Name, data.Ref, data.Path) - case data.Name != "": - return fmt.Sprintf("%s — %s", metaTitle, data.Name) + return fmt.Sprintf("%s — %s (%s): %s", metaTitle, data.Repo.Name, data.Ref, data.Path) + case data.Repo != nil && data.Repo.Name != "": + return fmt.Sprintf("%s — %s", metaTitle, data.Repo.Name) default: return metaTitle }
M templates/refs.go → templates/refs.go
@@ -21,14 +21,17 @@ g.Map(branches, func(branch *plumbing.Reference) g.Node { return Div( Strong(g.Text(branch.Name().Short())), A( - Href(fmt.Sprintf("/%s/tree/%s/", data.Name, branch.Name().Short())), + Href(fmt.Sprintf("/%s/tree/%s/", data.Repo.Name, branch.Name().Short())), g.Text("browse"), ), g.Text(" "), - A(Href(fmt.Sprintf("/%s/log/%s", data.Name, branch.Name().Short())), g.Text("log")), + A( + Href(fmt.Sprintf("/%s/log/%s", data.Repo.Name, branch.Name().Short())), + g.Text("log"), + ), g.Text(" "), A( - Href(fmt.Sprintf("/%s/archive/%s.tar.gz", data.Name, branch.Name().Short())), + Href(fmt.Sprintf("/%s/archive/%s.tar.gz", data.Repo.Name, branch.Name().Short())), g.Text("tar.gz"), ), )@@ -41,12 +44,12 @@ Div(Class("refs"), g.Map(tags, func(tag *git.TagReference) g.Node { return Div( Strong(Class("tag-name"), g.Text(tag.Name())), - A(Href(fmt.Sprintf("/%s/tree/%s/", data.Name, tag.Name())), g.Text("browse")), + A(Href(fmt.Sprintf("/%s/tree/%s/", data.Repo.Name, tag.Name())), g.Text("browse")), g.Text(" "), - A(Href(fmt.Sprintf("/%s/log/%s", data.Name, tag.Name())), g.Text("log")), + A(Href(fmt.Sprintf("/%s/log/%s", data.Repo.Name, tag.Name())), g.Text("log")), g.Text(" "), A( - Href(fmt.Sprintf("/%s/archive/%s.tar.gz", data.Name, tag.Name())), + Href(fmt.Sprintf("/%s/archive/%s.tar.gz", data.Repo.Name, tag.Name())), g.Text("tar.gz"), ), g.Text(" "),
M templates/repo.go → templates/repo.go
@@ -20,7 +20,7 @@ Article(Class("readme"), g.Raw(readme)), ), Div(Class("clone-url"), Strong(g.Text("clone")), - Pre(g.Text(fmt.Sprintf("git clone https://%s/%s", data.Servername, data.Name))), + Pre(g.Text(fmt.Sprintf("git clone https://%s/%s", data.Servername, data.Repo.Name))), ), ), })
M templates/tree.go → templates/tree.go
@@ -19,7 +19,7 @@ g.If(data.Parent != "", g.Group{ Div(), Div(), - Div(A(Href(joinPaths(data.Name, "tree", data.Ref, dotdot)), g.Text(".."))), + Div(A(Href(joinPaths(data.Repo.Name, "tree", data.Ref, dotdot)), g.Text(".."))), }, ), g.Map(files, func(file git.NiceTree) g.Node {@@ -31,12 +31,12 @@ Div( g.If(data.Parent != "", A( Href( - joinPaths(data.Name, "tree", data.Ref, data.Parent, file.Name), + joinPaths(data.Repo.Name, "tree", data.Ref, data.Parent, file.Name), ), g.Text(file.Name+"/"), ), A( - Href(joinPaths(data.Name, "tree", data.Ref, file.Name)), + Href(joinPaths(data.Repo.Name, "tree", data.Ref, file.Name)), g.Text(file.Name+"/"), ), ),@@ -55,12 +55,18 @@ Div( g.If(data.Parent != "", A( Href( - fmt.Sprintf("/%s/blob/%s/%s/%s", data.Name, data.Ref, data.Parent, file.Name), + fmt.Sprintf( + "/%s/blob/%s/%s/%s", + data.Repo.Name, + data.Ref, + data.Parent, + file.Name, + ), ), g.Text(file.Name), ), A( - Href(fmt.Sprintf("/%s/blob/%s/%s", data.Name, data.Ref, file.Name)), + Href(fmt.Sprintf("/%s/blob/%s/%s", data.Repo.Name, data.Ref, file.Name)), g.Text(file.Name), ), ),