From e775b5356ea3adaeeca2d4be5ef874b36fa183d0 Mon Sep 17 00:00:00 2001 From: "Gabriel A. Giovanini" Date: Sun, 4 Aug 2024 15:00:13 +0200 Subject: feat: Handle submodule Submodules tree entries won't have a broken link and will be labeled properly. --- README.md | 1 - templates/gititemtree.qtpl | 7 +- templates/gititemtree.qtpl.go | 179 +++++++++++++++++++++++------------------- 3 files changed, 103 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index f6e202a..3f1a12e 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,6 @@ To run the project you just need to do a make run. - Impove diff display - Add log pagination -- Fix submodule link on tree view ### Milestone - Mail patch / mailing list diff --git a/templates/gititemtree.qtpl b/templates/gititemtree.qtpl index 5898506..2753e24 100644 --- a/templates/gititemtree.qtpl +++ b/templates/gititemtree.qtpl @@ -1,5 +1,6 @@ {% import "git.gabrielgio.me/cerrado/pkg/u" %} {% import "github.com/go-git/go-git/v5/plumbing/object" %} +{% import "github.com/go-git/go-git/v5/plumbing/filemode" %} {% code type GitItemTreePage struct { Path []string @@ -52,10 +53,14 @@
{% endif %} {% for _, e := range g.Tree.Entries %} -
{%s Ignore(e.Mode.ToOSFileMode()).String() %}
{% if e.Mode.IsFile() %} +
{%s Ignore(e.Mode.ToOSFileMode()).String() %}
{%s e.Name %}
+ {% elseif e.Mode == filemode.Submodule %} +
m---------
+
{%s e.Name %} (submodule)
{% else %} +
d---------
{%s e.Name %}
{% endif %}
diff --git a/templates/gititemtree.qtpl.go b/templates/gititemtree.qtpl.go index f8d1fd2..f26b5ca 100644 --- a/templates/gititemtree.qtpl.go +++ b/templates/gititemtree.qtpl.go @@ -10,33 +10,36 @@ import "git.gabrielgio.me/cerrado/pkg/u" //line gititemtree.qtpl:2 import "github.com/go-git/go-git/v5/plumbing/object" -//line gititemtree.qtpl:4 +//line gititemtree.qtpl:3 +import "github.com/go-git/go-git/v5/plumbing/filemode" + +//line gititemtree.qtpl:5 import ( qtio422016 "io" qt422016 "github.com/valyala/quicktemplate" ) -//line gititemtree.qtpl:4 +//line gititemtree.qtpl:5 var ( _ = qtio422016.Copy _ = qt422016.AcquireByteBuffer ) -//line gititemtree.qtpl:4 +//line gititemtree.qtpl:5 type GitItemTreePage struct { Path []string Tree *object.Tree } -//line gititemtree.qtpl:10 +//line gititemtree.qtpl:11 const ( Folder = "tree" Blob = "blob" Root = "" ) -//line gititemtree.qtpl:17 +//line gititemtree.qtpl:18 func url(name, mode, ref, filename string, path []string) string { return u.NewPathing(). AddPath(name). @@ -47,188 +50,200 @@ func url(name, mode, ref, filename string, path []string) string { Done() } -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 func (g *GitItemTreePage) StreamNav(qw422016 *qt422016.Writer, name, ref string) { -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 StreamGitItemNav(qw422016, name, ref, Tree) -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 } -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 func (g *GitItemTreePage) WriteNav(qq422016 qtio422016.Writer, name, ref string) { -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 qw422016 := qt422016.AcquireWriter(qq422016) -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 g.StreamNav(qw422016, name, ref) -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 qt422016.ReleaseWriter(qw422016) -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 } -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 func (g *GitItemTreePage) Nav(name, ref string) string { -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 qb422016 := qt422016.AcquireByteBuffer() -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 g.WriteNav(qb422016, name, ref) -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 qs422016 := string(qb422016.B) -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 qt422016.ReleaseByteBuffer(qb422016) -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 return qs422016 -//line gititemtree.qtpl:28 +//line gititemtree.qtpl:29 } -//line gititemtree.qtpl:30 +//line gititemtree.qtpl:31 func (g *GitItemTreePage) StreamGitContent(qw422016 *qt422016.Writer, name, ref string) { -//line gititemtree.qtpl:30 +//line gititemtree.qtpl:31 qw422016.N().S(`
`) -//line gititemtree.qtpl:33 +//line gititemtree.qtpl:34 if len(g.Path) != 0 { -//line gititemtree.qtpl:33 - qw422016.N().S(`root/`) //line gititemtree.qtpl:35 + qw422016.N().S(`">root/`) +//line gititemtree.qtpl:36 for i, e := range g.Path[:len(g.Path)-1] { -//line gititemtree.qtpl:35 - qw422016.N().S(``) -//line gititemtree.qtpl:36 +//line gititemtree.qtpl:37 qw422016.E().S(e) -//line gititemtree.qtpl:36 - qw422016.N().S(`/`) //line gititemtree.qtpl:37 + qw422016.N().S(`/`) +//line gititemtree.qtpl:38 } -//line gititemtree.qtpl:37 - qw422016.N().S(``) //line gititemtree.qtpl:38 + qw422016.N().S(``) +//line gititemtree.qtpl:39 qw422016.E().S(u.LastOrZero(g.Path)) -//line gititemtree.qtpl:38 - qw422016.N().S(``) //line gititemtree.qtpl:39 + qw422016.N().S(``) +//line gititemtree.qtpl:40 } else { -//line gititemtree.qtpl:39 +//line gititemtree.qtpl:40 qw422016.N().S(`root/`) -//line gititemtree.qtpl:41 - } //line gititemtree.qtpl:42 + } +//line gititemtree.qtpl:43 qw422016.N().S(`
`) -//line gititemtree.qtpl:47 +//line gititemtree.qtpl:48 if len(g.Path) != 0 { -//line gititemtree.qtpl:47 +//line gititemtree.qtpl:48 qw422016.N().S(`
`) -//line gititemtree.qtpl:53 +//line gititemtree.qtpl:54 } -//line gititemtree.qtpl:53 +//line gititemtree.qtpl:54 qw422016.N().S(` `) -//line gititemtree.qtpl:54 - for _, e := range g.Tree.Entries { -//line gititemtree.qtpl:54 - qw422016.N().S(` -
`) //line gititemtree.qtpl:55 - qw422016.E().S(Ignore(e.Mode.ToOSFileMode()).String()) + for _, e := range g.Tree.Entries { //line gititemtree.qtpl:55 - qw422016.N().S(`
+ qw422016.N().S(` `) //line gititemtree.qtpl:56 if e.Mode.IsFile() { //line gititemtree.qtpl:56 qw422016.N().S(` - + `) -//line gititemtree.qtpl:58 +//line gititemtree.qtpl:59 + } else if e.Mode == filemode.Submodule { +//line gititemtree.qtpl:59 + qw422016.N().S(` +
m---------
+
`) +//line gititemtree.qtpl:61 + qw422016.E().S(e.Name) +//line gititemtree.qtpl:61 + qw422016.N().S(` (submodule)
+ `) +//line gititemtree.qtpl:62 } else { -//line gititemtree.qtpl:58 +//line gititemtree.qtpl:62 qw422016.N().S(` +
d---------
`) -//line gititemtree.qtpl:60 +//line gititemtree.qtpl:65 } -//line gititemtree.qtpl:60 +//line gititemtree.qtpl:65 qw422016.N().S(`
`) -//line gititemtree.qtpl:63 +//line gititemtree.qtpl:68 qw422016.N().DL(Ignore(g.Tree.Size(e.Name))) -//line gititemtree.qtpl:63 +//line gititemtree.qtpl:68 qw422016.N().S(` KiB
`) -//line gititemtree.qtpl:64 +//line gititemtree.qtpl:69 } -//line gititemtree.qtpl:64 +//line gititemtree.qtpl:69 qw422016.N().S(`
`) -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 } -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 func (g *GitItemTreePage) WriteGitContent(qq422016 qtio422016.Writer, name, ref string) { -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 qw422016 := qt422016.AcquireWriter(qq422016) -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 g.StreamGitContent(qw422016, name, ref) -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 qt422016.ReleaseWriter(qw422016) -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 } -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 func (g *GitItemTreePage) GitContent(name, ref string) string { -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 qb422016 := qt422016.AcquireByteBuffer() -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 g.WriteGitContent(qb422016, name, ref) -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 qs422016 := string(qb422016.B) -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 qt422016.ReleaseByteBuffer(qb422016) -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 return qs422016 -//line gititemtree.qtpl:68 +//line gititemtree.qtpl:73 } -- cgit v1.2.3