feat: use goroutines for doc gen loop

docs-refactor
TorchedSammy 2022-12-03 11:33:18 -04:00
parent 079bedc6dc
commit 4f959c326a
Signed by: sammyette
GPG Key ID: 904FC49417B44DCD
1 changed files with 39 additions and 25 deletions

View File

@ -9,6 +9,7 @@ import (
"go/token" "go/token"
"strings" "strings"
"os" "os"
"sync"
) )
var header = `--- var header = `---
@ -146,39 +147,52 @@ func main() {
} }
} }
var wg sync.WaitGroup
wg.Add(len(docs) * 2)
for mod, v := range docs { for mod, v := range docs {
modN := mod modN := mod
if mod == "main" { if mod == "main" {
modN = "hilbish" modN = "hilbish"
} }
f, _ := os.Create("docs/api/" + modN + ".md")
f.WriteString(fmt.Sprintf(header, modN, v.ShortDescription))
f.WriteString(fmt.Sprintf("## Introduction\n%s\n\n## Functions\n", v.Description))
for _, dps := range v.Docs {
f.WriteString(fmt.Sprintf("### %s\n", dps.FuncSig))
for _, doc := range dps.Doc {
if !strings.HasPrefix(doc, "---") {
f.WriteString(doc + "\n")
}
}
f.WriteString("\n")
}
ff, _ := os.Create("emmyLuaDocs/" + modN + ".lua") go func(modName string) {
ff.WriteString("--- @meta\n\nlocal " + modN + " = {}\n\n") defer wg.Done()
for _, em := range emmyDocs[mod] {
funcdocs := []string{} f, _ := os.Create("docs/api/" + modN + ".md")
for _, dps := range docs[mod].Docs{ f.WriteString(fmt.Sprintf(header, modN, v.ShortDescription))
if dps.FuncName == em.FuncName { f.WriteString(fmt.Sprintf("## Introduction\n%s\n\n## Functions\n", v.Description))
funcdocs = dps.Doc for _, dps := range v.Docs {
f.WriteString(fmt.Sprintf("### %s\n", dps.FuncSig))
for _, doc := range dps.Doc {
if !strings.HasPrefix(doc, "---") {
f.WriteString(doc + "\n")
}
} }
f.WriteString("\n")
} }
ff.WriteString("--- " + strings.Join(funcdocs, "\n--- ") + "\n") }(modN)
if len(em.Docs) != 0 {
ff.WriteString(strings.Join(em.Docs, "\n") + "\n") go func(md, modName string) {
defer wg.Done()
ff, _ := os.Create("emmyLuaDocs/" + modN + ".lua")
ff.WriteString("--- @meta\n\nlocal " + modN + " = {}\n\n")
for _, em := range emmyDocs[md] {
funcdocs := []string{}
for _, dps := range docs[md].Docs{
if dps.FuncName == em.FuncName {
funcdocs = dps.Doc
}
}
ff.WriteString("--- " + strings.Join(funcdocs, "\n--- ") + "\n")
if len(em.Docs) != 0 {
ff.WriteString(strings.Join(em.Docs, "\n") + "\n")
}
ff.WriteString("function " + modN + "." + em.FuncName + "(" + strings.Join(em.Params, ", ") + ") end\n\n")
} }
ff.WriteString("function " + modN + "." + em.FuncName + "(" + strings.Join(em.Params, ", ") + ") end\n\n") ff.WriteString("return " + modN + "\n")
} }(mod, modN)
ff.WriteString("return " + modN + "\n")
} }
wg.Wait()
} }