first commit
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
||||
import { dirname, join } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const rootDir = dirname(dirname(fileURLToPath(import.meta.url)));
|
||||
const swaggerSource = join(rootDir, "swagger.yaml");
|
||||
const publicSwaggerYaml = join(rootDir, "public", "swagger.yaml");
|
||||
const publicSwaggerHtml = join(rootDir, "public", "swagger.html");
|
||||
const docsSwaggerYaml = join(rootDir, "docs", "api", "swagger.yaml");
|
||||
const docsSwaggerHtml = join(rootDir, "docs", "api", "swagger.html");
|
||||
|
||||
const swaggerYaml = readFileSync(swaggerSource, "utf8");
|
||||
|
||||
function createSwaggerHtml({ specUrl }) {
|
||||
return `<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Wallora Searcher API Docs</title>
|
||||
<link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5/swagger-ui.css" />
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
background: #ffffff;
|
||||
}
|
||||
.swagger-ui .topbar {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="swagger-ui"></div>
|
||||
<script src="https://unpkg.com/swagger-ui-dist@5/swagger-ui-bundle.js"></script>
|
||||
<script src="https://unpkg.com/swagger-ui-dist@5/swagger-ui-standalone-preset.js"></script>
|
||||
<script>
|
||||
window.addEventListener("load", () => {
|
||||
window.ui = SwaggerUIBundle({
|
||||
url: ${JSON.stringify(specUrl)},
|
||||
dom_id: "#swagger-ui",
|
||||
deepLinking: true,
|
||||
presets: [
|
||||
SwaggerUIBundle.presets.apis,
|
||||
SwaggerUIStandalonePreset
|
||||
],
|
||||
layout: "StandaloneLayout"
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
`;
|
||||
}
|
||||
|
||||
function writeGeneratedFile(path, content) {
|
||||
mkdirSync(dirname(path), { recursive: true });
|
||||
writeFileSync(path, content);
|
||||
}
|
||||
|
||||
writeGeneratedFile(publicSwaggerYaml, swaggerYaml);
|
||||
writeGeneratedFile(
|
||||
publicSwaggerHtml,
|
||||
createSwaggerHtml({ specUrl: "/swagger.yaml" }),
|
||||
);
|
||||
writeGeneratedFile(docsSwaggerYaml, swaggerYaml);
|
||||
writeGeneratedFile(
|
||||
docsSwaggerHtml,
|
||||
createSwaggerHtml({ specUrl: "./swagger.yaml" }),
|
||||
);
|
||||
|
||||
console.log("Generated Swagger docs:");
|
||||
console.log(`- ${publicSwaggerHtml}`);
|
||||
console.log(`- ${publicSwaggerYaml}`);
|
||||
console.log(`- ${docsSwaggerHtml}`);
|
||||
console.log(`- ${docsSwaggerYaml}`);
|
||||
Reference in New Issue
Block a user