docs: cut to v0.9.0 with unified .de/.en naming
- Remove all prior release notes and version snapshots (v0.6.0-v0.8.6) - Rename handbook to *.de.md; keep *.en.md - New release notes v0.9.0.de.md/.en.md with v0.9.0 snapshot - generate-docs.mjs: .de/.en convention incl. search index and en-fallback - docs.tsx: release fallback now uses version.de.md - Wording: neutral tagline, anonymous user, no gender forms - Add docs/examples/import-tools.yaml and link from administration docs
This commit is contained in:
@@ -25,20 +25,20 @@ const handbookDir = resolve(root, "docs/handbook");
|
||||
const releasesDir = resolve(root, "docs/releases");
|
||||
const targetDir = resolve(root, "artifacts/toolrate/public/docs");
|
||||
|
||||
const isReleaseFile = (name) => /^v\d+\.\d+\.\d+\.md$/.test(name);
|
||||
const isReleaseFile = (name) => /^v\d+\.\d+\.\d+\.de\.md$/.test(name);
|
||||
const isEnReleaseFile = (name) => /^v\d+\.\d+\.\d+\.en\.md$/.test(name);
|
||||
const isHandbookFile = (name) => /\.md$/.test(name) && !name.endsWith(".en.md");
|
||||
const isHandbookFile = (name) => /\.de\.md$/.test(name);
|
||||
const isEnHandbookFile = (name) => /\.en\.md$/.test(name);
|
||||
|
||||
const enName = (file) => (file.endsWith(".md") ? `${file.slice(0, -3)}.en.md` : null);
|
||||
const deName = (file) => (file.endsWith(".en.md") ? `${file.slice(0, -6)}.md` : null);
|
||||
const enName = (file) => (file.endsWith(".de.md") ? `${file.slice(0, -6)}.en.md` : null);
|
||||
const deName = (file) => (file.endsWith(".en.md") ? `${file.slice(0, -6)}.de.md` : null);
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Version helpers
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function parseVersion(name) {
|
||||
return name.replace(/\.md$/, "");
|
||||
return name.replace(/\.(de|en)\.md$/, "");
|
||||
}
|
||||
|
||||
function cmp(a, b) {
|
||||
@@ -198,7 +198,7 @@ function parseHandbook(content) {
|
||||
}
|
||||
|
||||
function slugify(name) {
|
||||
return name.replace(/\.md$/, "").toLowerCase().replace(/[^a-z0-9-]+/g, "-");
|
||||
return name.replace(/\.(de|en)?\.md$/, "").toLowerCase().replace(/[^a-z0-9-]+/g, "-");
|
||||
}
|
||||
|
||||
async function readFileOptional(path) {
|
||||
@@ -328,7 +328,7 @@ async function buildSearchIndex(reference, handbookPages, releaseVersions) {
|
||||
}
|
||||
|
||||
for (const version of releaseVersions) {
|
||||
const file = join(releasesDir, `${version}.md`);
|
||||
const file = join(releasesDir, `${version}.de.md`);
|
||||
const content = await readFile(file, "utf8");
|
||||
const base = {
|
||||
title: version,
|
||||
@@ -418,9 +418,9 @@ async function main() {
|
||||
const version = parseVersion(name);
|
||||
const content = await readFile(join(releasesDir, name), "utf8");
|
||||
await copyFile(join(releasesDir, name), join(targetDir, "releases", name));
|
||||
const enName = `${version}.en.md`;
|
||||
const enContent = await readFileOptional(join(releasesDir, enName));
|
||||
if (enContent) await copyFile(join(releasesDir, enName), join(targetDir, "releases", enName));
|
||||
const releaseEnName = enName(name);
|
||||
const enContent = await readFileOptional(join(releasesDir, releaseEnName));
|
||||
if (enContent) await copyFile(join(releasesDir, releaseEnName), join(targetDir, "releases", releaseEnName));
|
||||
const snapDir = join(releasesDir, version);
|
||||
const hasReference = await stat(join(snapDir, "reference.json"))
|
||||
.then(() => true)
|
||||
@@ -459,7 +459,7 @@ async function main() {
|
||||
versions.push({
|
||||
version,
|
||||
file: `releases/${name}`,
|
||||
fileEn: enContent ? `releases/${enName}` : null,
|
||||
fileEn: enContent ? `releases/${releaseEnName}` : null,
|
||||
title: extractTitle(content) ?? version,
|
||||
titleEn: enContent ? extractTitle(enContent) ?? version : null,
|
||||
date: extractDate(content) ?? null,
|
||||
|
||||
Reference in New Issue
Block a user