cerrado @ d2c4023832e26d3fe3f77c9fa8581588ea812cc2

fix: Add support lightweight tags

For now all tags are read as reference. That cause tags to not carry its
message body by default but it will be added in the future. For now
simple tags will do.
  1diff --git a/pkg/git/git.go b/pkg/git/git.go
  2index ad5d3bca28fe075da5da0ea6ae72cb87bd09861a..428bfb164e78ca7e8055097fbe77a31b985e5da4 100644
  3--- a/pkg/git/git.go
  4+++ b/pkg/git/git.go
  5@@ -107,14 +107,14 @@ func (g *GitRepository) Head() (*plumbing.Reference, error) {
  6 	return g.repository.Head()
  7 }
  8 
  9-func (g *GitRepository) Tags() ([]*object.Tag, error) {
 10-	ti, err := g.repository.TagObjects()
 11+func (g *GitRepository) Tags() ([]*plumbing.Reference, error) {
 12+	ti, err := g.repository.Tags()
 13 	if err != nil {
 14 		return nil, err
 15 	}
 16 
 17-	tags := []*object.Tag{}
 18-	err = ti.ForEach(func(t *object.Tag) error {
 19+	tags := []*plumbing.Reference{}
 20+	err = ti.ForEach(func(t *plumbing.Reference) error {
 21 		tags = append(tags, t)
 22 		return nil
 23 	})
 24diff --git a/pkg/handler/git/handler.go b/pkg/handler/git/handler.go
 25index b4c7c5481ede247f1e2f67f7b9aa4c2ca6373863..48093629296b5531caef1fe0e4736576b205fca6 100644
 26--- a/pkg/handler/git/handler.go
 27+++ b/pkg/handler/git/handler.go
 28@@ -33,7 +33,7 @@ 		ListCommits(name string, ref string) ([]*object.Commit, error)
 29 		GetHead(name string) (*plumbing.Reference, error)
 30 		GetTree(name, ref, path string) (*object.Tree, error)
 31 		GetFileContent(name, ref, path string) (string, error)
 32-		ListTags(name string) ([]*object.Tag, error)
 33+		ListTags(name string) ([]*plumbing.Reference, error)
 34 		ListBranches(name string) ([]*plumbing.Reference, error)
 35 	}
 36 
 37diff --git a/pkg/service/git.go b/pkg/service/git.go
 38index 0907924cf24789e3a8f5a558231b7af319e409d1..071e10d640e86887901e442c608f898fa6058ffe 100644
 39--- a/pkg/service/git.go
 40+++ b/pkg/service/git.go
 41@@ -128,7 +128,7 @@
 42 	return repo.FileContent(path)
 43 }
 44 
 45-func (g *GitService) ListTags(name string) ([]*object.Tag, error) {
 46+func (g *GitService) ListTags(name string) ([]*plumbing.Reference, error) {
 47 	r := g.configRepo.GetByName(name)
 48 	if r == nil {
 49 		return nil, RepositoryNotFoundErr
 50diff --git a/scss/main.scss b/scss/main.scss
 51index 5500a383ec0e462a371173601b8a19e63e0820a0..af8a00210b514e60d9459176b42217b525a24b92 100644
 52--- a/scss/main.scss
 53+++ b/scss/main.scss
 54@@ -58,8 +58,14 @@     values: (
 55       start: left,
 56       end: right,
 57       center: center,
 58-  )
 59-),
 60+    )
 61+  ),
 62+  "margin-end": (
 63+    responsive: true,
 64+    property: margin-right,
 65+    class: me,
 66+    values: map-merge($spacers, (auto: auto))
 67+  ),
 68 );
 69 
 70 @import "bootstrap/scss/utilities/_api.scss";
 71diff --git a/templates/gititemrefs.qtpl b/templates/gititemrefs.qtpl
 72index 47a69e32967bc8e90fd2595efa487ff71380d593..09d7446a2dfa524db36d016a9ffcffafc57d504b 100644
 73--- a/templates/gititemrefs.qtpl
 74+++ b/templates/gititemrefs.qtpl
 75@@ -1,9 +1,8 @@
 76 {% import "github.com/go-git/go-git/v5/plumbing" %}
 77-{% import "github.com/go-git/go-git/v5/plumbing/object" %}
 78 
 79 {% code
 80 type GitItemRefsPage struct {
 81-    Tags []*object.Tag
 82+    Tags []*plumbing.Reference
 83     Branches []*plumbing.Reference
 84 }
 85 %}
 86@@ -13,21 +12,25 @@
 87 {% func (g *GitItemRefsPage) GitContent(name, ref string) %}
 88 <div class="row">
 89   <div class="col-md-8">
 90+    {% if len(g.Tags) > 0 %}
 91     <div class="event-list">
 92       {% for _, t := range g.Tags %}
 93-      <div class="row event">
 94-          <div class="col-xxl-2">
 95-           {%s TimeFormat(t.Tagger.When) %}
 96+      <div class="row event me-md-2">
 97+          <div class="col-4">
 98+           {%s t.Name().Short() %}
 99           </div>
100-          <div class="col-xxl-7">
101-           <pre>{%s t.Message %}</pre>
102-          </div>
103-          <div class="col-xxl-3">
104-           <small>{%s t.Tagger.Name %}</small>
105+          <div class="col-8">
106+            <div class="float-end">
107+              <a href="/{%s name %}/tree/{%s t.Name().Short() %}">tree</a>
108+              <a href="/{%s name %}/log/{%s t.Name().Short() %}">log</a>
109+            </div>
110           </div>
111       </div>
112       {% endfor %}
113     </div>
114+    {% else %}
115+        <p> No tags </p>
116+    {% endif %}
117   </div>
118   <div class="col-md-4">
119     <div class="event-list">
120diff --git a/templates/gititemrefs.qtpl.go b/templates/gititemrefs.qtpl.go
121index 95dd31a0114a36ee774711c902dea4bf809bc2df..62c1725248bccf069a7ab9b0f1fa10816fb1bc90 100644
122--- a/templates/gititemrefs.qtpl.go
123+++ b/templates/gititemrefs.qtpl.go
124@@ -7,175 +7,196 @@
125 //line gititemrefs.qtpl:1
126 import "github.com/go-git/go-git/v5/plumbing"
127 
128-//line gititemrefs.qtpl:2
129-import "github.com/go-git/go-git/v5/plumbing/object"
130-
131-//line gititemrefs.qtpl:4
132+//line gititemrefs.qtpl:3
133 import (
134 	qtio422016 "io"
135 
136 	qt422016 "github.com/valyala/quicktemplate"
137 )
138 
139-//line gititemrefs.qtpl:4
140+//line gititemrefs.qtpl:3
141 var (
142 	_ = qtio422016.Copy
143 	_ = qt422016.AcquireByteBuffer
144 )
145 
146-//line gititemrefs.qtpl:5
147+//line gititemrefs.qtpl:4
148 type GitItemRefsPage struct {
149-	Tags     []*object.Tag
150+	Tags     []*plumbing.Reference
151 	Branches []*plumbing.Reference
152 }
153 
154-//line gititemrefs.qtpl:11
155+//line gititemrefs.qtpl:10
156 func (g *GitItemRefsPage) StreamNav(qw422016 *qt422016.Writer, name, ref string) {
157-//line gititemrefs.qtpl:11
158+//line gititemrefs.qtpl:10
159 	StreamGitItemNav(qw422016, name, ref, Refs)
160-//line gititemrefs.qtpl:11
161+//line gititemrefs.qtpl:10
162 }
163 
164-//line gititemrefs.qtpl:11
165+//line gititemrefs.qtpl:10
166 func (g *GitItemRefsPage) WriteNav(qq422016 qtio422016.Writer, name, ref string) {
167-//line gititemrefs.qtpl:11
168+//line gititemrefs.qtpl:10
169 	qw422016 := qt422016.AcquireWriter(qq422016)
170-//line gititemrefs.qtpl:11
171+//line gititemrefs.qtpl:10
172 	g.StreamNav(qw422016, name, ref)
173-//line gititemrefs.qtpl:11
174+//line gititemrefs.qtpl:10
175 	qt422016.ReleaseWriter(qw422016)
176-//line gititemrefs.qtpl:11
177+//line gititemrefs.qtpl:10
178 }
179 
180-//line gititemrefs.qtpl:11
181+//line gititemrefs.qtpl:10
182 func (g *GitItemRefsPage) Nav(name, ref string) string {
183-//line gititemrefs.qtpl:11
184+//line gititemrefs.qtpl:10
185 	qb422016 := qt422016.AcquireByteBuffer()
186-//line gititemrefs.qtpl:11
187+//line gititemrefs.qtpl:10
188 	g.WriteNav(qb422016, name, ref)
189-//line gititemrefs.qtpl:11
190+//line gititemrefs.qtpl:10
191 	qs422016 := string(qb422016.B)
192-//line gititemrefs.qtpl:11
193+//line gititemrefs.qtpl:10
194 	qt422016.ReleaseByteBuffer(qb422016)
195-//line gititemrefs.qtpl:11
196+//line gititemrefs.qtpl:10
197 	return qs422016
198-//line gititemrefs.qtpl:11
199+//line gititemrefs.qtpl:10
200 }
201 
202-//line gititemrefs.qtpl:13
203+//line gititemrefs.qtpl:12
204 func (g *GitItemRefsPage) StreamGitContent(qw422016 *qt422016.Writer, name, ref string) {
205-//line gititemrefs.qtpl:13
206+//line gititemrefs.qtpl:12
207 	qw422016.N().S(`
208 <div class="row">
209   <div class="col-md-8">
210+    `)
211+//line gititemrefs.qtpl:15
212+	if len(g.Tags) > 0 {
213+//line gititemrefs.qtpl:15
214+		qw422016.N().S(`
215     <div class="event-list">
216       `)
217 //line gititemrefs.qtpl:17
218-	for _, t := range g.Tags {
219+		for _, t := range g.Tags {
220 //line gititemrefs.qtpl:17
221-		qw422016.N().S(`
222-      <div class="row event">
223-          <div class="col-xxl-2">
224+			qw422016.N().S(`
225+      <div class="row event me-md-2">
226+          <div class="col-4">
227            `)
228 //line gititemrefs.qtpl:20
229-		qw422016.E().S(TimeFormat(t.Tagger.When))
230+			qw422016.E().S(t.Name().Short())
231 //line gititemrefs.qtpl:20
232-		qw422016.N().S(`
233+			qw422016.N().S(`
234           </div>
235-          <div class="col-xxl-7">
236-           <pre>`)
237-//line gititemrefs.qtpl:23
238-		qw422016.E().S(t.Message)
239-//line gititemrefs.qtpl:23
240-		qw422016.N().S(`</pre>
241-          </div>
242-          <div class="col-xxl-3">
243-           <small>`)
244-//line gititemrefs.qtpl:26
245-		qw422016.E().S(t.Tagger.Name)
246-//line gititemrefs.qtpl:26
247-		qw422016.N().S(`</small>
248+          <div class="col-8">
249+            <div class="float-end">
250+              <a href="/`)
251+//line gititemrefs.qtpl:24
252+			qw422016.E().S(name)
253+//line gititemrefs.qtpl:24
254+			qw422016.N().S(`/tree/`)
255+//line gititemrefs.qtpl:24
256+			qw422016.E().S(t.Name().Short())
257+//line gititemrefs.qtpl:24
258+			qw422016.N().S(`">tree</a>
259+              <a href="/`)
260+//line gititemrefs.qtpl:25
261+			qw422016.E().S(name)
262+//line gititemrefs.qtpl:25
263+			qw422016.N().S(`/log/`)
264+//line gititemrefs.qtpl:25
265+			qw422016.E().S(t.Name().Short())
266+//line gititemrefs.qtpl:25
267+			qw422016.N().S(`">log</a>
268+            </div>
269           </div>
270       </div>
271       `)
272 //line gititemrefs.qtpl:29
273+		}
274+//line gititemrefs.qtpl:29
275+		qw422016.N().S(`
276+    </div>
277+    `)
278+//line gititemrefs.qtpl:31
279+	} else {
280+//line gititemrefs.qtpl:31
281+		qw422016.N().S(`
282+        <p> No tags </p>
283+    `)
284+//line gititemrefs.qtpl:33
285 	}
286-//line gititemrefs.qtpl:29
287+//line gititemrefs.qtpl:33
288 	qw422016.N().S(`
289-    </div>
290   </div>
291   <div class="col-md-4">
292     <div class="event-list">
293       `)
294-//line gititemrefs.qtpl:34
295+//line gititemrefs.qtpl:37
296 	for _, b := range g.Branches {
297-//line gititemrefs.qtpl:34
298+//line gititemrefs.qtpl:37
299 		qw422016.N().S(`
300       <div class="row event">
301           <div class="col-4">
302            `)
303-//line gititemrefs.qtpl:37
304+//line gititemrefs.qtpl:40
305 		qw422016.E().S(b.Name().Short())
306-//line gititemrefs.qtpl:37
307+//line gititemrefs.qtpl:40
308 		qw422016.N().S(`
309           </div>
310           <div class="col-8">
311             <div class="float-end">
312               <a href="/`)
313-//line gititemrefs.qtpl:41
314+//line gititemrefs.qtpl:44
315 		qw422016.E().S(name)
316-//line gititemrefs.qtpl:41
317+//line gititemrefs.qtpl:44
318 		qw422016.N().S(`/tree/`)
319-//line gititemrefs.qtpl:41
320+//line gititemrefs.qtpl:44
321 		qw422016.E().S(b.Name().Short())
322-//line gititemrefs.qtpl:41
323+//line gititemrefs.qtpl:44
324 		qw422016.N().S(`">tree</a>
325               <a href="/`)
326-//line gititemrefs.qtpl:42
327+//line gititemrefs.qtpl:45
328 		qw422016.E().S(name)
329-//line gititemrefs.qtpl:42
330+//line gititemrefs.qtpl:45
331 		qw422016.N().S(`/log/`)
332-//line gititemrefs.qtpl:42
333+//line gititemrefs.qtpl:45
334 		qw422016.E().S(b.Name().Short())
335-//line gititemrefs.qtpl:42
336+//line gititemrefs.qtpl:45
337 		qw422016.N().S(`">log</a>
338             </div>
339           </div>
340       </div>
341       `)
342-//line gititemrefs.qtpl:46
343+//line gititemrefs.qtpl:49
344 	}
345-//line gititemrefs.qtpl:46
346+//line gititemrefs.qtpl:49
347 	qw422016.N().S(`
348     </div>
349   </div>
350 </div>
351 `)
352-//line gititemrefs.qtpl:50
353+//line gititemrefs.qtpl:53
354 }
355 
356-//line gititemrefs.qtpl:50
357+//line gititemrefs.qtpl:53
358 func (g *GitItemRefsPage) WriteGitContent(qq422016 qtio422016.Writer, name, ref string) {
359-//line gititemrefs.qtpl:50
360+//line gititemrefs.qtpl:53
361 	qw422016 := qt422016.AcquireWriter(qq422016)
362-//line gititemrefs.qtpl:50
363+//line gititemrefs.qtpl:53
364 	g.StreamGitContent(qw422016, name, ref)
365-//line gititemrefs.qtpl:50
366+//line gititemrefs.qtpl:53
367 	qt422016.ReleaseWriter(qw422016)
368-//line gititemrefs.qtpl:50
369+//line gititemrefs.qtpl:53
370 }
371 
372-//line gititemrefs.qtpl:50
373+//line gititemrefs.qtpl:53
374 func (g *GitItemRefsPage) GitContent(name, ref string) string {
375-//line gititemrefs.qtpl:50
376+//line gititemrefs.qtpl:53
377 	qb422016 := qt422016.AcquireByteBuffer()
378-//line gititemrefs.qtpl:50
379+//line gititemrefs.qtpl:53
380 	g.WriteGitContent(qb422016, name, ref)
381-//line gititemrefs.qtpl:50
382+//line gititemrefs.qtpl:53
383 	qs422016 := string(qb422016.B)
384-//line gititemrefs.qtpl:50
385+//line gititemrefs.qtpl:53
386 	qt422016.ReleaseByteBuffer(qb422016)
387-//line gititemrefs.qtpl:50
388+//line gititemrefs.qtpl:53
389 	return qs422016
390-//line gititemrefs.qtpl:50
391+//line gititemrefs.qtpl:53
392 }