diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 03cc5ff..6515d25 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -4,24 +4,15 @@ on: push: branches: - master - - docs-refactor jobs: gen: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - with: - submodules: true - uses: actions/setup-go@v2 - - name: Download Task - run: 'sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d' - - name: Build - run: ./bin/task - name: Run docgen run: go run cmd/docgen/docgen.go - - name: Run lua docgen - run: ./hilbish cmd/docgen/docgen.lua - name: Commit new docs uses: stefanzweifel/git-auto-commit-action@v4 with: diff --git a/cmd/docgen/docgen.lua b/cmd/docgen/docgen.lua deleted file mode 100644 index 406cb99..0000000 --- a/cmd/docgen/docgen.lua +++ /dev/null @@ -1,70 +0,0 @@ -local fs = require 'fs' -local emmyPattern = '^%-%-%- (.+)' -local pieces = {} - -local files = fs.readdir 'nature' -for _, fname in ipairs(files) do - local isScript = fname:match'%.lua$' - if not isScript then goto continue end - - local f = io.open(string.format('nature/%s', fname)) - local header = f:read '*l' - if not header:match(emmyPattern) then goto continue end - - print(fname) - - local iface = header:match(emmyPattern) - pieces[iface] = {} - - local docPiece = {} - for line in f:lines() do - if line == header then goto continue2 end - if not line:match(emmyPattern) then - if line:match '^function' then - local pattern = (string.format('^function %s.', iface) .. '(%w+)') - local funcName = line:match(pattern) - pieces[iface][funcName] = docPiece - end - docPiece = {} - goto continue2 - end - - table.insert(docPiece, line) - ::continue2:: - end - ::continue:: -end - -for iface, dps in pairs(pieces) do - local mod = iface:match '(%w+)%.' - local path = string.format('docs/api/%s/%s.md', mod, iface) - local f = io.open(path, 'a+') - - print(mod, path) - - for func, docs in pairs(dps) do - local params = table.filter(docs, function(t) - return t:match '^%-%-%- @param' - end) - f:write(string.format('## %s(', func)) - for i, str in ipairs(params) do - if i ~= 1 then - f:write ', ' - end - f:write(str:match '^%-%-%- @param ([%w]+) ') - end - f:write(')\n') - - for _, str in ipairs(docs) do - if not str:match '^%-%-%- @' then - f:write(str:match '^%-%-%- (.+)' .. '\n') - end - end - f:write('\n') - end - f:flush() -end - - - -