kong/autodoc/cli/generate.lua (44 lines of code) (raw):
#!/usr/bin/env resty
-- This file must be executed from the root folder, i.e.
-- ./autodoc/cli/generate.lua
setmetatable(_G, nil)
local lfs = require("lfs")
local data = require("autodoc.cli.data")
local cmds = {}
for file in lfs.dir("kong/cmd") do
local cmd = file:match("(.*)%.lua$")
if cmd and cmd ~= "roar" and cmd ~= "init" then
table.insert(cmds, cmd)
end
end
table.sort(cmds)
lfs.mkdir("autodoc")
lfs.mkdir("autodoc/output")
local outpath = "autodoc/output/cli.md"
local outfd = assert(io.open(outpath, "w+"))
outfd:write(data.header)
local function write(str)
outfd:write(str)
outfd:write("\n")
end
print("Building CLI docs...")
for _, cmd in ipairs(cmds) do
write("")
write("### kong " .. cmd)
write("")
if data.command_intro[cmd] then
write((("\n"..data.command_intro[cmd]):gsub("\n%s+", "\n"):gsub("^\n", "")))
end
write("```")
local pd = io.popen("bin/kong " .. cmd .. " --help 2>&1")
local info = pd:read("*a")
info = info:gsub(" %-%-v[^\n]+\n", "")
info = info:gsub("\nOptions:\n$", "")
write(info)
pd:close()
write("```")
write("")
write("---")
write("")
end
outfd:write(data.footer)
outfd:close()
print(" Wrote " .. outpath)