v0.36.0 1fb2421

releases_templ.go RawHistoryFolder

1// Code generated by templ - DO NOT EDIT.
2
3// templ: version: v0.3.1020
4package web
5
6//lint:file-ignore SA4006 This context is only used if a nested component is present.
7
8import "github.com/a-h/templ"
9import templruntime "github.com/a-h/templ/runtime"
10
11// ReleaseBadges are textual as well as visual, including the computed latest.
12func ReleaseBadges(r ReleaseRow) templ.Component {
13	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
14		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
15		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
16			return templ_7745c5c3_CtxErr
17		}
18		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
19		if !templ_7745c5c3_IsBuffer {
20			defer func() {
21				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
22				if templ_7745c5c3_Err == nil {
23					templ_7745c5c3_Err = templ_7745c5c3_BufErr
24				}
25			}()
26		}
27		ctx = templ.InitializeContext(ctx)
28		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
29		if templ_7745c5c3_Var1 == nil {
30			templ_7745c5c3_Var1 = templ.NopComponent
31		}
32		ctx = templ.ClearChildren(ctx)
33		if r.Draft {
34			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<span class=\"pill\">Draft</span> ")
35			if templ_7745c5c3_Err != nil {
36				return templ_7745c5c3_Err
37			}
38		}
39		if r.Prerelease {
40			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<span class=\"pill\">Pre-release</span> ")
41			if templ_7745c5c3_Err != nil {
42				return templ_7745c5c3_Err
43			}
44		}
45		if r.Latest {
46			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<span class=\"pill\">Latest</span>")
47			if templ_7745c5c3_Err != nil {
48				return templ_7745c5c3_Err
49			}
50		}
51		return nil
52	})
53}
54
55func Releases(l Layout, p ReleaseListPage) templ.Component {
56	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
57		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
58		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
59			return templ_7745c5c3_CtxErr
60		}
61		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
62		if !templ_7745c5c3_IsBuffer {
63			defer func() {
64				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
65				if templ_7745c5c3_Err == nil {
66					templ_7745c5c3_Err = templ_7745c5c3_BufErr
67				}
68			}()
69		}
70		ctx = templ.InitializeContext(ctx)
71		templ_7745c5c3_Var2 := templ.GetChildren(ctx)
72		if templ_7745c5c3_Var2 == nil {
73			templ_7745c5c3_Var2 = templ.NopComponent
74		}
75		ctx = templ.ClearChildren(ctx)
76		templ_7745c5c3_Var3 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
77			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
78			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
79			if !templ_7745c5c3_IsBuffer {
80				defer func() {
81					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
82					if templ_7745c5c3_Err == nil {
83						templ_7745c5c3_Err = templ_7745c5c3_BufErr
84					}
85				}()
86			}
87			ctx = templ.InitializeContext(ctx)
88			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<h1>Releases</h1>")
89			if templ_7745c5c3_Err != nil {
90				return templ_7745c5c3_Err
91			}
92			if len(p.Rows) == 0 {
93				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<p class=\"dim\">no releases yet.</p>")
94				if templ_7745c5c3_Err != nil {
95					return templ_7745c5c3_Err
96				}
97			} else {
98				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<table class=\"list\" aria-label=\"Releases\"><thead><tr><th>tag</th><th>title</th><th>published</th><th>assets</th></tr></thead> <tbody>")
99				if templ_7745c5c3_Err != nil {
100					return templ_7745c5c3_Err
101				}
102				for _, r := range p.Rows {
103					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<tr><td><a href=\"")
104					if templ_7745c5c3_Err != nil {
105						return templ_7745c5c3_Err
106					}
107					var templ_7745c5c3_Var4 templ.SafeURL
108					templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
109					if templ_7745c5c3_Err != nil {
110						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 27, Col: 42}
111					}
112					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
113					if templ_7745c5c3_Err != nil {
114						return templ_7745c5c3_Err
115					}
116					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "\">")
117					if templ_7745c5c3_Err != nil {
118						return templ_7745c5c3_Err
119					}
120					var templ_7745c5c3_Var5 string
121					templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(r.Tag)
122					if templ_7745c5c3_Err != nil {
123						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 27, Col: 52}
124					}
125					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
126					if templ_7745c5c3_Err != nil {
127						return templ_7745c5c3_Err
128					}
129					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</a></td><td>")
130					if templ_7745c5c3_Err != nil {
131						return templ_7745c5c3_Err
132					}
133					var templ_7745c5c3_Var6 string
134					templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(r.Title)
135					if templ_7745c5c3_Err != nil {
136						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 28, Col: 20}
137					}
138					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
139					if templ_7745c5c3_Err != nil {
140						return templ_7745c5c3_Err
141					}
142					templ_7745c5c3_Err = ReleaseBadges(r).Render(ctx, templ_7745c5c3_Buffer)
143					if templ_7745c5c3_Err != nil {
144						return templ_7745c5c3_Err
145					}
146					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</td><td>")
147					if templ_7745c5c3_Err != nil {
148						return templ_7745c5c3_Err
149					}
150					var templ_7745c5c3_Var7 string
151					templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(r.Published)
152					if templ_7745c5c3_Err != nil {
153						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 29, Col: 24}
154					}
155					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
156					if templ_7745c5c3_Err != nil {
157						return templ_7745c5c3_Err
158					}
159					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</td><td>")
160					if templ_7745c5c3_Err != nil {
161						return templ_7745c5c3_Err
162					}
163					var templ_7745c5c3_Var8 string
164					templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(r.AssetCount))
165					if templ_7745c5c3_Err != nil {
166						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 29, Col: 55}
167					}
168					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
169					if templ_7745c5c3_Err != nil {
170						return templ_7745c5c3_Err
171					}
172					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "</td></tr>")
173					if templ_7745c5c3_Err != nil {
174						return templ_7745c5c3_Err
175					}
176				}
177				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</tbody></table>")
178				if templ_7745c5c3_Err != nil {
179					return templ_7745c5c3_Err
180				}
181			}
182			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, " ")
183			if templ_7745c5c3_Err != nil {
184				return templ_7745c5c3_Err
185			}
186			if p.Older != "" {
187				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "<p class=\"more\"><a href=\"")
188				if templ_7745c5c3_Err != nil {
189					return templ_7745c5c3_Err
190				}
191				var templ_7745c5c3_Var9 templ.SafeURL
192				templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Older))
193				if templ_7745c5c3_Err != nil {
194					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 36, Col: 51}
195				}
196				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
197				if templ_7745c5c3_Err != nil {
198					return templ_7745c5c3_Err
199				}
200				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\" rel=\"next\">older releases</a></p>")
201				if templ_7745c5c3_Err != nil {
202					return templ_7745c5c3_Err
203				}
204			}
205			return nil
206		})
207		templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var3), templ_7745c5c3_Buffer)
208		if templ_7745c5c3_Err != nil {
209			return templ_7745c5c3_Err
210		}
211		return nil
212	})
213}
214
215func ReleaseDetail(l Layout, p ReleaseDetailPage) templ.Component {
216	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
217		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
218		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
219			return templ_7745c5c3_CtxErr
220		}
221		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
222		if !templ_7745c5c3_IsBuffer {
223			defer func() {
224				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
225				if templ_7745c5c3_Err == nil {
226					templ_7745c5c3_Err = templ_7745c5c3_BufErr
227				}
228			}()
229		}
230		ctx = templ.InitializeContext(ctx)
231		templ_7745c5c3_Var10 := templ.GetChildren(ctx)
232		if templ_7745c5c3_Var10 == nil {
233			templ_7745c5c3_Var10 = templ.NopComponent
234		}
235		ctx = templ.ClearChildren(ctx)
236		templ_7745c5c3_Var11 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
237			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
238			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
239			if !templ_7745c5c3_IsBuffer {
240				defer func() {
241					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
242					if templ_7745c5c3_Err == nil {
243						templ_7745c5c3_Err = templ_7745c5c3_BufErr
244					}
245				}()
246			}
247			ctx = templ.InitializeContext(ctx)
248			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<section class=\"mr-card\"><header class=\"show mr-h\"><h1>")
249			if templ_7745c5c3_Err != nil {
250				return templ_7745c5c3_Err
251			}
252			var templ_7745c5c3_Var12 string
253			templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
254			if templ_7745c5c3_Err != nil {
255				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 45, Col: 17}
256			}
257			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
258			if templ_7745c5c3_Err != nil {
259				return templ_7745c5c3_Err
260			}
261			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</h1><dl class=\"kv show-kv\"><dt>tag</dt><dd><span class=\"pill\">")
262			if templ_7745c5c3_Err != nil {
263				return templ_7745c5c3_Err
264			}
265			var templ_7745c5c3_Var13 string
266			templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(p.Tag)
267			if templ_7745c5c3_Err != nil {
268				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 48, Col: 35}
269			}
270			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
271			if templ_7745c5c3_Err != nil {
272				return templ_7745c5c3_Err
273			}
274			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</span>")
275			if templ_7745c5c3_Err != nil {
276				return templ_7745c5c3_Err
277			}
278			templ_7745c5c3_Err = ReleaseBadges(p.ReleaseRow).Render(ctx, templ_7745c5c3_Buffer)
279			if templ_7745c5c3_Err != nil {
280				return templ_7745c5c3_Err
281			}
282			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</dd>")
283			if templ_7745c5c3_Err != nil {
284				return templ_7745c5c3_Err
285			}
286			if p.SHA != "" {
287				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<dt>commit</dt><dd><a href=\"")
288				if templ_7745c5c3_Err != nil {
289					return templ_7745c5c3_Err
290				}
291				var templ_7745c5c3_Var14 templ.SafeURL
292				templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.CommitHref))
293				if templ_7745c5c3_Err != nil {
294					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 51, Col: 47}
295				}
296				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
297				if templ_7745c5c3_Err != nil {
298					return templ_7745c5c3_Err
299				}
300				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\"><code>")
301				if templ_7745c5c3_Err != nil {
302					return templ_7745c5c3_Err
303				}
304				var templ_7745c5c3_Var15 string
305				templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(p.SHA)
306				if templ_7745c5c3_Err != nil {
307					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 51, Col: 63}
308				}
309				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
310				if templ_7745c5c3_Err != nil {
311					return templ_7745c5c3_Err
312				}
313				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</code></a></dd>")
314				if templ_7745c5c3_Err != nil {
315					return templ_7745c5c3_Err
316				}
317			}
318			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<dt>published</dt><dd>")
319			if templ_7745c5c3_Err != nil {
320				return templ_7745c5c3_Err
321			}
322			var templ_7745c5c3_Var16 string
323			templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(p.Published)
324			if templ_7745c5c3_Err != nil {
325				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 54, Col: 22}
326			}
327			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
328			if templ_7745c5c3_Err != nil {
329				return templ_7745c5c3_Err
330			}
331			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</dd></dl></header><article class=\"mr-desc prose\">")
332			if templ_7745c5c3_Err != nil {
333				return templ_7745c5c3_Err
334			}
335			templ_7745c5c3_Err = templ.Raw(string(p.Notes)).Render(ctx, templ_7745c5c3_Buffer)
336			if templ_7745c5c3_Err != nil {
337				return templ_7745c5c3_Err
338			}
339			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</article></section><h2>Assets</h2>")
340			if templ_7745c5c3_Err != nil {
341				return templ_7745c5c3_Err
342			}
343			if len(p.Assets) == 0 {
344				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<p class=\"dim\">no assets.</p>")
345				if templ_7745c5c3_Err != nil {
346					return templ_7745c5c3_Err
347				}
348			} else {
349				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "<table class=\"list\" aria-label=\"Release assets\"><thead><tr><th>name</th><th>size</th><th>content type</th></tr></thead> <tbody>")
350				if templ_7745c5c3_Err != nil {
351					return templ_7745c5c3_Err
352				}
353				for _, a := range p.Assets {
354					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "<tr><td><a href=\"")
355					if templ_7745c5c3_Err != nil {
356						return templ_7745c5c3_Err
357					}
358					var templ_7745c5c3_Var17 templ.SafeURL
359					templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(a.Href))
360					if templ_7745c5c3_Err != nil {
361						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 67, Col: 45}
362					}
363					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
364					if templ_7745c5c3_Err != nil {
365						return templ_7745c5c3_Err
366					}
367					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "\" download>")
368					if templ_7745c5c3_Err != nil {
369						return templ_7745c5c3_Err
370					}
371					var templ_7745c5c3_Var18 string
372					templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(a.Name)
373					if templ_7745c5c3_Err != nil {
374						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 67, Col: 65}
375					}
376					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
377					if templ_7745c5c3_Err != nil {
378						return templ_7745c5c3_Err
379					}
380					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</a></td><td>")
381					if templ_7745c5c3_Err != nil {
382						return templ_7745c5c3_Err
383					}
384					var templ_7745c5c3_Var19 string
385					templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(a.Size)
386					if templ_7745c5c3_Err != nil {
387						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 67, Col: 88}
388					}
389					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
390					if templ_7745c5c3_Err != nil {
391						return templ_7745c5c3_Err
392					}
393					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</td><td>")
394					if templ_7745c5c3_Err != nil {
395						return templ_7745c5c3_Err
396					}
397					var templ_7745c5c3_Var20 string
398					templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(a.ContentType)
399					if templ_7745c5c3_Err != nil {
400						return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 67, Col: 114}
401					}
402					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
403					if templ_7745c5c3_Err != nil {
404						return templ_7745c5c3_Err
405					}
406					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</td></tr>")
407					if templ_7745c5c3_Err != nil {
408						return templ_7745c5c3_Err
409					}
410				}
411				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</tbody></table>")
412				if templ_7745c5c3_Err != nil {
413					return templ_7745c5c3_Err
414				}
415			}
416			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, " <p><a href=\"")
417			if templ_7745c5c3_Err != nil {
418				return templ_7745c5c3_Err
419			}
420			var templ_7745c5c3_Var21 templ.SafeURL
421			templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.SourceHref))
422			if templ_7745c5c3_Err != nil {
423				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/releases.templ`, Line: 72, Col: 42}
424			}
425			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
426			if templ_7745c5c3_Err != nil {
427				return templ_7745c5c3_Err
428			}
429			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "\">Source</a></p>")
430			if templ_7745c5c3_Err != nil {
431				return templ_7745c5c3_Err
432			}
433			return nil
434		})
435		templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var11), templ_7745c5c3_Buffer)
436		if templ_7745c5c3_Err != nil {
437			return templ_7745c5c3_Err
438		}
439		return nil
440	})
441}
442
443var _ = templruntime.GeneratedTemplate

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 4

Tags 45

↑↓ moveenter openesc close