diff --git a/docs-site/scripts/build-demo-runtime.mjs b/docs-site/scripts/build-demo-runtime.mjs index 5c09ee6..4a96b3a 100644 --- a/docs-site/scripts/build-demo-runtime.mjs +++ b/docs-site/scripts/build-demo-runtime.mjs @@ -1,37 +1,54 @@ -import { spawn } from 'node:child_process'; -import { access, copyFile, mkdir, readdir, readFile, rm, writeFile } from 'node:fs/promises'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; +import { spawn } from "node:child_process"; +import { + access, + copyFile, + mkdir, + readdir, + readFile, + rm, + writeFile, +} from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; -const siteRoot = path.resolve(fileURLToPath(new URL('..', import.meta.url))); -const repoRoot = path.resolve(siteRoot, '..'); -const frontendRoot = path.join(repoRoot, 'frontend'); -const runtimeDir = path.join(siteRoot, 'public', 'demo', 'runtime'); -const templatesDir = path.join(repoRoot, 'backend', 'bot', 'app', 'web', 'templates'); -const themesDir = path.join(repoRoot, 'backend', 'bot', 'app', 'web', 'themes'); -const localesDir = path.join(repoRoot, 'locales'); -const runtimeBase = '/demo/runtime'; +const siteRoot = path.resolve(fileURLToPath(new URL("..", import.meta.url))); +const repoRoot = path.resolve(siteRoot, ".."); +const frontendRoot = path.join(repoRoot, "frontend"); +const runtimeDir = path.join(siteRoot, "public", "demo", "runtime"); +const templatesDir = path.join( + repoRoot, + "backend", + "bot", + "app", + "web", + "templates", +); +const themesDir = path.join(repoRoot, "backend", "bot", "app", "web", "themes"); +const localesDir = path.join(repoRoot, "locales"); +const runtimeBase = "/demo/runtime"; const installGuidesConfigUrl = - 'https://raw.githubusercontent.com/legiz-ru/my-remnawave/main/sub-page/subpage-config/multiapp.json'; + "https://raw.githubusercontent.com/legiz-ru/my-remnawave/main/sub-page/subpage-config/multiapp.json"; const installGuidesConfigRetries = 3; -const isWindows = process.platform === 'win32'; -const npmExecPath = process.env.npm_execpath || ''; +const isWindows = process.platform === "win32"; +const npmExecPath = process.env.npm_execpath || ""; function run(command, args, options = {}) { return new Promise((resolve, reject) => { const child = spawn(command, args, { cwd: repoRoot, - stdio: 'inherit', + stdio: "inherit", shell: false, ...options, }); - child.on('error', reject); - child.on('exit', (code) => { + child.on("error", reject); + child.on("exit", (code) => { if (code === 0) { resolve(); return; } - reject(new Error(`${command} ${args.join(' ')} exited with code ${code}`)); + reject( + new Error(`${command} ${args.join(" ")} exited with code ${code}`), + ); }); }); } @@ -40,7 +57,7 @@ function runNpm(args) { if (npmExecPath) { return run(process.execPath, [npmExecPath, ...args]); } - return run(isWindows ? 'npm.cmd' : 'npm', args, { shell: isWindows }); + return run(isWindows ? "npm.cmd" : "npm", args, { shell: isWindows }); } async function pathExists(targetPath) { @@ -54,10 +71,10 @@ async function pathExists(targetPath) { async function ensureFrontendDependencies() { const viteBin = isWindows - ? path.join(frontendRoot, 'node_modules', '.bin', 'vite.cmd') - : path.join(frontendRoot, 'node_modules', '.bin', 'vite'); + ? path.join(frontendRoot, "node_modules", ".bin", "vite.cmd") + : path.join(frontendRoot, "node_modules", ".bin", "vite"); if (await pathExists(viteBin)) return; - await runNpm(['--prefix', frontendRoot, 'ci']); + await runNpm(["--prefix", frontendRoot, "ci"]); } async function copyDirectory(sourceDir, targetDir, transform = null) { @@ -81,11 +98,14 @@ async function copyDirectory(sourceDir, targetDir, transform = null) { } async function copyThemeFile(sourcePath, targetPath) { - if (path.extname(sourcePath).toLowerCase() !== '.css') return false; - const css = await readFile(sourcePath, 'utf8'); - const rewritten = css.replace(/\/webapp-theme-assets\//g, `${runtimeBase}/themes/`); + if (path.extname(sourcePath).toLowerCase() !== ".css") return false; + const css = await readFile(sourcePath, "utf8"); + const rewritten = css.replace( + /\/webapp-theme-assets\//g, + `${runtimeBase}/themes/`, + ); await mkdir(path.dirname(targetPath), { recursive: true }); - await writeFile(targetPath, rewritten, 'utf8'); + await writeFile(targetPath, rewritten, "utf8"); return true; } @@ -98,13 +118,13 @@ function wait(ms) { } function jsonScriptPayload(value) { - return JSON.stringify(value).replace(/ -