2022-11-16 04:48:19PM
This commit is contained in:
parent
06fa709461
commit
e1846b0e4a
3 changed files with 24 additions and 40 deletions
|
|
@ -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 {
|
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)
|
return shortLayoutHelp(ctx, ms)
|
||||||
} else if len(ms.Opts.Args()) == 2 {
|
} else if len(ms.Opts.Flags.Args()) == 2 {
|
||||||
return longLayoutHelp(ctx, ms)
|
return longLayoutHelp(ctx, ms)
|
||||||
} else {
|
} else {
|
||||||
return pluginSubcommand(ctx, ms)
|
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 {
|
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)
|
plugin, path, err := d2plugin.FindPlugin(ctx, layout)
|
||||||
if errors.Is(err, exec.ErrNotFound) {
|
if errors.Is(err, exec.ErrNotFound) {
|
||||||
return layoutNotFound(ctx, layout)
|
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 {
|
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)
|
plugin, _, err := d2plugin.FindPlugin(ctx, layout)
|
||||||
if errors.Is(err, exec.ErrNotFound) {
|
if errors.Is(err, exec.ErrNotFound) {
|
||||||
return layoutNotFound(ctx, layout)
|
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)
|
return d2plugin.Serve(plugin)(ctx, ms)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,13 +53,13 @@ func run(ctx context.Context, ms *xmain.State) (err error) {
|
||||||
return xmain.UsageErrorf(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 {
|
if !errors.Is(err, pflag.ErrHelp) && err != nil {
|
||||||
return xmain.UsageErrorf("failed to parse flags: %v", err)
|
return xmain.UsageErrorf("failed to parse flags: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(ms.Opts.Args()) > 0 {
|
if len(ms.Opts.Flags.Args()) > 0 {
|
||||||
switch ms.Opts.Arg(0) {
|
switch ms.Opts.Flags.Arg(0) {
|
||||||
case "layout":
|
case "layout":
|
||||||
return layoutHelp(ctx, ms)
|
return layoutHelp(ctx, ms)
|
||||||
}
|
}
|
||||||
|
|
@ -77,26 +77,26 @@ func run(ctx context.Context, ms *xmain.State) (err error) {
|
||||||
var inputPath string
|
var inputPath string
|
||||||
var outputPath string
|
var outputPath string
|
||||||
|
|
||||||
if len(ms.Opts.Args()) == 0 {
|
if len(ms.Opts.Flags.Args()) == 0 {
|
||||||
if versionFlag != nil && *versionFlag {
|
if versionFlag != nil && *versionFlag {
|
||||||
fmt.Println(version.Version)
|
fmt.Println(version.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
help(ms)
|
help(ms)
|
||||||
return nil
|
return nil
|
||||||
} else if len(ms.Opts.Args()) >= 3 {
|
} else if len(ms.Opts.Flags.Args()) >= 3 {
|
||||||
return xmain.UsageErrorf("too many arguments passed")
|
return xmain.UsageErrorf("too many arguments passed")
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(ms.Opts.Args()) >= 1 {
|
if len(ms.Opts.Flags.Args()) >= 1 {
|
||||||
if ms.Opts.Arg(0) == "version" {
|
if ms.Opts.Flags.Arg(0) == "version" {
|
||||||
fmt.Println(version.Version)
|
fmt.Println(version.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
inputPath = ms.Opts.Arg(0)
|
inputPath = ms.Opts.Flags.Arg(0)
|
||||||
}
|
}
|
||||||
if len(ms.Opts.Args()) >= 2 {
|
if len(ms.Opts.Flags.Args()) >= 2 {
|
||||||
outputPath = ms.Opts.Arg(1)
|
outputPath = ms.Opts.Flags.Arg(1)
|
||||||
} else {
|
} else {
|
||||||
if inputPath == "-" {
|
if inputPath == "-" {
|
||||||
outputPath = "-"
|
outputPath = "-"
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Opts struct {
|
type Opts struct {
|
||||||
args []string
|
Args []string
|
||||||
flags *pflag.FlagSet
|
Flags *pflag.FlagSet
|
||||||
env *xos.Env
|
env *xos.Env
|
||||||
log *cmdlog.Logger
|
log *cmdlog.Logger
|
||||||
|
|
||||||
|
|
@ -26,8 +26,8 @@ func NewOpts(env *xos.Env, log *cmdlog.Logger, args []string) *Opts {
|
||||||
flags.Usage = func() {}
|
flags.Usage = func() {}
|
||||||
flags.SetOutput(io.Discard)
|
flags.SetOutput(io.Discard)
|
||||||
return &Opts{
|
return &Opts{
|
||||||
args: args,
|
Args: args,
|
||||||
flags: flags,
|
Flags: flags,
|
||||||
env: env,
|
env: env,
|
||||||
log: log,
|
log: log,
|
||||||
}
|
}
|
||||||
|
|
@ -35,8 +35,8 @@ func NewOpts(env *xos.Env, log *cmdlog.Logger, args []string) *Opts {
|
||||||
|
|
||||||
func (o *Opts) Help() string {
|
func (o *Opts) Help() string {
|
||||||
b := &strings.Builder{}
|
b := &strings.Builder{}
|
||||||
o.flags.SetOutput(b)
|
o.Flags.SetOutput(b)
|
||||||
o.flags.PrintDefaults()
|
o.Flags.PrintDefaults()
|
||||||
|
|
||||||
if len(o.registeredEnvs) > 0 {
|
if len(o.registeredEnvs) > 0 {
|
||||||
b.WriteString("\nYou may persistently set the following as environment variables (flags take precedent):\n")
|
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)
|
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 {
|
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)
|
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) {
|
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)
|
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 {
|
func boolyEnv(s string) bool {
|
||||||
|
|
@ -109,19 +109,3 @@ func falseyEnv(s string) bool {
|
||||||
func truthyEnv(s string) bool {
|
func truthyEnv(s string) bool {
|
||||||
return s == "1" || s == "true"
|
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)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue