From 45857a478364d4e38bd060a4ea99e3230837e3b3 Mon Sep 17 00:00:00 2001
From: Andrin <65789180+codeofandrin@users.noreply.github.com>
Date: Sat, 8 Feb 2025 15:15:35 +0100
Subject: [PATCH] Use github release description instead of md files
---
src/app/(general)/release-notes/page.tsx | 12 +++++-------
src/content/release-notes/.gitkeep | 0
src/content/release-notes/2025-01-20_v0.1.0.md | 7 -------
src/content/release-notes/2025-02-08_v0.1.1.md | 9 ---------
src/utils/helpers.ts | 5 +++--
src/utils/server/github.ts | 17 +++++++++++++++--
6 files changed, 23 insertions(+), 27 deletions(-)
delete mode 100644 src/content/release-notes/.gitkeep
delete mode 100644 src/content/release-notes/2025-01-20_v0.1.0.md
delete mode 100644 src/content/release-notes/2025-02-08_v0.1.1.md
diff --git a/src/app/(general)/release-notes/page.tsx b/src/app/(general)/release-notes/page.tsx
index 879fc1f..54969ed 100644
--- a/src/app/(general)/release-notes/page.tsx
+++ b/src/app/(general)/release-notes/page.tsx
@@ -3,16 +3,15 @@ import type { Metadata } from "next"
import MarkdownContent from "@/components/common/MarkdownContent"
import { extractMarkdownMetaData } from "@/utils/helpers"
+import { getReleaseNotes } from "@/utils/server/github"
+
export const metadata: Metadata = {
title: "Release Notes - exifoo",
description: "Latest changes of the exifoo desktop app."
}
-export default function ReleaseNotes() {
- const importAllFiles = (r: any) => r.keys().map(r)
- const markdownFiles = importAllFiles(require.context("../../../content/release-notes", false, /\.md$/))
- .sort()
- .reverse()
+export default async function ReleaseNotes() {
+ const markdownFiles: string[] = await getReleaseNotes()
return (
@@ -20,8 +19,7 @@ export default function ReleaseNotes() {
Release Notes
- {markdownFiles.map((release: { default: string }, i: number) => {
- let content = release.default
+ {markdownFiles.map((content: string, i: number) => {
const [rawMetaData, metaData] = extractMarkdownMetaData(content)
content = content.replace(rawMetaData[0], "")
const date = metaData.date
diff --git a/src/content/release-notes/.gitkeep b/src/content/release-notes/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/src/content/release-notes/2025-01-20_v0.1.0.md b/src/content/release-notes/2025-01-20_v0.1.0.md
deleted file mode 100644
index 575eee5..0000000
--- a/src/content/release-notes/2025-01-20_v0.1.0.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-date: January 20, 2025
----
-
-## v0.1.0
-
-First release
diff --git a/src/content/release-notes/2025-02-08_v0.1.1.md b/src/content/release-notes/2025-02-08_v0.1.1.md
deleted file mode 100644
index 88604f1..0000000
--- a/src/content/release-notes/2025-02-08_v0.1.1.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-date: February 8, 2025
----
-
-## v0.1.1
-
-#### 🐞 Bugfixes
-
-- Fix checkout links
diff --git a/src/utils/helpers.ts b/src/utils/helpers.ts
index 00b3d29..fa99d04 100644
--- a/src/utils/helpers.ts
+++ b/src/utils/helpers.ts
@@ -9,12 +9,13 @@ export function extractMarkdownMetaData(text: string): Array
{
if (rawMetaData!) {
// rawMeta[1] are the stuff between "---"
- keyValues = rawMetaData[1].split("\n")
+ keyValues = rawMetaData[1].split("\r\n")
// which returns a list of key values: ["key1: value", "key2: value"]
keyValues.forEach((keyValue) => {
// split each keyValue to keys and values
- const [key, value] = keyValue.split(":")
+ let [key, value] = keyValue.split(":")
+ key = key.trim()
metaData[key] = value.trim()
})
}
diff --git a/src/utils/server/github.ts b/src/utils/server/github.ts
index ec3d318..49a6c31 100644
--- a/src/utils/server/github.ts
+++ b/src/utils/server/github.ts
@@ -2,7 +2,7 @@ import "server-only"
const API_BASE_URL = "https://api.github.com"
-async function request(method: string, url: string): Promise> {
+async function request(method: string, url: string): Promise | Record[]> {
const headers = {
Accept: "application/vnd.github+json",
Authorization: `Bearer ${process.env.GH_TOKEN}`,
@@ -16,7 +16,7 @@ async function request(method: string, url: string): Promise> {
export async function getMacOSDownloadURL(arch: string): Promise {
const latestReleaseUrl = "/repos/codeofandrin/exifoo-releases/releases/latest"
- const data = await request("GET", latestReleaseUrl)
+ const data: Record = await request("GET", latestReleaseUrl)
const releaseAssets: Record[] = data.assets
let downloadUrl
@@ -31,3 +31,16 @@ export async function getMacOSDownloadURL(arch: string): Promise {
return downloadUrl
}
+
+export async function getReleaseNotes(): Promise {
+ const releasesUrl = "/repos/codeofandrin/exifoo-releases/releases"
+ const data = (await request("GET", releasesUrl)) as Record[]
+
+ let releaseNotes: string[] = []
+ for (let i = 0; i < data.length; i++) {
+ const release = data[i]
+ releaseNotes.push(release.body)
+ }
+
+ return releaseNotes
+}