add version tags on portfolio page
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful

This commit is contained in:
Adora Laura Kalb 2024-08-03 18:49:02 +02:00
parent 7c7b7881d9
commit 7f2f3d8700
Signed by: adoralaura
SSH key fingerprint: SHA256:3XrkbR8ikAZJVtYfaUliX1MhmJYVAe/ocIb/MiDHBJ8
5 changed files with 41 additions and 0 deletions

View file

@ -1,6 +1,9 @@
--- ---
title: "Portfolio" title: "Portfolio"
description: "Adoras Software Development portfolio" description: "Adoras Software Development portfolio"
params:
JS:
LatestVersion: true
--- ---
Here you can find a list of projects I worked on or am currently working on: Here you can find a list of projects I worked on or am currently working on:
@ -9,18 +12,21 @@ Here you can find a list of projects I worked on or am currently working on:
Language: `Go` Language: `Go`
Source: [code.lila.network/adoralaura/certwarden-deploy](https://code.lila.network/adoralaura/certwarden-deploy) Source: [code.lila.network/adoralaura/certwarden-deploy](https://code.lila.network/adoralaura/certwarden-deploy)
Documentation: [certwarden-deploy.adora.codes](https://certwarden-deploy.adora.codes) Documentation: [certwarden-deploy.adora.codes](https://certwarden-deploy.adora.codes)
Latest Version: {{< latest-forgejo-version "adoralaura/certwarden-deploy" >}}
Deployment tool for (Let's Encrypt) certificates managed by a CertWarden Instance (similar to certbot or acme.sh, just without the ACME stuff) Deployment tool for (Let's Encrypt) certificates managed by a CertWarden Instance (similar to certbot or acme.sh, just without the ACME stuff)
## Mailcow Alias Automation ## Mailcow Alias Automation
Language: `Go` Language: `Go`
Source: [code.lila.network/adoralaura/mailcow-admin-aliases](https://code.lila.network/adoralaura/mailcow-admin-aliases) Source: [code.lila.network/adoralaura/mailcow-admin-aliases](https://code.lila.network/adoralaura/mailcow-admin-aliases)
Latest Version: {{< latest-forgejo-version "adoralaura/mailcow-admin-aliases" >}}
Automates the creation of important admin mail aliases (think security@..., postmaster@...). Automates the creation of important admin mail aliases (think security@..., postmaster@...).
## ntppool-exporter ## ntppool-exporter
Language: `Go` Language: `Go`
Source: [code.lila.network/adoralaura/ntppool-exporter](https://code.lila.network/adoralaura/ntppool-exporter) Source: [code.lila.network/adoralaura/ntppool-exporter](https://code.lila.network/adoralaura/ntppool-exporter)
Latest Version: {{< latest-forgejo-version "adoralaura/ntppool-exporter" >}}
A Prometheus exporter application that pulls data from the ntppool.org API for a given NTP server and serves it in a Prometheus compatible format. A Prometheus exporter application that pulls data from the ntppool.org API for a given NTP server and serves it in a Prometheus compatible format.

View file

@ -6,6 +6,7 @@
<title>{{ or .Title .Site.Title }}</title> <title>{{ or .Title .Site.Title }}</title>
{{ partial "head/favicon.html" . }} {{ partial "head/favicon.html" . }}
{{ partial "head/styling.html" . }} {{ partial "head/styling.html" . }}
{{ partial "head/scripts.html" . }}
</head> </head>
<body> <body>
{{ partial "body/nav.html" . }} {{ partial "body/nav.html" . }}

View file

@ -0,0 +1,3 @@
{{ if .Page.Params.JS.LatestVersion }}
<script src="/js/latest-version.js" defer></script>
{{ end }}

View file

@ -0,0 +1 @@
<strong class="forgejo-version", data-forgejo-repo="{{ .Get 0 }}">currently unavailable</strong>

View file

@ -0,0 +1,30 @@
async function FillLatestForgejoRelease() {
const apiPath = `https://forgejo-proxy.services-prod.lila.network/api/v1/code.lila.network/releases`
var forgejoItems = document.getElementsByClassName('forgejo-version')
const requestOptions = {
method: "GET",
redirect: "follow",
};
[...forgejoItems].forEach(async item => {
var repo = item.getAttribute("data-forgejo-repo");
var queryParam = new URLSearchParams({ namespace: repo }).toString()
var response = await fetch(`${apiPath}?${queryParam}`, requestOptions)
if (response.ok) {
item.textContent = await response.text()
}
});
}
FillLatestForgejoRelease()