2022-11-16 04:48:19PM

This commit is contained in:
Alexander Wang 2022-11-16 16:48:19 -08:00
parent 06fa709461
commit e1846b0e4a
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
3 changed files with 24 additions and 40 deletions

View file

@ -32,9 +32,9 @@ See more docs and the source code at https://oss.terrastruct.com/d2
}
func layoutHelp(ctx context.Context, ms *xmain.State) error {
if len(ms.Opts.Args()) == 1 {
if len(ms.Opts.Flags.Args()) == 1 {
return shortLayoutHelp(ctx, ms)
} else if len(ms.Opts.Args()) == 2 {
} else if len(ms.Opts.Flags.Args()) == 2 {
return longLayoutHelp(ctx, ms)
} else {
return pluginSubcommand(ctx, ms)
@ -75,7 +75,7 @@ See more docs at https://oss.terrastruct.com/d2
}
func longLayoutHelp(ctx context.Context, ms *xmain.State) error {
layout := ms.Opts.Arg(1)
layout := ms.Opts.Flags.Arg(1)
plugin, path, err := d2plugin.FindPlugin(ctx, layout)
if errors.Is(err, exec.ErrNotFound) {
return layoutNotFound(ctx, layout)
@ -119,13 +119,13 @@ For more information on setup, please visit https://github.com/terrastruct/d2.`,
}
func pluginSubcommand(ctx context.Context, ms *xmain.State) error {
layout := ms.Opts.Arg(1)
layout := ms.Opts.Flags.Arg(1)
plugin, _, err := d2plugin.FindPlugin(ctx, layout)
if errors.Is(err, exec.ErrNotFound) {
return layoutNotFound(ctx, layout)
}
ms.Opts.SetArgs(ms.Opts.Args()[2:])
ms.Opts.Args = ms.Opts.Flags.Args()[2:]
return d2plugin.Serve(plugin)(ctx, ms)
}

View file

@ -53,13 +53,13 @@ func run(ctx context.Context, ms *xmain.State) (err error) {
return xmain.UsageErrorf(err.Error())
}
err = ms.Opts.Parse()
err = ms.Opts.Flags.Parse(ms.Opts.Args)
if !errors.Is(err, pflag.ErrHelp) && err != nil {
return xmain.UsageErrorf("failed to parse flags: %v", err)
}
if len(ms.Opts.Args()) > 0 {
switch ms.Opts.Arg(0) {
if len(ms.Opts.Flags.Args()) > 0 {
switch ms.Opts.Flags.Arg(0) {
case "layout":
return layoutHelp(ctx, ms)
}
@ -77,26 +77,26 @@ func run(ctx context.Context, ms *xmain.State) (err error) {
var inputPath string
var outputPath string
if len(ms.Opts.Args()) == 0 {
if len(ms.Opts.Flags.Args()) == 0 {
if versionFlag != nil && *versionFlag {
fmt.Println(version.Version)
return nil
}
help(ms)
return nil
} else if len(ms.Opts.Args()) >= 3 {
} else if len(ms.Opts.Flags.Args()) >= 3 {
return xmain.UsageErrorf("too many arguments passed")
}
if len(ms.Opts.Args()) >= 1 {
if ms.Opts.Arg(0) == "version" {
if len(ms.Opts.Flags.Args()) >= 1 {
if ms.Opts.Flags.Arg(0) == "version" {
fmt.Println(version.Version)
return nil
}
inputPath = ms.Opts.Arg(0)
inputPath = ms.Opts.Flags.Arg(0)
}
if len(ms.Opts.Args()) >= 2 {
outputPath = ms.Opts.Arg(1)
if len(ms.Opts.Flags.Args()) >= 2 {
outputPath = ms.Opts.Flags.Arg(1)
} else {
if inputPath == "-" {
outputPath = "-"

View file

@ -12,8 +12,8 @@ import (
)
type Opts struct {
args []string
flags *pflag.FlagSet
Args []string
Flags *pflag.FlagSet
env *xos.Env
log *cmdlog.Logger
@ -26,8 +26,8 @@ func NewOpts(env *xos.Env, log *cmdlog.Logger, args []string) *Opts {
flags.Usage = func() {}
flags.SetOutput(io.Discard)
return &Opts{
args: args,
flags: flags,
Args: args,
Flags: flags,
env: env,
log: log,
}
@ -35,8 +35,8 @@ func NewOpts(env *xos.Env, log *cmdlog.Logger, args []string) *Opts {
func (o *Opts) Help() string {
b := &strings.Builder{}
o.flags.SetOutput(b)
o.flags.PrintDefaults()
o.Flags.SetOutput(b)
o.Flags.PrintDefaults()
if len(o.registeredEnvs) > 0 {
b.WriteString("\nYou may persistently set the following as environment variables (flags take precedent):\n")
@ -64,7 +64,7 @@ func (o *Opts) Int64(envKey, flag, shortFlag string, defaultVal int64, usage str
o.registeredEnvs = append(o.registeredEnvs, envKey)
}
return o.flags.Int64P(flag, shortFlag, defaultVal, usage), nil
return o.Flags.Int64P(flag, shortFlag, defaultVal, usage), nil
}
func (o *Opts) String(envKey, flag, shortFlag string, defaultVal, usage string) *string {
@ -76,7 +76,7 @@ func (o *Opts) String(envKey, flag, shortFlag string, defaultVal, usage string)
o.registeredEnvs = append(o.registeredEnvs, envKey)
}
return o.flags.StringP(flag, shortFlag, defaultVal, usage)
return o.Flags.StringP(flag, shortFlag, defaultVal, usage)
}
func (o *Opts) Bool(envKey, flag, shortFlag string, defaultVal bool, usage string) (*bool, error) {
@ -95,7 +95,7 @@ func (o *Opts) Bool(envKey, flag, shortFlag string, defaultVal bool, usage strin
o.registeredEnvs = append(o.registeredEnvs, envKey)
}
return o.flags.BoolP(flag, shortFlag, defaultVal, usage), nil
return o.Flags.BoolP(flag, shortFlag, defaultVal, usage), nil
}
func boolyEnv(s string) bool {
@ -109,19 +109,3 @@ func falseyEnv(s string) bool {
func truthyEnv(s string) bool {
return s == "1" || s == "true"
}
func (o *Opts) Parse() error {
return o.flags.Parse(o.args)
}
func (o *Opts) SetArgs(args []string) {
o.args = args
}
func (o *Opts) Args() []string {
return o.flags.Args()
}
func (o *Opts) Arg(i int) string {
return o.flags.Arg(i)
}