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 ¶
var DagrePlugin = dagrePlugin{}
var ELKPlugin = elkPlugin{}
Functions ¶
func FeatureSupportCheck ¶
func FeatureSupportCheck(info *PluginInfo, g *d2graph.Graph) error
func HydratePluginOpts ¶
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 PluginFeature ¶
type PluginFeature string
const CONTAINER_DIMENSIONS PluginFeature = "container_dimensions"
When this is true, containers can have dimensions set
const DESCENDANT_EDGES PluginFeature = "descendant_edges"
When this is true, containers can have connections to descendants
const NEAR_OBJECT PluginFeature = "near_object"
When this is true, objects can set their `near` key to another object When this is false, objects can only set `near` to constants
const TOP_LEFT PluginFeature = "top_left"
When this is true, objects can specify their `top` and `left` keywords
type PluginInfo ¶
type PluginInfo struct { Name string `json:"name"` ShortHelp string `json:"shortHelp"` LongHelp string `json:"longHelp"` // Set to bundled when returning from the plugin. // execPlugin will set to binary when used. // bundled | binary Type string `json:"type"` // If Type == binary then this contains the absolute path to the binary. Path string `json:"path"` Features []PluginFeature `json:"features"` }
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 ¶
func ListPluginInfos(ctx context.Context, ps []Plugin) ([]*PluginInfo, error)
type PluginSpecificFlag ¶
type PluginSpecificFlag struct { Name string Type string Default interface{} Usage string // Must match the tag in the opt Tag string }
func ListPluginFlags ¶
func ListPluginFlags(ctx context.Context, ps []Plugin) ([]PluginSpecificFlag, error)
func (*PluginSpecificFlag) AddToOpts ¶
func (f *PluginSpecificFlag) AddToOpts(opts *xmain.Opts)