This commit is contained in:
Alexander Wang 2022-12-30 17:28:21 -08:00
parent 5a88f9d331
commit c0eefc9447
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
2 changed files with 32 additions and 28 deletions

View file

@ -41,6 +41,11 @@ func Serve(p Plugin) xmain.RunFunc {
return xmain.UsageErrorf("expected first argument to be subcmd name") 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) subcmd := ms.Opts.Flags.Arg(0)
switch subcmd { switch subcmd {
case "info": case "info":
@ -130,3 +135,29 @@ func postProcess(ctx context.Context, p Plugin, ms *xmain.State) error {
} }
return nil 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
}

29
main.go
View file

@ -2,7 +2,6 @@ package main
import ( import (
"context" "context"
"encoding/json"
"errors" "errors"
"fmt" "fmt"
"io" "io"
@ -150,7 +149,7 @@ func run(ctx context.Context, ms *xmain.State) (err error) {
return err return err
} }
err = parseLayoutOpts(ctx, ms, plugin) err = d2plugin.ParsePluginOpts(ctx, ms, plugin)
if err != nil { if err != nil {
return err return err
} }
@ -314,29 +313,3 @@ func populateLayoutOpts(ctx context.Context, ms *xmain.State) error {
return nil 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
}