Skip to content

Commit 31b6ec0

Browse files
Merge branch 'tauri-apps:next' into single-instance-docs
2 parents 1a25d99 + 23f7b04 commit 31b6ec0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+4669
-605
lines changed

astro.config.mjs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ export default defineConfig({
7676
components: {
7777
SiteTitle: 'src/components/overrides/SiteTitle.astro',
7878
Footer: 'src/components/overrides/Footer.astro',
79+
MarkdownContent: 'starlight-blog/overrides/MarkdownContent.astro',
80+
Sidebar: 'starlight-blog/overrides/Sidebar.astro',
81+
Header: 'src/components/overrides/Header.astro',
7982
ThemeSelect: 'src/components/overrides/ThemeSelect.astro',
8083
},
8184
head: [

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@
1313
"dev": "astro dev",
1414
"format": "prettier -w --cache --plugin prettier-plugin-astro .",
1515
"build:references": "pnpm --filter js-api-generator run build",
16+
"build:releases": "pnpm --filter releases-generator run build",
1617
"build:config": "pnpm --filter config-generator run build",
1718
"build:astro": "astro build",
1819
"build:i18n": "pnpm --filter docs-i18n-tracker run build",
19-
"build": "pnpm dev:setup && pnpm build:references && pnpm build:config && pnpm build:astro && pnpm build:i18n",
20+
"build": "pnpm dev:setup && pnpm build:references && pnpm build:config && pnpm build:releases && pnpm build:astro && pnpm build:i18n",
2021
"preview": "astro preview"
2122
},
2223
"dependencies": {
@@ -29,10 +30,11 @@
2930
"prettier": "^3.2.5",
3031
"prettier-plugin-astro": "^0.13.0",
3132
"rehype-autolink-headings": "^7.1.0",
33+
"semver": "^7.6.0",
3234
"sharp": "^0.33.2",
3335
"shiki": "^1.1.7",
3436
"starlight-blog": "^0.5.0",
35-
"starlight-links-validator": "^0.6.0"
37+
"starlight-links-validator": "^0.7.0"
3638
},
3739
"pnpm": {
3840
"patchedDependencies": {

packages/plugins-workspace

Submodule plugins-workspace updated 684 files
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
import { writeFileSync, mkdirSync } from 'node:fs';
2+
import { join } from 'node:path';
3+
4+
const note =
5+
'\n# NOTE: This file is auto-generated in packages/releases-generator/build.ts\n# For corrections please edit it directly';
6+
const packages = [
7+
{
8+
name: 'tauri',
9+
url: 'https://raw.githubusercontent.com/tauri-apps/tauri/dev/core/tauri/CHANGELOG.md',
10+
tag: 'https://github.com/tauri-apps/tauri/releases/tag',
11+
},
12+
{
13+
name: '@tauri-apps/api',
14+
url: 'https://raw.githubusercontent.com/tauri-apps/tauri/dev/tooling/api/CHANGELOG.md',
15+
tag: 'https://github.com/tauri-apps/tauri/releases/tag',
16+
},
17+
{
18+
name: 'tauri-cli',
19+
url: 'https://raw.githubusercontent.com/tauri-apps/tauri/dev/tooling/cli/CHANGELOG.md',
20+
tag: 'https://github.com/tauri-apps/tauri/releases/tag',
21+
},
22+
{
23+
name: '@tauri-apps/cli',
24+
url: 'https://raw.githubusercontent.com/tauri-apps/tauri/dev/tooling/cli/node/CHANGELOG.md',
25+
tag: 'https://github.com/tauri-apps/tauri/releases/tag',
26+
},
27+
{
28+
name: 'tauri-bundler',
29+
url: 'https://raw.githubusercontent.com/tauri-apps/tauri/dev/tooling/bundler/CHANGELOG.md',
30+
tag: 'https://github.com/tauri-apps/tauri/releases/tag',
31+
},
32+
{
33+
name: 'wry',
34+
url: 'https://raw.githubusercontent.com/tauri-apps/wry/dev/CHANGELOG.md',
35+
tag: 'https://github.com/tauri-apps/wry/releases/tag',
36+
},
37+
{
38+
name: 'tao',
39+
url: 'https://raw.githubusercontent.com/tauri-apps/tao/dev/CHANGELOG.md',
40+
tag: 'https://github.com/tauri-apps/tao/releases/tag',
41+
},
42+
];
43+
44+
const baseDir = '../../src/content/docs/releases';
45+
46+
let latestVersions: {
47+
[key: string]: string;
48+
} = {};
49+
50+
async function generator() {
51+
for (const pkg of packages) {
52+
const response = await fetch(pkg.url);
53+
const responseText: string = await response.text();
54+
const releases = responseText
55+
.split('## \\[')
56+
.filter((item) => !item.includes('# Changelog'))
57+
.map((section) => {
58+
const [version, ...c] = section.split('\n');
59+
const contents = c.join('\n');
60+
return {
61+
version: version.replace('\\[', '').replace(']', ''),
62+
notes: contents,
63+
};
64+
})
65+
.filter(({ version }) => !version.includes('Not Published'));
66+
67+
mkdirSync(join(baseDir, pkg.name), { recursive: true });
68+
//
69+
/*
70+
* Write files for each version
71+
*/
72+
let nextPage = '/releases';
73+
let nextLabel = pkg.name;
74+
const len = releases.length;
75+
for (let i = 0; i < len; i++) {
76+
/**
77+
* Deal with next-prev labels
78+
*/
79+
const thisVersion = releases[i].version;
80+
let prevLabel, prevPage;
81+
let navFrontmatter;
82+
if (i !== len - 1) {
83+
prevLabel = releases[i + 1].version;
84+
prevPage = `releases/${pkg.name}/v${releases[i + 1].version}`;
85+
}
86+
if (i === 0) {
87+
// latest version
88+
latestVersions[pkg.name] = `v${thisVersion}`;
89+
navFrontmatter = [
90+
`prev:`,
91+
` link: '${prevPage}'`,
92+
` label: '${prevLabel}'`,
93+
`next: false`,
94+
];
95+
} else if (i === len - 1) {
96+
// earliest version
97+
navFrontmatter = [
98+
`prev: false`,
99+
`next:`,
100+
` link: '${nextPage}'`,
101+
` label: '${nextLabel}'`,
102+
];
103+
} else {
104+
navFrontmatter = [
105+
`prev:`,
106+
` link: '${prevPage}'`,
107+
` label: '${prevLabel}'`,
108+
`next:`,
109+
` link: '${nextPage}'`,
110+
` label: '${nextLabel}'`,
111+
];
112+
}
113+
114+
//
115+
const pageFrontmatter = [
116+
note,
117+
`title: '${pkg.name}@${thisVersion}'`,
118+
`description: '${thisVersion}'`,
119+
`slug: 'releases/${pkg.name}/v${thisVersion}'`,
120+
`tableOfContents: false`,
121+
`editUrl: 'https://github.com/tauri-apps/tauri-docs/packages/releases-generator/build.ts'`,
122+
];
123+
124+
const frontmatter = ['---', ...pageFrontmatter, ...navFrontmatter, '---'].join('\n');
125+
//
126+
const indexLink = `[Return](/releases)`;
127+
const viewInGitHub = `<a href="${pkg.tag}/${pkg.name}-v${thisVersion}">View on GitHub</a>`;
128+
const linksDiv = `<div style="margin-bottom:3rem; display: flex; justify-content: space-between; align-items: center"><span>${indexLink}</span><span>${viewInGitHub}</span></div>`;
129+
//
130+
const sidebar = `\nimport ReleaseSidebar from '@components/list/ReleaseSidebar.astro';
131+
\n\n<ReleaseSidebar slug="releases/${pkg.name}" packageName="${pkg.name}" />\n`;
132+
133+
writeFileSync(
134+
join(baseDir, pkg.name, `v${thisVersion}.mdx`),
135+
`${frontmatter}\n${sidebar}\n${linksDiv}\n${entitify(releases[i].notes)}`
136+
);
137+
138+
// use in next iteration
139+
nextPage = `releases/${pkg.name}/v${thisVersion}`;
140+
nextLabel = `v${thisVersion}`;
141+
}
142+
}
143+
144+
// Generate index page
145+
const extraNote =
146+
'# To quickly preview changes, you can edit this file, them make sure you copy the changes over the source build.ts script\n';
147+
const indexPage = [
148+
'---',
149+
note,
150+
extraNote,
151+
`title: 'Tauri Core Ecosystem Releases'`,
152+
`editUrl: 'https://github.com/tauri-apps/tauri-docs/packages/releases-generator/build.ts'`,
153+
'---',
154+
].join('\n');
155+
156+
const indexPageContent = `import { LinkCard, CardGrid } from '@astrojs/starlight/components';\n
157+
<CardGrid>
158+
<LinkCard title="tauri" href="/releases/tauri/${latestVersions['tauri']}" />
159+
<LinkCard title="@tauri-apps/api" href="/releases/@tauri-apps/api/${latestVersions['@tauri-apps/api']}" />
160+
<LinkCard title="tauri-cli (Rust)" href="/releases/tauri-cli/${latestVersions['tauri-cli']}" />
161+
<LinkCard title="@tauri-apps/cli (JavaScript)" href="/releases/@tauri-apps/cli/${latestVersions['@tauri-apps/cli']}" />
162+
<LinkCard title="tauri-bundler" href="/releases/tauri-bundler/${latestVersions['tauri-bundler']}" />
163+
<LinkCard title="wry" href="/releases/wry/${latestVersions['wry']}" />
164+
<LinkCard title="tao" href="/releases/tao/${latestVersions['tao']}" />
165+
</CardGrid>`;
166+
167+
writeFileSync(join(baseDir, 'index.mdx'), `${indexPage}\n${indexPageContent}`);
168+
}
169+
170+
function entitify(str: string): string {
171+
return str
172+
.replace(/[&<>"']/g, function (entity) {
173+
switch (entity) {
174+
case '&':
175+
return '&amp;';
176+
case '<':
177+
return '&lt;';
178+
case '>':
179+
return '&gt;';
180+
case '"':
181+
return '&quot;';
182+
case "'":
183+
return '&#39;';
184+
default:
185+
return entity;
186+
}
187+
})
188+
.replace(/\$\{/g, '$\\{');
189+
}
190+
191+
generator();
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "releases-generator",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "index.js",
6+
"scripts": {
7+
"build": "tsm ./build.ts"
8+
},
9+
"keywords": [],
10+
"author": "",
11+
"license": "ISC",
12+
"dependencies": {
13+
"tsm": "^2.3.0"
14+
}
15+
}

0 commit comments

Comments
 (0)