kong/autodoc/pdk/generate.lua (33 lines of code) (raw):

#!/usr/bin/env resty -- This file must be executed from the root folder, i.e. -- ./autodoc/pdk/generate.lua setmetatable(_G, nil) local lfs = require("lfs") local pl_utils = require "pl.utils" local cjson = require "cjson" local fmt = string.format -- prepare output folder lfs.mkdir("autodoc") lfs.mkdir("autodoc/output") lfs.mkdir("autodoc/output/pdk") print("Building PDK docs...") -- Generate navigation yml local cmd = "ldoc -q -i --filter autodoc/pdk/ldoc/filters.nav ./kong/pdk" local ok, code, stdout, stderr = pl_utils.executeex(cmd) assert(ok and code == 0, stderr) local outputpath = "autodoc/output/_pdk_nav.yml" local outfd = assert(io.open(outputpath, "w+")) outfd:write(stdout) outfd:close() print(" Wrote " .. outputpath) -- Obtain the list of modules in json form & parse it local cmd = 'ldoc -q -i --filter autodoc/pdk/ldoc/filters.json ./kong/pdk' local ok, code, stdout, stderr = pl_utils.executeex(cmd) assert(ok and code == 0, stderr) local modules = cjson.decode(stdout) local outputfolder = "autodoc/output/pdk" for _,module in ipairs(modules) do local outputpath = fmt("%s/%s.md", outputfolder, module.name) cmd = fmt("ldoc -q -c autodoc/pdk/ldoc/config.ld %s && mv ./%s.md %s", module.file, module.generated_name, outputpath) local ok, code, _, stderr = pl_utils.executeex(cmd) assert(ok and code == 0, stderr) print(" Wrote " .. outputpath) end