feat: migrate to Nuxt 4 (Nitro) and Tailwind CSS v3

This commit is contained in:
RhenCloud 2026-08-13 17:43:33 +08:00
parent f4959eebf8
commit b139712a91
No known key found for this signature in database
GPG key ID: A574A617378C4E0B
166 changed files with 19790 additions and 5539 deletions

View file

@ -0,0 +1,62 @@
import type { NeutralMessage, NeutralAuthor } from "../types";
import { GITHUB_COLORS } from "./colors";
import { emojiPrefix, type T, buildMessage } from "./helpers";
export function formatRelease(
payload: Record<string, unknown>,
repo: string | undefined,
author: NeutralAuthor,
t: T,
showEmoji: boolean,
): NeutralMessage {
const action = (payload.action as string) ?? "published";
const release = payload.release as {
tag_name?: string;
name?: string;
html_url?: string;
body?: string;
prerelease?: boolean;
draft?: boolean;
author?: { login?: string };
};
const isPrerelease = release.prerelease;
const colorKey =
action === "deleted"
? "release_deleted"
: isPrerelease
? "release_prerelease"
: "release_published";
const al = t("actions." + action) ?? action;
const emoji = action === "deleted" ? "🗑️" : isPrerelease ? "⚠️" : "🚀";
const em = (e: string): string => emojiPrefix(e, showEmoji);
const descriptionParts: string[] = [];
descriptionParts.push(
t("events.release.action_release", {
emoji: em(emoji),
action: al,
tag: release.tag_name ?? t("common.unknown"),
}),
);
if (release.body) {
const truncated = release.body.slice(0, 300);
descriptionParts.push(`\n${truncated}${release.body.length > 300 ? "..." : ""}`);
}
return buildMessage(
{
author,
title: t("events.release.title", {
repo: repo ?? t("common.repository"),
name: release.name ?? release.tag_name ?? "Release",
}),
url: release.html_url,
color: GITHUB_COLORS[colorKey],
description: descriptionParts.join("\n"),
},
t,
repo,
);
}