#!/usr/bin/env lua local doc = require "lib/doc" local tA = {...} local outpath = table.remove(tA,1) print(outpath) local function formatDocs(fd) local rs = "" for name,finfo in pairs(fd) do if rs:len() > 0 then rs = rs .. "\n\n" end local as = "" for k,v in pairs(finfo.args) do if k > 1 then as = as .. ", " end as = as .. v[1] if v[2] then as = as .. "^"..v[2].."^" end end local rt = "" for k,v in pairs(finfo.outtypes or {}) do if rt:len() > 0 then rt = rt .. ", " else rt = ": " end rt = rt .. v end rs = string.format("%s## %s(%s)%s\n%s",rs,name,as,rt,finfo.description) end return rs end os.execute("sh -c 'mkdir -p "..outpath .. "'") if outpath:sub(#outpath) == "/" then outpath = outpath:sub(1, #outpath - 1) end local ad = io.open(outpath.."/apidoc.md","w") for k,v in pairs(tA) do local fd = doc.parsefile(v) local ds = formatDocs(fd) print(string.format("%s: %i",v,ds:len())) if ds and ds:len() > 0 then os.execute("sh -c 'mkdir -p $(dirname \""..outpath.."/"..v.."\")'") local f = io.open(outpath.."/"..v:gsub("%.lua$",".md"),"wb") f:write(string.format("# %s\n\n",v)) f:write(ds) f:write("\n\n") f:close() ad:write(string.format("# %s\n\n",v)) ad:write(ds) ad:write("\n\n") end end ad:close()