feat: ignore

Implements ignoring certain keys right in Jsonnet, by adding:

  {
    '#foo': "ignore",
    foo: {}
  }

This is especially useful for objects that include `self` references,
which might otherwise recurse infinitely
This commit is contained in:
sh0rez 2020-05-12 22:48:02 +02:00
parent 14e9fc8f3f
commit 66a158a8f2
No known key found for this signature in database
GPG key ID: 87C71DF9F8181FF1
7 changed files with 85 additions and 46 deletions

View file

@ -2,31 +2,26 @@ 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
func To(pkg docsonnet.Package, dir string, opts Opts) (int, error) {
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
return 0, err
}
if err := os.MkdirAll(out, os.ModePerm); err != nil {
return err
}
data := Render(pkg, opts)
log.Println("Rendering .md files")
data := Render(*pkg)
n := 0
for k, v := range data {
if err := ioutil.WriteFile(filepath.Join(out, k), []byte(v), 0644); err != nil {
return err
if err := ioutil.WriteFile(filepath.Join(dir, k), []byte(v), 0644); err != nil {
return n, err
}
n++
}
log.Printf("Success! Rendered %v packages from '%s' to '%s'", len(data), api, out)
return nil
return n, nil
}