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

View file

@ -7,6 +7,7 @@ package d2plugin
import (
"context"
"encoding/json"
"os/exec"
"oss.terrastruct.com/util-go/xexec"
@ -166,3 +167,28 @@ func ListPluginFlags(ctx context.Context) ([]PluginSpecificFlag, error) {
return out, nil
}
func HydratePluginOpts(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
}
return plugin.HydrateOpts(b)
}

View file

@ -41,7 +41,7 @@ func Serve(p Plugin) xmain.RunFunc {
return xmain.UsageErrorf("expected first argument to be subcmd name")
}
err = ParsePluginOpts(ctx, ms, p)
err = HydratePluginOpts(ctx, ms, p)
if err != nil {
return err
}
@ -135,29 +135,3 @@ 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
}

View file

@ -149,7 +149,7 @@ func run(ctx context.Context, ms *xmain.State) (err error) {
return err
}
err = d2plugin.ParsePluginOpts(ctx, ms, plugin)
err = d2plugin.HydratePluginOpts(ctx, ms, plugin)
if err != nil {
return err
}