forked from tsai/budibase
4 changed files with 1766 additions and 35 deletions
@ -0,0 +1,59 @@ |
|||||
|
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() |
||||
File diff suppressed because it is too large
Loading…
Reference in new issue