apkdoc @ 2b060e55e538a70f0edcd25d9a4c491a03d50149

feat: Add link to the commit for a given format
  1diff --git a/main.go b/main.go
  2index cfc56c4e483d0a58972fda410b6a563f45629d71..3488c325f99c78bb095d7c5967f73eb84ab365a4 100644
  3--- a/main.go
  4+++ b/main.go
  5@@ -30,6 +30,7 @@
  6 func main() {
  7 	url := flag.String("url", "", "Url to the APKINDEX.tar.gz")
  8 	output := flag.String("output", "index.md", "Output path")
  9+	repositoryFormat := flag.String("repository-format", "https://git.sr.ht/~gabrielgio/apkbuilds/tree/%s/item/apks/%s", "Template to build repository link")
 10 	flag.Parse()
 11 
 12 	tarStream, err := fechIndex(*url)
 13@@ -78,5 +79,5 @@ 	if err != nil {
 14 		panic("Error opening output file: " + err.Error())
 15 	}
 16 
 17-	templates.WriteMarkdownTemplate(file, entries)
 18+	templates.WriteMarkdownTemplate(file, entries, *repositoryFormat)
 19 }
 20diff --git a/templates/index.md.qtpl b/templates/index.md.qtpl
 21index 80439c9e5c70751d1b235eaf715e0bbe174ed4b7..434d64090a55531cb34b070cdc1cf88ee15d3d63 100644
 22--- a/templates/index.md.qtpl
 23+++ b/templates/index.md.qtpl
 24@@ -1,13 +1,19 @@
 25+{% import "fmt" %}
 26+{% import "strings" %}
 27 {% import "git.sr.ht/~gabrielgio/apkdoc/parser" %}
 28-{% import "strings" %}
 29 
 30 {% code 
 31 func reduce(lines []string) string {
 32     return strings.Join(lines, " ")
 33 }
 34+
 35+func formatLink(e *parser.Entry, format string) string {
 36+    c := strings.Replace(*e.Commit, "-dirty", "", -1)
 37+    return fmt.Sprintf(format, c, *e.Origin)
 38+}
 39 %}
 40 
 41-{% func MarkdownTemplate(entries []*parser.Entry) %}
 42+{% func MarkdownTemplate(entries []*parser.Entry, format string) %}
 43 # Apks Alpine 3.18
 44 {% for _, e := range entries %}
 45 ## {%s e.Name %}
 46@@ -23,7 +29,7 @@ - **Url**: {%s e.Url%}
 47 - **License**: {%s e.License%}{% if e.Origin != nil %}
 48 - **Origin**: {%s *e.Origin%}{% endif %}{% if e.BuildTime != nil %}
 49 - **Build time**: {%s e.BuildTime.String() %}{% endif %}{% if e.Commit != nil %}
 50-- **Commit**: {%s *e.Commit %}{% endif %}{% if e.ProviderPriority != nil %}
 51+- **Commit**: [{%s *e.Commit %}]({%s formatLink(e, format) %}){% endif %}{% if e.ProviderPriority != nil %}
 52 - **Provider Priority**: {%d *e.ProviderPriority %}{% endif %}{% if len(e.Dependencies) > 0 %}
 53 - **Dependencies:**: {%s reduce(e.Dependencies) %}{% endif %}{% if len(e.Provides) > 0 %}
 54 - **Provides:**: {%s reduce(e.Provides) %}{% endif %}{% if len(e.InstallIf) > 0 %}
 55diff --git a/templates/index.md.qtpl.go b/templates/index.md.qtpl.go
 56index 9229465a9bb2b0115995bfafbc91bc65d91e486f..c87d94794faa3dcbd9a9b07647af67a631cc8b34 100644
 57--- a/templates/index.md.qtpl.go
 58+++ b/templates/index.md.qtpl.go
 59@@ -5,193 +5,207 @@ //line index.md.qtpl:1
 60 package templates
 61 
 62 //line index.md.qtpl:1
 63-import "git.sr.ht/~gabrielgio/apkdoc/parser"
 64+import "fmt"
 65 
 66 //line index.md.qtpl:2
 67 import "strings"
 68 
 69-//line index.md.qtpl:4
 70+//line index.md.qtpl:3
 71+import "git.sr.ht/~gabrielgio/apkdoc/parser"
 72+
 73+//line index.md.qtpl:5
 74 import (
 75 	qtio422016 "io"
 76 
 77 	qt422016 "github.com/valyala/quicktemplate"
 78 )
 79 
 80-//line index.md.qtpl:4
 81+//line index.md.qtpl:5
 82 var (
 83 	_ = qtio422016.Copy
 84 	_ = qt422016.AcquireByteBuffer
 85 )
 86 
 87-//line index.md.qtpl:5
 88+//line index.md.qtpl:6
 89 func reduce(lines []string) string {
 90 	return strings.Join(lines, " ")
 91 }
 92 
 93-//line index.md.qtpl:10
 94-func StreamMarkdownTemplate(qw422016 *qt422016.Writer, entries []*parser.Entry) {
 95-//line index.md.qtpl:10
 96+func formatLink(e *parser.Entry, format string) string {
 97+	c := strings.Replace(*e.Commit, "-dirty", "", -1)
 98+	return fmt.Sprintf(format, c, *e.Origin)
 99+}
100+
101+//line index.md.qtpl:16
102+func StreamMarkdownTemplate(qw422016 *qt422016.Writer, entries []*parser.Entry, format string) {
103+//line index.md.qtpl:16
104 	qw422016.N().S(`
105 # Apks Alpine 3.18
106 `)
107-//line index.md.qtpl:12
108+//line index.md.qtpl:18
109 	for _, e := range entries {
110-//line index.md.qtpl:12
111+//line index.md.qtpl:18
112 		qw422016.N().S(`
113 ## `)
114-//line index.md.qtpl:13
115+//line index.md.qtpl:19
116 		qw422016.E().S(e.Name)
117-//line index.md.qtpl:13
118+//line index.md.qtpl:19
119 		qw422016.N().S(`
120 
121 - **Version**: `)
122-//line index.md.qtpl:15
123+//line index.md.qtpl:21
124 		qw422016.E().S(e.Version)
125-//line index.md.qtpl:15
126+//line index.md.qtpl:21
127 		qw422016.N().S(`
128 - **Description**: `)
129-//line index.md.qtpl:16
130+//line index.md.qtpl:22
131 		qw422016.E().S(e.Description)
132-//line index.md.qtpl:16
133+//line index.md.qtpl:22
134 		if e.Maintainer != nil {
135-//line index.md.qtpl:16
136+//line index.md.qtpl:22
137 			qw422016.N().S(`
138 - **Maintainer**: `)
139-//line index.md.qtpl:17
140+//line index.md.qtpl:23
141 			qw422016.E().S(*e.Maintainer)
142-//line index.md.qtpl:17
143+//line index.md.qtpl:23
144 		}
145-//line index.md.qtpl:17
146+//line index.md.qtpl:23
147 		qw422016.N().S(`
148 - **Checksum**:`)
149-//line index.md.qtpl:18
150+//line index.md.qtpl:24
151 		qw422016.E().S(e.Checksum)
152-//line index.md.qtpl:18
153+//line index.md.qtpl:24
154 		if e.Architecture != nil {
155-//line index.md.qtpl:18
156+//line index.md.qtpl:24
157 			qw422016.N().S(`
158 - **Architecture**: `)
159-//line index.md.qtpl:19
160+//line index.md.qtpl:25
161 			qw422016.E().S(*e.Architecture)
162-//line index.md.qtpl:19
163+//line index.md.qtpl:25
164 		}
165-//line index.md.qtpl:19
166+//line index.md.qtpl:25
167 		qw422016.N().S(`
168 - **Size**: `)
169-//line index.md.qtpl:20
170+//line index.md.qtpl:26
171 		qw422016.N().D(e.PackageSize)
172-//line index.md.qtpl:20
173+//line index.md.qtpl:26
174 		qw422016.N().S(`B
175 - **Installed size**: `)
176-//line index.md.qtpl:21
177+//line index.md.qtpl:27
178 		qw422016.N().D(e.InstalledSize)
179-//line index.md.qtpl:21
180+//line index.md.qtpl:27
181 		qw422016.N().S(`
182 - **Url**: `)
183-//line index.md.qtpl:22
184+//line index.md.qtpl:28
185 		qw422016.E().S(e.Url)
186-//line index.md.qtpl:22
187+//line index.md.qtpl:28
188 		qw422016.N().S(`
189 - **License**: `)
190-//line index.md.qtpl:23
191+//line index.md.qtpl:29
192 		qw422016.E().S(e.License)
193-//line index.md.qtpl:23
194+//line index.md.qtpl:29
195 		if e.Origin != nil {
196-//line index.md.qtpl:23
197+//line index.md.qtpl:29
198 			qw422016.N().S(`
199 - **Origin**: `)
200-//line index.md.qtpl:24
201+//line index.md.qtpl:30
202 			qw422016.E().S(*e.Origin)
203-//line index.md.qtpl:24
204+//line index.md.qtpl:30
205 		}
206-//line index.md.qtpl:24
207+//line index.md.qtpl:30
208 		if e.BuildTime != nil {
209-//line index.md.qtpl:24
210+//line index.md.qtpl:30
211 			qw422016.N().S(`
212 - **Build time**: `)
213-//line index.md.qtpl:25
214+//line index.md.qtpl:31
215 			qw422016.E().S(e.BuildTime.String())
216-//line index.md.qtpl:25
217+//line index.md.qtpl:31
218 		}
219-//line index.md.qtpl:25
220+//line index.md.qtpl:31
221 		if e.Commit != nil {
222-//line index.md.qtpl:25
223+//line index.md.qtpl:31
224 			qw422016.N().S(`
225-- **Commit**: `)
226-//line index.md.qtpl:26
227+- **Commit**: [`)
228+//line index.md.qtpl:32
229 			qw422016.E().S(*e.Commit)
230-//line index.md.qtpl:26
231+//line index.md.qtpl:32
232+			qw422016.N().S(`](`)
233+//line index.md.qtpl:32
234+			qw422016.E().S(formatLink(e, format))
235+//line index.md.qtpl:32
236+			qw422016.N().S(`)`)
237+//line index.md.qtpl:32
238 		}
239-//line index.md.qtpl:26
240+//line index.md.qtpl:32
241 		if e.ProviderPriority != nil {
242-//line index.md.qtpl:26
243+//line index.md.qtpl:32
244 			qw422016.N().S(`
245 - **Provider Priority**: `)
246-//line index.md.qtpl:27
247+//line index.md.qtpl:33
248 			qw422016.N().D(*e.ProviderPriority)
249-//line index.md.qtpl:27
250+//line index.md.qtpl:33
251 		}
252-//line index.md.qtpl:27
253+//line index.md.qtpl:33
254 		if len(e.Dependencies) > 0 {
255-//line index.md.qtpl:27
256+//line index.md.qtpl:33
257 			qw422016.N().S(`
258 - **Dependencies:**: `)
259-//line index.md.qtpl:28
260+//line index.md.qtpl:34
261 			qw422016.E().S(reduce(e.Dependencies))
262-//line index.md.qtpl:28
263+//line index.md.qtpl:34
264 		}
265-//line index.md.qtpl:28
266+//line index.md.qtpl:34
267 		if len(e.Provides) > 0 {
268-//line index.md.qtpl:28
269+//line index.md.qtpl:34
270 			qw422016.N().S(`
271 - **Provides:**: `)
272-//line index.md.qtpl:29
273+//line index.md.qtpl:35
274 			qw422016.E().S(reduce(e.Provides))
275-//line index.md.qtpl:29
276+//line index.md.qtpl:35
277 		}
278-//line index.md.qtpl:29
279+//line index.md.qtpl:35
280 		if len(e.InstallIf) > 0 {
281-//line index.md.qtpl:29
282+//line index.md.qtpl:35
283 			qw422016.N().S(`
284 - **Install if:**: `)
285-//line index.md.qtpl:30
286+//line index.md.qtpl:36
287 			qw422016.E().S(reduce(e.InstallIf))
288-//line index.md.qtpl:30
289+//line index.md.qtpl:36
290 		}
291-//line index.md.qtpl:30
292+//line index.md.qtpl:36
293 		qw422016.N().S(`
294 `)
295-//line index.md.qtpl:31
296+//line index.md.qtpl:37
297 	}
298-//line index.md.qtpl:31
299+//line index.md.qtpl:37
300 	qw422016.N().S(`
301 
302 `)
303-//line index.md.qtpl:33
304+//line index.md.qtpl:39
305 }
306 
307-//line index.md.qtpl:33
308-func WriteMarkdownTemplate(qq422016 qtio422016.Writer, entries []*parser.Entry) {
309-//line index.md.qtpl:33
310+//line index.md.qtpl:39
311+func WriteMarkdownTemplate(qq422016 qtio422016.Writer, entries []*parser.Entry, format string) {
312+//line index.md.qtpl:39
313 	qw422016 := qt422016.AcquireWriter(qq422016)
314-//line index.md.qtpl:33
315-	StreamMarkdownTemplate(qw422016, entries)
316-//line index.md.qtpl:33
317+//line index.md.qtpl:39
318+	StreamMarkdownTemplate(qw422016, entries, format)
319+//line index.md.qtpl:39
320 	qt422016.ReleaseWriter(qw422016)
321-//line index.md.qtpl:33
322+//line index.md.qtpl:39
323 }
324 
325-//line index.md.qtpl:33
326-func MarkdownTemplate(entries []*parser.Entry) string {
327-//line index.md.qtpl:33
328+//line index.md.qtpl:39
329+func MarkdownTemplate(entries []*parser.Entry, format string) string {
330+//line index.md.qtpl:39
331 	qb422016 := qt422016.AcquireByteBuffer()
332-//line index.md.qtpl:33
333-	WriteMarkdownTemplate(qb422016, entries)
334-//line index.md.qtpl:33
335+//line index.md.qtpl:39
336+	WriteMarkdownTemplate(qb422016, entries, format)
337+//line index.md.qtpl:39
338 	qs422016 := string(qb422016.B)
339-//line index.md.qtpl:33
340+//line index.md.qtpl:39
341 	qt422016.ReleaseByteBuffer(qb422016)
342-//line index.md.qtpl:33
343+//line index.md.qtpl:39
344 	return qs422016
345-//line index.md.qtpl:33
346+//line index.md.qtpl:39
347 }