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")
}
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
}

29
main.go
View file

@ -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
}