diff --git a/content/portfolio.md b/content/portfolio.md index 14a484d..e953f1d 100644 --- a/content/portfolio.md +++ b/content/portfolio.md @@ -1,6 +1,9 @@ --- title: "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: @@ -8,19 +11,22 @@ Here you can find a list of projects I worked on or am currently working on: ## certwarden-deploy Language: `Go` 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) ## Mailcow Alias Automation 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@...). ## ntppool-exporter 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. diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 3f73e7f..e8b8124 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -6,6 +6,7 @@ {{ or .Title .Site.Title }} {{ partial "head/favicon.html" . }} {{ partial "head/styling.html" . }} + {{ partial "head/scripts.html" . }} {{ partial "body/nav.html" . }} diff --git a/layouts/partials/head/scripts.html b/layouts/partials/head/scripts.html new file mode 100644 index 0000000..14b8af2 --- /dev/null +++ b/layouts/partials/head/scripts.html @@ -0,0 +1,3 @@ +{{ if .Page.Params.JS.LatestVersion }} + +{{ end }} diff --git a/layouts/shortcodes/latest-forgejo-version.html b/layouts/shortcodes/latest-forgejo-version.html new file mode 100644 index 0000000..89e9498 --- /dev/null +++ b/layouts/shortcodes/latest-forgejo-version.html @@ -0,0 +1 @@ +currently unavailable diff --git a/static/js/latest-version.js b/static/js/latest-version.js new file mode 100644 index 0000000..6dd3612 --- /dev/null +++ b/static/js/latest-version.js @@ -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()