Files
headplane/nix/docs.js
T
2025-08-18 13:10:38 -04:00

38 lines
993 B
JavaScript

import fs from "node:fs";
function renderOptions(options) {
const blocks = Object.keys(options).map((key) => {
const opt = options[key];
const name = key.split(".").slice(2).join(".");
const lines = [];
lines.push(`## ${name}`);
lines.push(`*Description:* ${opt.description}\n`);
lines.push(`*Type:* ${opt.type}\n`);
if (opt.default) {
lines.push(`*Default:* \`${opt.default.text}\`\n`);
}
if (opt.example) {
lines.push(`*Example:* \`${opt.example.text}\`\n`);
}
return lines.join("\n");
});
return [
`# NixOS module options
|
|All options must be under \`services.headplane\`.
|
|For example: \`settings.headscale.config_path\` becomes \`services.headplane.settings.headscale.config_path\`.`
.split("|")
.map((s) => s.replace(/\n\s+/g, ""))
.join("\n"),
]
.concat(blocks)
.join("\n\n");
}
const filename = process.argv[2];
const file = fs.readFileSync(filename);
const json = JSON.parse(file);
console.log(renderOptions(json));