mirror of
https://github.com/zadam/trilium.git
synced 2025-11-06 13:26:01 +01:00
refactor(build-docs): integrate with original build-docs script
This commit is contained in:
@@ -12,6 +12,8 @@
|
|||||||
"packageManager": "pnpm@10.19.0",
|
"packageManager": "pnpm@10.19.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@redocly/cli": "2.10.0",
|
"@redocly/cli": "2.10.0",
|
||||||
|
"archiver": "7.0.1",
|
||||||
|
"fs-extra": "11.3.2",
|
||||||
"react": "19.2.0",
|
"react": "19.2.0",
|
||||||
"react-dom": "19.2.0"
|
"react-dom": "19.2.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,14 +4,15 @@ process.env.NODE_ENV = "development";
|
|||||||
|
|
||||||
import cls from "@triliumnext/server/src/services/cls.js";
|
import cls from "@triliumnext/server/src/services/cls.js";
|
||||||
import { dirname, join, resolve } from "path";
|
import { dirname, join, resolve } from "path";
|
||||||
import fs, { copyFile } from "fs/promises";
|
import * as fs from "fs/promises";
|
||||||
import fsExtra, { createWriteStream, type WriteStream } from "fs-extra";
|
import * as fsExtra from "fs-extra";
|
||||||
import archiver from "archiver";
|
import archiver from "archiver";
|
||||||
|
import { WriteStream } from "fs";
|
||||||
|
|
||||||
const DOCS_ROOT = "../../../docs";
|
const DOCS_ROOT = "../../../docs";
|
||||||
const OUTPUT_DIR = "../../site";
|
const OUTPUT_DIR = "../../site";
|
||||||
|
|
||||||
async function main() {
|
async function buildDocsInner() {
|
||||||
const i18n = await import("@triliumnext/server/src/services/i18n.js");
|
const i18n = await import("@triliumnext/server/src/services/i18n.js");
|
||||||
await i18n.initializeTranslations();
|
await i18n.initializeTranslations();
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ async function main() {
|
|||||||
"export",
|
"export",
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
const fileOutputStream = createWriteStream(zipFilePath);
|
const fileOutputStream = fsExtra.createWriteStream(zipFilePath);
|
||||||
await exportToZip(taskContext, branch, "share", fileOutputStream);
|
await exportToZip(taskContext, branch, "share", fileOutputStream);
|
||||||
await waitForStreamToFinish(fileOutputStream);
|
await waitForStreamToFinish(fileOutputStream);
|
||||||
await extractZip(zipFilePath, OUTPUT_DIR);
|
await extractZip(zipFilePath, OUTPUT_DIR);
|
||||||
@@ -41,7 +42,7 @@ async function main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Copy favicon.
|
// Copy favicon.
|
||||||
await copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "favicon.ico"));
|
await fs.copyFile("../../apps/website/src/assets/favicon.ico", join(OUTPUT_DIR, "favicon.ico"));
|
||||||
|
|
||||||
console.log("Documentation built successfully!");
|
console.log("Documentation built successfully!");
|
||||||
}
|
}
|
||||||
@@ -106,4 +107,12 @@ export async function extractZip(zipFilePath: string, outputPath: string, ignore
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
cls.init(main);
|
export default async function buildDocs() {
|
||||||
|
return new Promise((res, rej) => {
|
||||||
|
cls.init(() => {
|
||||||
|
buildDocsInner()
|
||||||
|
.catch(rej)
|
||||||
|
.then(res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
export default interface BuildContext {
|
export default interface BuildContext {
|
||||||
|
gitRootDir: string;
|
||||||
baseDir: string;
|
baseDir: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,17 +2,20 @@ import { join } from "path";
|
|||||||
import BuildContext from "./context";
|
import BuildContext from "./context";
|
||||||
import buildSwagger from "./swagger";
|
import buildSwagger from "./swagger";
|
||||||
import { mkdirSync, rmSync } from "fs";
|
import { mkdirSync, rmSync } from "fs";
|
||||||
|
import buildDocs from "./build-docs";
|
||||||
|
|
||||||
const context: BuildContext = {
|
const context: BuildContext = {
|
||||||
|
gitRootDir: join(__dirname, "../../../"),
|
||||||
baseDir: join(__dirname, "../../../site")
|
baseDir: join(__dirname, "../../../site")
|
||||||
};
|
};
|
||||||
|
|
||||||
function main() {
|
async function main() {
|
||||||
// Clean input dir.
|
// Clean input dir.
|
||||||
rmSync(context.baseDir, { recursive: true });
|
rmSync(context.baseDir, { recursive: true });
|
||||||
mkdirSync(context.baseDir);
|
mkdirSync(context.baseDir);
|
||||||
|
|
||||||
// Start building.
|
// Start building.
|
||||||
|
await buildDocs();
|
||||||
buildSwagger(context);
|
buildSwagger(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,19 +10,21 @@ interface BuildInfo {
|
|||||||
|
|
||||||
const buildInfos: BuildInfo[] = [
|
const buildInfos: BuildInfo[] = [
|
||||||
{
|
{
|
||||||
specPath: join(__dirname, "../../server/src/assets/api-openapi.yaml"),
|
// Paths are relative to Git root.
|
||||||
|
specPath: "apps/server/src/assets/api-openapi.yaml",
|
||||||
outDir: "api/internal"
|
outDir: "api/internal"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
specPath: join(__dirname, "../../server/src/assets/etapi.openapi.yaml"),
|
specPath: "apps/server/src/assets/etapi.openapi.yaml",
|
||||||
outDir: "api/etapi"
|
outDir: "api/etapi"
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
export default function buildSwagger({ baseDir }: BuildContext) {
|
export default function buildSwagger({ baseDir, gitRootDir }: BuildContext) {
|
||||||
for (const { specPath, outDir } of buildInfos) {
|
for (const { specPath, outDir } of buildInfos) {
|
||||||
|
const absSpecPath = join(gitRootDir, specPath);
|
||||||
const targetDir = join(baseDir, outDir);
|
const targetDir = join(baseDir, outDir);
|
||||||
mkdirSync(outDir, { recursive: true });
|
mkdirSync(outDir, { recursive: true });
|
||||||
execSync(`pnpm redocly build-docs ${specPath} -o ${targetDir}/index.html`, { stdio: "inherit" });
|
execSync(`pnpm redocly build-docs ${absSpecPath} -o ${targetDir}/index.html`, { stdio: "inherit" });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
33
pnpm-lock.yaml
generated
33
pnpm-lock.yaml
generated
@@ -130,6 +130,12 @@ importers:
|
|||||||
'@redocly/cli':
|
'@redocly/cli':
|
||||||
specifier: 2.10.0
|
specifier: 2.10.0
|
||||||
version: 2.10.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5)
|
version: 2.10.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5)
|
||||||
|
archiver:
|
||||||
|
specifier: 7.0.1
|
||||||
|
version: 7.0.1
|
||||||
|
fs-extra:
|
||||||
|
specifier: 11.3.2
|
||||||
|
version: 11.3.2
|
||||||
react:
|
react:
|
||||||
specifier: 19.2.0
|
specifier: 19.2.0
|
||||||
version: 19.2.0
|
version: 19.2.0
|
||||||
@@ -6014,9 +6020,6 @@ packages:
|
|||||||
balanced-match@2.0.0:
|
balanced-match@2.0.0:
|
||||||
resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
|
resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
|
||||||
|
|
||||||
bare-events@2.5.4:
|
|
||||||
resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==}
|
|
||||||
|
|
||||||
bare-events@2.7.0:
|
bare-events@2.7.0:
|
||||||
resolution: {integrity: sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==}
|
resolution: {integrity: sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==}
|
||||||
|
|
||||||
@@ -13091,9 +13094,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
|
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
|
|
||||||
streamx@2.22.0:
|
|
||||||
resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==}
|
|
||||||
|
|
||||||
streamx@2.23.0:
|
streamx@2.23.0:
|
||||||
resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==}
|
resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==}
|
||||||
|
|
||||||
@@ -15438,6 +15438,8 @@ snapshots:
|
|||||||
'@ckeditor/ckeditor5-core': 47.1.0
|
'@ckeditor/ckeditor5-core': 47.1.0
|
||||||
'@ckeditor/ckeditor5-utils': 47.1.0
|
'@ckeditor/ckeditor5-utils': 47.1.0
|
||||||
ckeditor5: 47.1.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
|
ckeditor5: 47.1.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@ckeditor/ckeditor5-code-block@47.1.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)':
|
'@ckeditor/ckeditor5-code-block@47.1.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)':
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -16188,6 +16190,8 @@ snapshots:
|
|||||||
'@ckeditor/ckeditor5-ui': 47.1.0
|
'@ckeditor/ckeditor5-ui': 47.1.0
|
||||||
'@ckeditor/ckeditor5-utils': 47.1.0
|
'@ckeditor/ckeditor5-utils': 47.1.0
|
||||||
ckeditor5: 47.1.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
|
ckeditor5: 47.1.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@ckeditor/ckeditor5-restricted-editing@47.1.0':
|
'@ckeditor/ckeditor5-restricted-editing@47.1.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -21231,11 +21235,7 @@ snapshots:
|
|||||||
|
|
||||||
balanced-match@2.0.0: {}
|
balanced-match@2.0.0: {}
|
||||||
|
|
||||||
bare-events@2.5.4:
|
bare-events@2.7.0: {}
|
||||||
optional: true
|
|
||||||
|
|
||||||
bare-events@2.7.0:
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
bare-fs@4.4.5:
|
bare-fs@4.4.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -23775,7 +23775,6 @@ snapshots:
|
|||||||
events-universal@1.0.1:
|
events-universal@1.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
bare-events: 2.7.0
|
bare-events: 2.7.0
|
||||||
optional: true
|
|
||||||
|
|
||||||
events@3.3.0: {}
|
events@3.3.0: {}
|
||||||
|
|
||||||
@@ -29917,19 +29916,11 @@ snapshots:
|
|||||||
|
|
||||||
streamsearch@1.1.0: {}
|
streamsearch@1.1.0: {}
|
||||||
|
|
||||||
streamx@2.22.0:
|
|
||||||
dependencies:
|
|
||||||
fast-fifo: 1.3.2
|
|
||||||
text-decoder: 1.2.3
|
|
||||||
optionalDependencies:
|
|
||||||
bare-events: 2.5.4
|
|
||||||
|
|
||||||
streamx@2.23.0:
|
streamx@2.23.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
events-universal: 1.0.1
|
events-universal: 1.0.1
|
||||||
fast-fifo: 1.3.2
|
fast-fifo: 1.3.2
|
||||||
text-decoder: 1.2.3
|
text-decoder: 1.2.3
|
||||||
optional: true
|
|
||||||
|
|
||||||
strict-event-emitter@0.5.1:
|
strict-event-emitter@0.5.1:
|
||||||
optional: true
|
optional: true
|
||||||
@@ -30442,7 +30433,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
b4a: 1.6.7
|
b4a: 1.6.7
|
||||||
fast-fifo: 1.3.2
|
fast-fifo: 1.3.2
|
||||||
streamx: 2.22.0
|
streamx: 2.23.0
|
||||||
|
|
||||||
tar@6.2.1:
|
tar@6.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|||||||
Reference in New Issue
Block a user