footer und AppVersion eingebaut
All checks were successful
Docker Release Build / push_to_registry (push) Successful in 1m2s
All checks were successful
Docker Release Build / push_to_registry (push) Successful in 1m2s
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
iname: Docker Release Build
|
name: Docker Release Build
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
tags:
|
||||||
@@ -25,6 +25,8 @@ jobs:
|
|||||||
push: true
|
push: true
|
||||||
# Hier wird die Git-Referenz automatisch als Docker-Tag genutzt
|
# Hier wird die Git-Referenz automatisch als Docker-Tag genutzt
|
||||||
#tags: gitea.scu.si/florianwalther/password-generator:${{ gitea.ref_name }}
|
#tags: gitea.scu.si/florianwalther/password-generator:${{ gitea.ref_name }}
|
||||||
|
build-args: |
|
||||||
|
APP_VERSION=${{ gitea.ref_name }}
|
||||||
tags: |
|
tags: |
|
||||||
gitea.scu.si/florian.walther/password-generator:${{ gitea.ref_name }}
|
gitea.scu.si/florian.walther/password-generator:${{ gitea.ref_name }}
|
||||||
gitea.scu.si/florian.walther/password-generator:latest
|
gitea.scu.si/florian.walther/password-generator:latest
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ WORKDIR /app
|
|||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Baue die Anwendung
|
# Baue die Anwendung
|
||||||
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /app/password-generator
|
ARG APP_VERSION=dev
|
||||||
|
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w -X 'main.AppVersion=${APP_VERSION}'" -o /app/password-generator
|
||||||
|
|
||||||
# Verwende ein minimales Image für die finale Stage
|
# Verwende ein minimales Image für die finale Stage
|
||||||
FROM scratch
|
FROM scratch
|
||||||
|
|||||||
25
main.go
25
main.go
@@ -12,13 +12,30 @@ const (
|
|||||||
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
|
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
|
||||||
)
|
)
|
||||||
|
|
||||||
//var tmpl *template.Template
|
|
||||||
var templates = make(map[string]*template.Template)
|
var templates = make(map[string]*template.Template)
|
||||||
|
var AppVersion = "development"
|
||||||
|
|
||||||
func loadTemplates() {
|
func loadTemplates() {
|
||||||
templates["index.html"] = template.Must(template.ParseFiles("templates/base.html", "templates/index.html"))
|
// 1. FuncMap definieren
|
||||||
templates["help.html"] = template.Must(template.ParseFiles("templates/base.html", "templates/help.html"))
|
funcMap := template.FuncMap{
|
||||||
log.Printf("Alle Templates erfolgreich geladen")
|
"getAppVersion": func() string {
|
||||||
|
return AppVersion
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Templates mit FuncMap laden
|
||||||
|
// Wir nutzen New("base.html"), da base.html meist das Haupt-Layout definiert
|
||||||
|
templates["index.html"] = template.Must(template.New("base.html").Funcs(funcMap).ParseFiles(
|
||||||
|
"templates/base.html",
|
||||||
|
"templates/index.html",
|
||||||
|
))
|
||||||
|
|
||||||
|
templates["help.html"] = template.Must(template.New("base.html").Funcs(funcMap).ParseFiles(
|
||||||
|
"templates/base.html",
|
||||||
|
"templates/help.html",
|
||||||
|
))
|
||||||
|
|
||||||
|
log.Printf("Alle Templates erfolgreich geladen")
|
||||||
}
|
}
|
||||||
|
|
||||||
func generatePassword() string {
|
func generatePassword() string {
|
||||||
|
|||||||
@@ -47,6 +47,33 @@ body {
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
/* Fixierung am unteren Rand */
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
/* Ausdehnung */
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
/* Design & Abstände */
|
||||||
|
background: var(--password-bg);
|
||||||
|
border-top: 1px solid #e0e0e0;
|
||||||
|
padding: 8px 16px;
|
||||||
|
|
||||||
|
/* Text-Ausrichtung */
|
||||||
|
text-align: left;
|
||||||
|
font-family: monospace; /* Monospace sieht für Versionen oft "technischer" aus */
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--text-color);
|
||||||
|
|
||||||
|
/* Sicherstellen, dass nichts drüber liegt */
|
||||||
|
z-index: 9999;
|
||||||
|
|
||||||
|
/* Padding in die Breite einrechnen */
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
#password {
|
#password {
|
||||||
font-family: 'Courier New', Courier, monospace;
|
font-family: 'Courier New', Courier, monospace;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
|
|||||||
@@ -45,5 +45,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<button id="theme-toggle">🌓</button>
|
<button id="theme-toggle">🌓</button>
|
||||||
{{ block "body" . }}{{end}}
|
{{ block "body" . }}{{end}}
|
||||||
|
|
||||||
|
<footer>Version: {{getAppVersion}} | made with golang and ♥️ {{ block "footer" . }}{{ end }}</footer>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user