{% 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 Tree *object.Tree } %} {% code const ( Folder = "tree" Blob = "blob" Root = "" ) %} {% code func url(name, mode, ref, filename string, path []string) string { return u.NewPathing(). AddPath(name). AddPath(mode). AddPath(ref). AddPaths(path). AddPath(filename). Done() } %} {% func (g *GitItemTreePage) Nav(name, ref string) %}{%= GitItemNav(name, ref, Tree) %}{% endfunc %} {% func (g *GitItemTreePage) GitContent(name, ref string) %} <div class="pathing"> {% stripspace %} {% if len(g.Path) != 0 %} <a href="{%s url(name, Folder, ref, Root, []string{}) %}">root/</a> {% for i, e := range g.Path[:len(g.Path)-1] %} <a href="{%s url(name, Folder, ref, Root, g.Path[:1+i]) %}">{%s e %}/</a> {% endfor %} <a>{%s u.LastOrZero(g.Path) %}</a> {% else %} <a>root/</a> {% endif %} {% endstripspace %} </div> <div class="row"> <div class="col-md-12"> <div class="tree-list"> {% if len(g.Path) != 0 %} <div class="mode"><a href="{%s url(name, Folder, ref, g.Path[len(g.Path)-1], g.Path[:len(g.Path)-1]) %}">..</a></div> <div class="name tree"></div> <div class="commit"></div> <div class="date"></div> <div class="size"></div> {% endif %} {% for _, e := range g.Tree.Entries %} {% if e.Mode.IsFile() %} <div class="mode">{%s Ignore(e.Mode.ToOSFileMode()).String() %}</div> <div class="name blob"><a href="{%s url(name, Blob, ref, e.Name, g.Path) %}">{%s e.Name %}</a></div> {% elseif e.Mode == filemode.Submodule %} <div class="mode">m---------</div> <div class="name tree">{%s e.Name %} (submodule)</div> {% else %} <div class="mode">d---------</div> <div class="name tree"><a href="{%s url(name, Folder, ref, e.Name, g.Path) %}">{%s e.Name %}</a></div> {% endif %} <div class="commit"></div> <div class="date"></div> <div class="size">{%dl Ignore(g.Tree.Size(e.Name))%} KiB</div> {% endfor %} </div> </div> </div> {% endfunc %}