refactor(render): filewriting in render pkg

This commit is contained in:
sh0rez 2020-05-12 15:23:24 +02:00
parent f284bff4e5
commit 14e9fc8f3f
No known key found for this signature in database
GPG key ID: 87C71DF9F8181FF1
7 changed files with 68 additions and 285 deletions

32
pkg/render/fs.go Normal file
View file

@ -0,0 +1,32 @@
package render
import (
"io/ioutil"
"log"
"os"
"path/filepath"
"github.com/sh0rez/docsonnet/pkg/docsonnet"
)
func To(api, out string) error {
pkg, err := docsonnet.Load(api)
if err != nil {
return err
}
if err := os.MkdirAll(out, os.ModePerm); err != nil {
return err
}
log.Println("Rendering .md files")
data := Render(*pkg)
for k, v := range data {
if err := ioutil.WriteFile(filepath.Join(out, k), []byte(v), 0644); err != nil {
return err
}
}
log.Printf("Success! Rendered %v packages from '%s' to '%s'", len(data), api, out)
return nil
}

View file

@ -1,28 +0,0 @@
package render
import (
"github.com/sh0rez/docsonnet/pkg/docsonnet"
)
func Paths(pkg docsonnet.Package) map[string]docsonnet.Package {
p := paths(pkg)
return p
}
func paths(pkg docsonnet.Package) map[string]docsonnet.Package {
pkgs := make(map[string]docsonnet.Package)
pkgs[pkg.Name+".md"] = pkg
if len(pkg.Sub) == 0 {
return pkgs
}
for _, sub := range pkg.Sub {
for k, v := range paths(sub) {
v.Name = pkg.Name + "/" + k
pkgs[pkg.Name+"-"+k] = v
}
}
return pkgs
}

View file

@ -15,7 +15,6 @@ func Render(pkg docsonnet.Package) map[string]string {
}
func render(pkg docsonnet.Package, parents []string, root bool) map[string]string {
fmt.Println("render", pkg.Name)
link := "/" + strings.Join(append(parents, pkg.Name), "/")
if root {
link = "/"
@ -27,20 +26,32 @@ func render(pkg docsonnet.Package, parents []string, root bool) map[string]strin
"permalink": link,
}),
md.Headline(1, "package "+pkg.Name),
md.CodeBlock("jsonnet", fmt.Sprintf(`local %s = import "%s"`, pkg.Name, pkg.Import)),
md.Text(pkg.Help),
}
if pkg.Import != "" {
elems = append(elems, md.CodeBlock("jsonnet", fmt.Sprintf(`local %s = import "%s"`, pkg.Name, pkg.Import)))
}
elems = append(elems, md.Text(pkg.Help))
if len(pkg.Sub) > 0 {
elems = append(elems, md.Headline(2, "Subpackages"))
var items []md.Elem
keys := make([]string, 0, len(pkg.Sub))
for _, s := range pkg.Sub {
keys = append(keys, s.Name)
}
sort.Strings(keys)
var items []md.Elem
for _, k := range keys {
s := pkg.Sub[k]
link := strings.Join(append(parents, pkg.Name, s.Name), "-")
if root {
link = strings.Join(append(parents, s.Name), "-")
}
items = append(items, md.Link(md.Text(s.Name), link+".md"))
}
elems = append(elems, md.List(items...))
}