60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
|
const fs = require("fs")
|
||
|
const { join } = require("path")
|
||
|
const { createDoc } = require("apidoc")
|
||
|
const packageJson = require("../../package.json")
|
||
|
|
||
|
const config = {
|
||
|
name: "Budibase API",
|
||
|
version: packageJson.version,
|
||
|
description:
|
||
|
"Documentation for the various API endpoints of the Budibase backend.",
|
||
|
title: "Budibase app service API",
|
||
|
}
|
||
|
|
||
|
const disallowed = []
|
||
|
|
||
|
function filter(parsedRouteFiles) {
|
||
|
const tagToSearch = "url"
|
||
|
for (let routeFile of parsedRouteFiles) {
|
||
|
for (let route of routeFile) {
|
||
|
let routeInfo = route["local"]
|
||
|
if (disallowed.includes(routeInfo[tagToSearch])) {
|
||
|
const idx = routeFile.indexOf(route)
|
||
|
routeFile.splice(idx, 1)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function generate() {
|
||
|
// start by writing a config file
|
||
|
const configPath = join(__dirname, "config.json")
|
||
|
fs.writeFileSync(configPath, JSON.stringify(config))
|
||
|
const mainPath = join(__dirname, "..", "..")
|
||
|
const srcPath = join(mainPath, "src", "api", "routes")
|
||
|
const assetsPath = join(mainPath, "builder", "assets", "docs")
|
||
|
if (!fs.existsSync(assetsPath)) {
|
||
|
fs.mkdirSync(assetsPath, { recursive: true })
|
||
|
}
|
||
|
const doc = createDoc({
|
||
|
src: srcPath,
|
||
|
dest: assetsPath,
|
||
|
silent: true,
|
||
|
filters: {
|
||
|
main: {
|
||
|
postFilter: filter,
|
||
|
},
|
||
|
},
|
||
|
config: configPath,
|
||
|
})
|
||
|
if (typeof doc !== "boolean") {
|
||
|
console.log("Docs generated successfully.")
|
||
|
} else {
|
||
|
console.error("Unable to generate docs.")
|
||
|
}
|
||
|
// delete the temporary config file
|
||
|
fs.unlinkSync(configPath)
|
||
|
}
|
||
|
|
||
|
generate()
|