34 lines
985 B
Go
34 lines
985 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"io/ioutil"
|
|
"path/filepath"
|
|
|
|
"oss.terrastruct.com/d2/d2graph"
|
|
"oss.terrastruct.com/d2/d2layouts/d2dagrelayout"
|
|
"oss.terrastruct.com/d2/d2lib"
|
|
"oss.terrastruct.com/d2/d2renderers/d2svg"
|
|
"oss.terrastruct.com/d2/d2themes/d2themescatalog"
|
|
"oss.terrastruct.com/d2/lib/textmeasure"
|
|
"oss.terrastruct.com/util-go/go2"
|
|
)
|
|
|
|
// Remember to add if err != nil checks in production.
|
|
func main() {
|
|
ruler, _ := textmeasure.NewRuler()
|
|
layoutResolver := func(engine string) (d2graph.LayoutGraph, error) {
|
|
return d2dagrelayout.DefaultLayout, nil
|
|
}
|
|
renderOpts := &d2svg.RenderOpts{
|
|
Pad: go2.Pointer(int64(5)),
|
|
ThemeID: &d2themescatalog.GrapeSoda.ID,
|
|
}
|
|
compileOpts := &d2lib.CompileOptions{
|
|
LayoutResolver: layoutResolver,
|
|
Ruler: ruler,
|
|
}
|
|
diagram, _, _ := d2lib.Compile(context.Background(), "x -> y", compileOpts, renderOpts)
|
|
out, _ := d2svg.Render(diagram, renderOpts)
|
|
_ = ioutil.WriteFile(filepath.Join("out.svg"), out, 0600)
|
|
}
|