detached 0306bf6

Fixing merge conflicts

commit
0306bf64d066947ea3f2ba26e1fef95adcb42e16
author
bnema · · 2023-09-05 08:42 UTC
merge of
099356c + 67bf910 · diff against the first parent
signature
unsigned
7 files · +156 -1
M .gitignore +1 -1
@@ -2,4 +2,4 @@
22 node_modules/
33 tmp/*
44 logs/*
5-gordon.yml⏎̸
5+gordon.yml
@@ -2,4 +2,4 @@
2 node_modules/2 node_modules/
3 tmp/*3 tmp/*
4 logs/*4 logs/*
5-gordon.yml⏎̸5+gordon.yml
M go.mod +3 -0
@@ -26,6 +26,9 @@ require (
2626 github.com/gorilla/sessions v1.2.1 // indirect
2727 github.com/klauspost/compress v1.16.7 // indirect
2828 github.com/microcosm-cc/bluemonday v1.0.25 // indirect
29+ github.com/gorilla/securecookie v1.1.1 // indirect
30+ github.com/gorilla/sessions v1.2.1 // indirect
31+ github.com/klauspost/compress v1.16.7 // indirect
2932 github.com/moby/patternmatcher v0.6.0 // indirect
3033 github.com/moby/sys/sequential v0.5.0 // indirect
3134 github.com/moby/term v0.5.0 // indirect
@@ -26,6 +26,9 @@ require (
26 github.com/gorilla/sessions v1.2.1 // indirect26 github.com/gorilla/sessions v1.2.1 // indirect
27 github.com/klauspost/compress v1.16.7 // indirect27 github.com/klauspost/compress v1.16.7 // indirect
28 github.com/microcosm-cc/bluemonday v1.0.25 // indirect28 github.com/microcosm-cc/bluemonday v1.0.25 // indirect
29+ github.com/gorilla/securecookie v1.1.1 // indirect
30+ github.com/gorilla/sessions v1.2.1 // indirect
31+ github.com/klauspost/compress v1.16.7 // indirect
29 github.com/moby/patternmatcher v0.6.0 // indirect32 github.com/moby/patternmatcher v0.6.0 // indirect
30 github.com/moby/sys/sequential v0.5.0 // indirect33 github.com/moby/sys/sequential v0.5.0 // indirect
31 github.com/moby/term v0.5.0 // indirect34 github.com/moby/term v0.5.0 // indirect
M go.sum +2 -0
@@ -39,6 +39,8 @@ github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8
3939 github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
4040 github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=
4141 github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
42+github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=
43+github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
4244 github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=
4345 github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
4446 github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI=
@@ -39,6 +39,8 @@ github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8
39 github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=39 github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
40 github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=40 github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=
41 github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=41 github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
42+github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=
43+github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
42 github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=44 github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=
43 github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=45 github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
44 github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI=46 github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI=
M logs/app.log +49 -0
@@ -647,3 +647,52 @@
647647 {"level":"info","time":"2023-09-05T10:22:47+02:00","message":"Server is listening on port 1323"}
648648 {"level":"info","time":"2023-09-05T10:22:47+02:00","message":"Server is listening on port 1323"}
649649 {"level":"fatal","error":"listen tcp :1323: bind: address already in use","time":"2023-09-05T10:22:47+02:00","message":"Failed to start the server"}
650+{"level":"info","time":"2023-09-05T10:41:25+02:00","message":"Server is listening on port 1323"}
651+{"level":"debug","type":"app","time":"2023-09-05T10:41:26+02:00","message":"Color scheme detected: light"}
652+{"level":"debug","type":"app","time":"2023-09-05T10:41:27+02:00","message":"Color scheme detected: light"}
653+{"level":"debug","type":"app","time":"2023-09-05T10:41:29+02:00","message":"Color scheme detected: light"}
654+{"level":"debug","type":"app","time":"2023-09-05T10:41:31+02:00","message":"Color scheme detected: light"}
655+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
656+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
657+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
658+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
659+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
660+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
661+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
662+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
663+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
664+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
665+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
666+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
667+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
668+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
669+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
670+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
671+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
672+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
673+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
674+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
675+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
676+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
677+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
678+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
679+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
680+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
681+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
682+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
683+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
684+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
685+{"level":"debug","type":"app","time":"2023-09-05T10:41:34+02:00","message":"Color scheme detected: light"}
686+{"level":"debug","type":"app","time":"2023-09-05T10:41:35+02:00","message":"Color scheme detected: light"}
687+{"level":"debug","type":"app","time":"2023-09-05T10:41:35+02:00","message":"Color scheme detected: light"}
688+{"level":"debug","type":"app","time":"2023-09-05T10:41:35+02:00","message":"Color scheme detected: light"}
689+{"level":"debug","type":"app","time":"2023-09-05T10:41:35+02:00","message":"Color scheme detected: light"}
690+{"level":"debug","type":"app","time":"2023-09-05T10:41:36+02:00","message":"Color scheme detected: light"}
691+{"level":"debug","type":"app","time":"2023-09-05T10:41:37+02:00","message":"Color scheme detected: light"}
692+{"level":"debug","type":"app","time":"2023-09-05T10:41:37+02:00","message":"Color scheme detected: light"}
693+{"level":"debug","type":"app","time":"2023-09-05T10:41:39+02:00","message":"Color scheme detected: light"}
694+{"level":"debug","type":"app","time":"2023-09-05T10:41:40+02:00","message":"Color scheme detected: light"}
695+{"level":"debug","type":"app","time":"2023-09-05T10:41:43+02:00","message":"Color scheme detected: light"}
696+{"level":"debug","type":"app","time":"2023-09-05T10:41:45+02:00","message":"Color scheme detected: light"}
697+{"level":"debug","type":"app","time":"2023-09-05T10:41:46+02:00","message":"Color scheme detected: light"}
698+{"level":"info","time":"2023-09-05T10:41:47+02:00","message":"Server is listening on port 1323"}
@@ -647,3 +647,52 @@
647 {"level":"info","time":"2023-09-05T10:22:47+02:00","message":"Server is listening on port 1323"}647 {"level":"info","time":"2023-09-05T10:22:47+02:00","message":"Server is listening on port 1323"}
648 {"level":"info","time":"2023-09-05T10:22:47+02:00","message":"Server is listening on port 1323"}648 {"level":"info","time":"2023-09-05T10:22:47+02:00","message":"Server is listening on port 1323"}
649 {"level":"fatal","error":"listen tcp :1323: bind: address already in use","time":"2023-09-05T10:22:47+02:00","message":"Failed to start the server"}649 {"level":"fatal","error":"listen tcp :1323: bind: address already in use","time":"2023-09-05T10:22:47+02:00","message":"Failed to start the server"}
650+{"level":"info","time":"2023-09-05T10:41:25+02:00","message":"Server is listening on port 1323"}
651+{"level":"debug","type":"app","time":"2023-09-05T10:41:26+02:00","message":"Color scheme detected: light"}
652+{"level":"debug","type":"app","time":"2023-09-05T10:41:27+02:00","message":"Color scheme detected: light"}
653+{"level":"debug","type":"app","time":"2023-09-05T10:41:29+02:00","message":"Color scheme detected: light"}
654+{"level":"debug","type":"app","time":"2023-09-05T10:41:31+02:00","message":"Color scheme detected: light"}
655+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
656+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
657+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
658+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
659+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
660+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
661+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
662+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
663+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
664+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
665+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
666+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
667+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
668+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
669+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
670+{"level":"debug","type":"app","time":"2023-09-05T10:41:32+02:00","message":"Color scheme detected: light"}
671+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
672+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
673+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
674+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
675+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
676+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
677+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
678+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
679+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
680+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
681+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
682+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
683+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
684+{"level":"debug","type":"app","time":"2023-09-05T10:41:33+02:00","message":"Color scheme detected: light"}
685+{"level":"debug","type":"app","time":"2023-09-05T10:41:34+02:00","message":"Color scheme detected: light"}
686+{"level":"debug","type":"app","time":"2023-09-05T10:41:35+02:00","message":"Color scheme detected: light"}
687+{"level":"debug","type":"app","time":"2023-09-05T10:41:35+02:00","message":"Color scheme detected: light"}
688+{"level":"debug","type":"app","time":"2023-09-05T10:41:35+02:00","message":"Color scheme detected: light"}
689+{"level":"debug","type":"app","time":"2023-09-05T10:41:35+02:00","message":"Color scheme detected: light"}
690+{"level":"debug","type":"app","time":"2023-09-05T10:41:36+02:00","message":"Color scheme detected: light"}
691+{"level":"debug","type":"app","time":"2023-09-05T10:41:37+02:00","message":"Color scheme detected: light"}
692+{"level":"debug","type":"app","time":"2023-09-05T10:41:37+02:00","message":"Color scheme detected: light"}
693+{"level":"debug","type":"app","time":"2023-09-05T10:41:39+02:00","message":"Color scheme detected: light"}
694+{"level":"debug","type":"app","time":"2023-09-05T10:41:40+02:00","message":"Color scheme detected: light"}
695+{"level":"debug","type":"app","time":"2023-09-05T10:41:43+02:00","message":"Color scheme detected: light"}
696+{"level":"debug","type":"app","time":"2023-09-05T10:41:45+02:00","message":"Color scheme detected: light"}
697+{"level":"debug","type":"app","time":"2023-09-05T10:41:46+02:00","message":"Color scheme detected: light"}
698+{"level":"info","time":"2023-09-05T10:41:47+02:00","message":"Server is listening on port 1323"}
M logs/http.log +48 -0
@@ -1708,3 +1708,51 @@
17081708 {"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:23:47+02:00","message":"request"}
17091709 {"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:23:48+02:00","message":"request"}
17101710 {"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:23:50+02:00","message":"request"}
1711+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:26+02:00","message":"request"}
1712+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:27+02:00","message":"request"}
1713+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:29+02:00","message":"request"}
1714+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:31+02:00","message":"request"}
1715+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/admin/install","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1716+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/js/custom.js","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1717+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/css/tailwind.css","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1718+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/htmx.min.js","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1719+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/htmx-sse.js","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1720+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/alpine.min.js","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1721+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/iconoir.css","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1722+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/imgs/gordon-mascot-hq-trsp.png","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1723+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/fonts/LilitaOne/LilitaOne-Regular.ttf","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1724+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/fonts/IBMPlex/IBMPlexSans-Regular.woff2","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1725+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1726+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/favicon.ico","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1727+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1728+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1729+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1730+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1731+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1732+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1733+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/admin/install","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1734+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/css/tailwind.css","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1735+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/alpine.min.js","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1736+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/iconoir.css","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1737+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/htmx.min.js","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1738+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/js/custom.js","status":404,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1739+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/htmx-sse.js","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1740+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/imgs/gordon-mascot-hq-trsp.png","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1741+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1742+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/fonts/LilitaOne/LilitaOne-Regular.ttf","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1743+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/fonts/IBMPlex/IBMPlexSans-Regular.woff2","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1744+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/favicon.ico","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1745+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:34+02:00","message":"request"}
1746+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:35+02:00","message":"request"}
1747+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:35+02:00","message":"request"}
1748+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:35+02:00","message":"request"}
1749+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:35+02:00","message":"request"}
1750+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:36+02:00","message":"request"}
1751+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:37+02:00","message":"request"}
1752+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:37+02:00","message":"request"}
1753+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:39+02:00","message":"request"}
1754+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:40+02:00","message":"request"}
1755+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:43+02:00","message":"request"}
1756+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:45+02:00","message":"request"}
1757+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:46+02:00","message":"request"}
1758+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:48+02:00","message":"request"}
@@ -1708,3 +1708,51 @@
1708 {"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:23:47+02:00","message":"request"}1708 {"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:23:47+02:00","message":"request"}
1709 {"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:23:48+02:00","message":"request"}1709 {"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:23:48+02:00","message":"request"}
1710 {"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:23:50+02:00","message":"request"}1710 {"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:23:50+02:00","message":"request"}
1711+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:26+02:00","message":"request"}
1712+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:27+02:00","message":"request"}
1713+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:29+02:00","message":"request"}
1714+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:31+02:00","message":"request"}
1715+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/admin/install","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1716+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/js/custom.js","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1717+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/css/tailwind.css","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1718+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/htmx.min.js","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1719+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/htmx-sse.js","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1720+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/alpine.min.js","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1721+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/iconoir.css","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1722+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/imgs/gordon-mascot-hq-trsp.png","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1723+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/fonts/LilitaOne/LilitaOne-Regular.ttf","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1724+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/fonts/IBMPlex/IBMPlexSans-Regular.woff2","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1725+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1726+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/favicon.ico","status":200,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1727+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1728+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1729+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1730+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:32+02:00","message":"request"}
1731+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1732+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1733+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/admin/install","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1734+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/css/tailwind.css","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1735+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/alpine.min.js","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1736+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/iconoir.css","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1737+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/htmx.min.js","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1738+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/js/custom.js","status":404,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1739+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/libs/htmx-sse.js","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1740+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/imgs/gordon-mascot-hq-trsp.png","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1741+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1742+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/fonts/LilitaOne/LilitaOne-Regular.ttf","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1743+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/assets/fonts/IBMPlex/IBMPlexSans-Regular.woff2","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1744+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/favicon.ico","status":200,"time":"2023-09-05T10:41:33+02:00","message":"request"}
1745+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:34+02:00","message":"request"}
1746+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:35+02:00","message":"request"}
1747+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:35+02:00","message":"request"}
1748+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:35+02:00","message":"request"}
1749+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:35+02:00","message":"request"}
1750+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:36+02:00","message":"request"}
1751+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:37+02:00","message":"request"}
1752+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:37+02:00","message":"request"}
1753+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:39+02:00","message":"request"}
1754+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:40+02:00","message":"request"}
1755+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:43+02:00","message":"request"}
1756+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:45+02:00","message":"request"}
1757+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:46+02:00","message":"request"}
1758+{"level":"info","type":"http","remote_ip":"::1","method":"GET","URI":"/install/traefik/sse","status":404,"time":"2023-09-05T10:41:48+02:00","message":"request"}
M pkg/utils/logger.go +1 -0
@@ -20,6 +20,7 @@ const (
2020 )
2121
2222 type LogLevel string
23+
2324 type Logger struct {
2425 zerolog.Logger
2526 }
@@ -20,6 +20,7 @@ const (
20 )20 )
21 21
22 type LogLevel string22 type LogLevel string
23+
23 type Logger struct {24 type Logger struct {
24 zerolog.Logger25 zerolog.Logger
25 }26 }
A pkg/utils/txt-render.go +52 -0
@@ -0,0 +1,52 @@
1+package utils
2+
3+import (
4+ "bytes"
5+ "errors"
6+ "io/fs"
7+ "text/template"
8+)
9+
10+type TXTRenderer struct {
11+ Models *template.Template
12+ Format string
13+ ParseError error
14+ Logger *Logger
15+}
16+
17+// Render function renders the template with the given data
18+func (r *TXTRenderer) TXTRender(data interface{}) (string, error) {
19+ if r.ParseError != nil {
20+ r.Logger.Error().Err(r.ParseError).Msg("Parse error")
21+ return "", r.ParseError
22+ }
23+
24+ if r.Models == nil {
25+ err := errors.New("invalid or nil template")
26+ r.Logger.Error().Err(r.ParseError).Msg("Parse error")
27+
28+ return "", err
29+ }
30+
31+ buf := new(bytes.Buffer)
32+ err := r.Models.Execute(buf, data)
33+ if err != nil {
34+ r.Logger.Error().Err(err).Msg("Render error")
35+ return "", err
36+ }
37+
38+ return buf.String(), nil
39+}
40+
41+// GetRenderer function returns a new Renderer instance
42+func GetTXTRenderer(filename string, fs fs.FS, logger *Logger) (*TXTRenderer, error) {
43+ mdls, err := template.New(filename).ParseFS(fs, filename)
44+ if err != nil {
45+ logger.Error().Err(err).Msg("Failed to parse template")
46+ return nil, err
47+ }
48+ return &TXTRenderer{
49+ Models: mdls,
50+ Logger: logger,
51+ }, nil
52+}
@@ -0,0 +1,52 @@
1+package utils
2+
3+import (
4+ "bytes"
5+ "errors"
6+ "io/fs"
7+ "text/template"
8+)
9+
10+type TXTRenderer struct {
11+ Models *template.Template
12+ Format string
13+ ParseError error
14+ Logger *Logger
15+}
16+
17+// Render function renders the template with the given data
18+func (r *TXTRenderer) TXTRender(data interface{}) (string, error) {
19+ if r.ParseError != nil {
20+ r.Logger.Error().Err(r.ParseError).Msg("Parse error")
21+ return "", r.ParseError
22+ }
23+
24+ if r.Models == nil {
25+ err := errors.New("invalid or nil template")
26+ r.Logger.Error().Err(r.ParseError).Msg("Parse error")
27+
28+ return "", err
29+ }
30+
31+ buf := new(bytes.Buffer)
32+ err := r.Models.Execute(buf, data)
33+ if err != nil {
34+ r.Logger.Error().Err(err).Msg("Render error")
35+ return "", err
36+ }
37+
38+ return buf.String(), nil
39+}
40+
41+// GetRenderer function returns a new Renderer instance
42+func GetTXTRenderer(filename string, fs fs.FS, logger *Logger) (*TXTRenderer, error) {
43+ mdls, err := template.New(filename).ParseFS(fs, filename)
44+ if err != nil {
45+ logger.Error().Err(err).Msg("Failed to parse template")
46+ return nil, err
47+ }
48+ return &TXTRenderer{
49+ Models: mdls,
50+ Logger: logger,
51+ }, nil
52+}

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 7

Tags 106

↑↓ moveenter openesc close