diff --git a/d2plugin/serve.go b/d2plugin/serve.go index 2e8da78f0..888a6abfe 100644 --- a/d2plugin/serve.go +++ b/d2plugin/serve.go @@ -41,6 +41,11 @@ func Serve(p Plugin) xmain.RunFunc { return xmain.UsageErrorf("expected first argument to be subcmd name") } + err = ParsePluginOpts(ctx, ms, p) + if err != nil { + return err + } + subcmd := ms.Opts.Flags.Arg(0) switch subcmd { case "info": @@ -130,3 +135,29 @@ func postProcess(ctx context.Context, p Plugin, ms *xmain.State) error { } return nil } + +func ParsePluginOpts(ctx context.Context, ms *xmain.State, plugin Plugin) error { + opts := make(map[string]interface{}) + flags, err := plugin.Flags(ctx) + if err != nil { + return err + } + for _, f := range flags { + switch f.Type { + case "string": + val, _ := ms.Opts.Flags.GetString(f.Name) + opts[f.Tag] = val + case "int64": + val, _ := ms.Opts.Flags.GetInt64(f.Name) + opts[f.Tag] = val + } + } + + b, err := json.Marshal(opts) + if err != nil { + return err + } + + err = plugin.HydrateOpts(b) + return err +} diff --git a/main.go b/main.go index d9c5655b4..1ef9d1478 100644 --- a/main.go +++ b/main.go @@ -2,7 +2,6 @@ package main import ( "context" - "encoding/json" "errors" "fmt" "io" @@ -150,7 +149,7 @@ func run(ctx context.Context, ms *xmain.State) (err error) { return err } - err = parseLayoutOpts(ctx, ms, plugin) + err = d2plugin.ParsePluginOpts(ctx, ms, plugin) if err != nil { return err } @@ -314,29 +313,3 @@ func populateLayoutOpts(ctx context.Context, ms *xmain.State) error { return nil } - -func parseLayoutOpts(ctx context.Context, ms *xmain.State, plugin d2plugin.Plugin) error { - opts := make(map[string]interface{}) - flags, err := plugin.Flags(ctx) - if err != nil { - return err - } - for _, f := range flags { - switch f.Type { - case "string": - val, _ := ms.Opts.Flags.GetString(f.Name) - opts[f.Tag] = val - case "int64": - val, _ := ms.Opts.Flags.GetInt64(f.Name) - opts[f.Tag] = val - } - } - - b, err := json.Marshal(opts) - if err != nil { - return err - } - - err = plugin.HydrateOpts(b) - return err -}