feat: autogenerated release notes
This commit is contained in:
parent
e3839c35b7
commit
0f804f9f6e
4 changed files with 279 additions and 1 deletions
169
meta/dev.vencord.Vesktop.metainfo.xml
Normal file
169
meta/dev.vencord.Vesktop.metainfo.xml
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<component type="desktop-application">
|
||||||
|
<!--Created with jdAppStreamEdit 7.1-->
|
||||||
|
<id>dev.vencord.Vesktop</id>
|
||||||
|
<name>Vesktop</name>
|
||||||
|
<summary>Snappier Discord app with Vencord</summary>
|
||||||
|
<developer_name>Vencord Contributors</developer_name>
|
||||||
|
<launchable type="desktop-id">dev.vencord.Vesktop.desktop</launchable>
|
||||||
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
|
<project_license>GPL-3.0</project_license>
|
||||||
|
<project_group>Vencord</project_group>
|
||||||
|
<description>
|
||||||
|
<p>Vesktop is a cross platform desktop app aiming to give you a snappier Discord experience with Vencord pre-installed.</p>
|
||||||
|
<p>Vesktop comes bundled with Venmic, a purpose-built library to provide functioning audio screenshare.</p>
|
||||||
|
</description>
|
||||||
|
<screenshots>
|
||||||
|
<screenshot type="default">
|
||||||
|
<caption>Vencord settings page and about window open</caption>
|
||||||
|
<image type="source">https://vencord.dev/assets/screenshots/vesktop-1-appstream.png</image>
|
||||||
|
</screenshot>
|
||||||
|
<screenshot>
|
||||||
|
<caption>A dialog showing screenshare options</caption>
|
||||||
|
<image type="source">https://vencord.dev/assets/screenshots/vesktop-2-appstream.png</image>
|
||||||
|
</screenshot>
|
||||||
|
<screenshot>
|
||||||
|
<caption>A screenshot of a Discord server</caption>
|
||||||
|
<image type="source">https://vencord.dev/assets/screenshots/vesktop-3-appstream.png</image>
|
||||||
|
</screenshot>
|
||||||
|
</screenshots>
|
||||||
|
<releases>
|
||||||
|
<!--AUTOGENERATED-->
|
||||||
|
<release version="0.4.4" date="2023-12-02" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.4.4</url>
|
||||||
|
<description>
|
||||||
|
<p>What's Changed</p>
|
||||||
|
<ul>
|
||||||
|
<li>improve venmic system compatibility by @Curve in https://github.com/Vencord/Vesktop/pull/230</li>
|
||||||
|
<li>Update steamdeck controller layout by @AAGaming00 in https://github.com/Vencord/Vesktop/pull/236</li>
|
||||||
|
<li>feat: Add option to disable smooth scrolling by @ZirixCZ in https://github.com/Vencord/Vesktop/pull/255</li>
|
||||||
|
<li>unblur shiggy in splash screen by @viacoro in https://github.com/Vencord/Vesktop/pull/221</li>
|
||||||
|
<li>update electron & arrpc @D3SOX in https://github.com/Vencord/Vesktop/pull/258</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
|
<!--/AUTOGENERATED-->
|
||||||
|
<release version="0.4.3" date="2023-11-01" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.4.3</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.4.2" date="2023-10-26" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.4.2</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.4.1" date="2023-10-24" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.4.1</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.4.0" date="2023-10-21" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.4.0</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.3.3" date="2023-09-30" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.3.3</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.3.2" date="2023-09-25" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.3.2</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.3.1" date="2023-09-25" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.3.1</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.3.0" date="2023-08-16" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.3.0</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.2.9" date="2023-08-12" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.2.9</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.2.8" date="2023-08-02" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.2.8</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.2.7" date="2023-07-26" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.2.7</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.2.6" date="2023-07-04" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.2.6</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.2.5" date="2023-06-26" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.2.5</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.2.4" date="2023-06-25" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.2.4</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.2.3" date="2023-06-23" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.2.3</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.2.2" date="2023-06-21" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.2.2</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.2.1" date="2023-06-21" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.2.1</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.2.0" date="2023-05-03" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.2.0</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.1.9" date="2023-04-27" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.1.9</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.1.8" date="2023-04-15" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.1.8</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.1.7" date="2023-04-15" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.1.7</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.1.6" date="2023-04-11" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.1.6</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.1.5" date="2023-04-10" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.1.5</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.1.4" date="2023-04-09" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.1.4</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.1.3" date="2023-04-06" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.1.3</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.1.2" date="2023-04-05" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.1.2</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.1.1" date="2023-04-04" type="stable">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.1.1</url>
|
||||||
|
</release>
|
||||||
|
<release version="0.1.0" date="2023-04-04" type="development">
|
||||||
|
<url>https://github.com/Vencord/Vesktop/releases/tag/v0.1.0</url>
|
||||||
|
</release>
|
||||||
|
</releases>
|
||||||
|
<url type="homepage">https://vencord.dev/</url>
|
||||||
|
<url type="bugtracker">https://github.com/Vencord/Vesktop/issues</url>
|
||||||
|
<url type="faq">https://vencord.dev/faq/</url>
|
||||||
|
<url type="help">https://github.com/Vencord/Vesktop/issues</url>
|
||||||
|
<url type="donation">https://github.com/sponsors/Vendicated</url>
|
||||||
|
<url type="vcs-browser">https://github.com/Vencord/Vesktop</url>
|
||||||
|
<categories>
|
||||||
|
<category>InstantMessaging</category>
|
||||||
|
<category>AudioVideo</category>
|
||||||
|
</categories>
|
||||||
|
<requires>
|
||||||
|
<control>pointing</control>
|
||||||
|
<control>keyboard</control>
|
||||||
|
<display_length compare="ge">420</display_length>
|
||||||
|
<internet>always</internet>
|
||||||
|
</requires>
|
||||||
|
<recommends>
|
||||||
|
<control>voice</control>
|
||||||
|
<display_length compare="ge">760</display_length>
|
||||||
|
<display_length compare="le">1200</display_length>
|
||||||
|
<internet>always</internet>
|
||||||
|
</recommends>
|
||||||
|
<supports>
|
||||||
|
<internet>always</internet>
|
||||||
|
</supports>
|
||||||
|
<content_rating type="oars-1.1">
|
||||||
|
<content_attribute id="social-chat">intense</content_attribute>
|
||||||
|
<content_attribute id="social-audio">intense</content_attribute>
|
||||||
|
<content_attribute id="social-contacts">intense</content_attribute>
|
||||||
|
<content_attribute id="social-info">intense</content_attribute>
|
||||||
|
</content_rating>
|
||||||
|
<keywords>
|
||||||
|
<keyword>Discord</keyword>
|
||||||
|
<keyword>Vencord</keyword>
|
||||||
|
<keyword>Vesktop</keyword>
|
||||||
|
<keyword>Privacy</keyword>
|
||||||
|
<keyword>Mod</keyword>
|
||||||
|
</keywords>
|
||||||
|
</component>
|
|
@ -51,7 +51,8 @@
|
||||||
"source-map-support": "^0.5.21",
|
"source-map-support": "^0.5.21",
|
||||||
"tsx": "^3.13.0",
|
"tsx": "^3.13.0",
|
||||||
"type-fest": "^4.4.0",
|
"type-fest": "^4.4.0",
|
||||||
"typescript": "^5.2.2"
|
"typescript": "^5.2.2",
|
||||||
|
"xml-formatter": "^3.6.0"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@8.6.11",
|
"packageManager": "pnpm@8.6.11",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|
|
@ -84,6 +84,9 @@ devDependencies:
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^5.2.2
|
specifier: ^5.2.2
|
||||||
version: 5.2.2
|
version: 5.2.2
|
||||||
|
xml-formatter:
|
||||||
|
specifier: ^3.6.0
|
||||||
|
version: 3.6.0
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
|
@ -4618,6 +4621,18 @@ packages:
|
||||||
optional: true
|
optional: true
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/xml-formatter@3.6.0:
|
||||||
|
resolution: {integrity: sha512-Wic80ENNLF/5mLcc82hVLmoOWQlLDJtVv+N1/hkP4hBuVXPLKrXo92/4V23QYPKfUxvCU6Y2AcdpHCIA/xexFw==}
|
||||||
|
engines: {node: '>= 14'}
|
||||||
|
dependencies:
|
||||||
|
xml-parser-xo: 4.1.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/xml-parser-xo@4.1.1:
|
||||||
|
resolution: {integrity: sha512-Ggf2y90+Y6e9IK5hoPuembVHJ03PhDSdhldEmgzbihzu9k0XBo0sfcFxaSi4W1PlUSSI1ok+MJ0JCXUn+U4Ilw==}
|
||||||
|
engines: {node: '>= 14'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/xmlbuilder@15.1.1:
|
/xmlbuilder@15.1.1:
|
||||||
resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==}
|
resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==}
|
||||||
engines: {node: '>=8.0'}
|
engines: {node: '>=8.0'}
|
||||||
|
|
93
scripts/utils/updateMeta.mts
Normal file
93
scripts/utils/updateMeta.mts
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0
|
||||||
|
* Vesktop, a desktop app aiming to give you a snappier Discord Experience
|
||||||
|
* Copyright (c) 2023 Vendicated and Vencord contributors
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { promises as fs } from "node:fs";
|
||||||
|
|
||||||
|
import { DOMParser, XMLSerializer } from "@xmldom/xmldom";
|
||||||
|
import xmlFormat from "xml-formatter";
|
||||||
|
|
||||||
|
function generateDescription(description: string, descriptionNode: Element) {
|
||||||
|
const lines = description.replace(/\r/g, "").split("\n");
|
||||||
|
let currentList: Element | null = null;
|
||||||
|
|
||||||
|
for (let i = 0; i < lines.length; i++) {
|
||||||
|
const line = lines[i];
|
||||||
|
|
||||||
|
if (line.includes("New Contributors")) {
|
||||||
|
// we're done, don't parse any more since the new contributors section is the last one
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (line.startsWith("## ")) {
|
||||||
|
const pNode = descriptionNode.ownerDocument.createElement("p");
|
||||||
|
pNode.textContent = line.slice(3);
|
||||||
|
descriptionNode.appendChild(pNode);
|
||||||
|
} else if (line.startsWith("* ")) {
|
||||||
|
const liNode = descriptionNode.ownerDocument.createElement("li");
|
||||||
|
liNode.textContent = line.slice(2);
|
||||||
|
|
||||||
|
if (!currentList) {
|
||||||
|
currentList = descriptionNode.ownerDocument.createElement("ul");
|
||||||
|
}
|
||||||
|
|
||||||
|
currentList.appendChild(liNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentList && !lines[i + 1].startsWith("* ")) {
|
||||||
|
descriptionNode.appendChild(currentList);
|
||||||
|
currentList = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const latestReleaseInformation = await fetch("https://api.github.com/repos/Vencord/Vesktop/releases/latest", {
|
||||||
|
headers: {
|
||||||
|
Accept: "application/vnd.github+json",
|
||||||
|
"X-Github-Api-Version": "2022-11-28"
|
||||||
|
}
|
||||||
|
}).then(res => res.json());
|
||||||
|
|
||||||
|
const metaInfo = await fs.readFile("./meta/dev.vencord.Vesktop.metainfo.xml", "utf-8");
|
||||||
|
|
||||||
|
const parser = new DOMParser().parseFromString(metaInfo, "text/xml");
|
||||||
|
|
||||||
|
const releaseList = parser.getElementsByTagName("releases")[0];
|
||||||
|
|
||||||
|
for (let i = 0; i < releaseList.childNodes.length; i++) {
|
||||||
|
const release = releaseList.childNodes[i] as Element;
|
||||||
|
|
||||||
|
if (release.nodeType === 1 && release.getAttribute("version") === latestReleaseInformation.name) {
|
||||||
|
console.log("Latest release already added, nothing to be done");
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const release = parser.createElement("release");
|
||||||
|
release.setAttribute("version", latestReleaseInformation.name);
|
||||||
|
release.setAttribute("date", latestReleaseInformation.published_at.split("T")[0]);
|
||||||
|
release.setAttribute("type", "stable");
|
||||||
|
|
||||||
|
const releaseUrl = parser.createElement("url");
|
||||||
|
releaseUrl.textContent = latestReleaseInformation.html_url;
|
||||||
|
|
||||||
|
release.appendChild(releaseUrl);
|
||||||
|
|
||||||
|
const description = parser.createElement("description");
|
||||||
|
|
||||||
|
// we're not using a full markdown parser here since we don't have a lot of formatting options to begin with
|
||||||
|
generateDescription(latestReleaseInformation.body, description);
|
||||||
|
|
||||||
|
release.appendChild(description);
|
||||||
|
|
||||||
|
releaseList.insertBefore(release, releaseList.childNodes[2]);
|
||||||
|
|
||||||
|
const output = xmlFormat(new XMLSerializer().serializeToString(parser), {
|
||||||
|
lineSeparator: "\n",
|
||||||
|
collapseContent: true,
|
||||||
|
indentation: " "
|
||||||
|
});
|
||||||
|
|
||||||
|
await fs.writeFile("./meta/dev.vencord.Vesktop.metainfo.xml", output, "utf-8");
|
Loading…
Reference in a new issue