Documentation
¶
Overview ¶
Package d2plugin enables the d2 CLI to run functions bundled with the d2 binary or via external plugin binaries.
Binary plugins are stored in $PATH with the prefix d2plugin-*. i.e the binary for dagre might be d2plugin-dagre. See ListPlugins() below.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var DagrePlugin = dagrePlugin{}
View Source
var ELKPlugin = elkPlugin{}
Functions ¶
func HydratePluginOpts ¶ added in v0.1.4
Types ¶
type Plugin ¶
type Plugin interface {
// Info returns the current info information of the plugin.
Info(context.Context) (*PluginInfo, error)
Flags(context.Context) ([]PluginSpecificFlag, error)
HydrateOpts([]byte) error
// Layout runs the plugin's autolayout algorithm on the input graph
// and returns a new graph with the computed placements.
Layout(context.Context, *d2graph.Graph) error
// PostProcess makes changes to the default render
PostProcess(context.Context, []byte) ([]byte, error)
}
func FindPlugin ¶
FindPlugin finds the plugin with the given name.
- It first searches the bundled plugins in the global plugins slice.
- If not found, it then searches each directory in $PATH for a binary with the name d2plugin-<name>. **NOTE** When D2 upgrades to go 1.19, remember to ignore exec.ErrDot
- If such a binary is found, it builds an execPlugin in exec.go to get a plugin implementation around the binary and returns it.
type PluginInfo ¶
type PluginInfo struct {
Name string `json:"name"`
ShortHelp string `json:"shortHelp"`
LongHelp string `json:"longHelp"`
// These two are set by ListPlugins and not the plugin itself.
// bundled | binary
Type string `json:"type"`
// If Type == binary then this contains the absolute path to the binary.
Path string `json:"path"`
}
PluginInfo is the current info information of a plugin. note: The two fields Type and Path are not set by the plugin itself but only in ListPlugins.
func ListPluginInfos ¶ added in v0.1.5
func ListPluginInfos(ctx context.Context, ps []Plugin) ([]*PluginInfo, error)
type PluginSpecificFlag ¶ added in v0.1.4
type PluginSpecificFlag struct {
Name string
Type string
Default interface{}
Usage string
// Must match the tag in the opt
Tag string
}
func ListPluginFlags ¶ added in v0.1.4
func ListPluginFlags(ctx context.Context, ps []Plugin) ([]PluginSpecificFlag, error)
func (*PluginSpecificFlag) AddToOpts ¶ added in v0.1.4
func (f *PluginSpecificFlag) AddToOpts(opts *xmain.Opts)
Click to show internal directories.
Click to hide internal directories.