diff --git a/cmd/d2/help.go b/cmd/d2/help.go index 3e18a56cf..9b304ee34 100644 --- a/cmd/d2/help.go +++ b/cmd/d2/help.go @@ -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) } diff --git a/cmd/d2/main.go b/cmd/d2/main.go index e111d72f0..914ca295e 100644 --- a/cmd/d2/main.go +++ b/cmd/d2/main.go @@ -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 = "-" diff --git a/lib/xmain/opts.go b/lib/xmain/opts.go index 15a0c71a1..498f0db7e 100644 --- a/lib/xmain/opts.go +++ b/lib/xmain/opts.go @@ -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) -}