Small cleanup to cli formatting
This commit is contained in:
parent
10758f11a2
commit
1c1b05db06
@ -36,6 +36,14 @@ type subCmd struct {
|
|||||||
passthroughArgs bool
|
passthroughArgs bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c subCmd) fullName() string {
|
||||||
|
name := c.name
|
||||||
|
if c.plural != "" {
|
||||||
|
name += "(" + c.plural + ")"
|
||||||
|
}
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
|
||||||
type subCmdCtxOpts struct {
|
type subCmdCtxOpts struct {
|
||||||
args []string // command-line arguments, excluding the subCmd itself.
|
args []string // command-line arguments, excluding the subCmd itself.
|
||||||
subCmdNames []string // names of subCmds so far, including this one
|
subCmdNames []string // names of subCmds so far, including this one
|
||||||
@ -97,7 +105,7 @@ func usagePrefix(subCmdNames []string) string {
|
|||||||
subCmdNamesStr += " "
|
subCmdNamesStr += " "
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("\nUSAGE: %s %s", os.Args[0], subCmdNamesStr)
|
return fmt.Sprintf("USAGE:\n %s %s", os.Args[0], subCmdNamesStr)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctx subCmdCtx) getDaemonRPC() daemon.RPC {
|
func (ctx subCmdCtx) getDaemonRPC() daemon.RPC {
|
||||||
@ -144,6 +152,12 @@ func (ctx subCmdCtx) withParsedFlags() (subCmdCtx, error) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
ctx.flags.Usage = func() {
|
ctx.flags.Usage = func() {
|
||||||
|
if ctx.subCmd.descr != "" {
|
||||||
|
fmt.Fprintf(
|
||||||
|
os.Stderr, "\nDESCRIPTION:\n %s\n\n", ctx.subCmd.descr,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
var passthroughStr string
|
var passthroughStr string
|
||||||
if ctx.subCmd.passthroughArgs {
|
if ctx.subCmd.passthroughArgs {
|
||||||
passthroughStr = " [--] [args...]"
|
passthroughStr = " [--] [args...]"
|
||||||
@ -153,8 +167,9 @@ func (ctx subCmdCtx) withParsedFlags() (subCmdCtx, error) {
|
|||||||
os.Stderr, "%s[-h|--help] [%s flags...]%s\n\n",
|
os.Stderr, "%s[-h|--help] [%s flags...]%s\n\n",
|
||||||
usagePrefix(ctx.opts.subCmdNames), ctx.subCmd.name, passthroughStr,
|
usagePrefix(ctx.opts.subCmdNames), ctx.subCmd.name, passthroughStr,
|
||||||
)
|
)
|
||||||
|
|
||||||
fmt.Fprintf(
|
fmt.Fprintf(
|
||||||
os.Stderr, "%s FLAGS:\n\n", strings.ToUpper(ctx.subCmd.name),
|
os.Stderr, "%s FLAGS:\n", strings.ToUpper(ctx.subCmd.name),
|
||||||
)
|
)
|
||||||
fmt.Fprintln(os.Stderr, ctx.flags.FlagUsages())
|
fmt.Fprintln(os.Stderr, ctx.flags.FlagUsages())
|
||||||
|
|
||||||
@ -176,22 +191,39 @@ func (ctx subCmdCtx) doSubCmd(subCmds ...subCmd) error {
|
|||||||
|
|
||||||
printUsageExit := func(subCmdName string) {
|
printUsageExit := func(subCmdName string) {
|
||||||
|
|
||||||
fmt.Fprintf(os.Stderr, "unknown sub-command %q\n", subCmdName)
|
fmt.Fprintf(os.Stderr, "unknown sub-command %q\n\n", subCmdName)
|
||||||
|
|
||||||
|
if ctx.subCmd.descr != "" {
|
||||||
|
fmt.Fprintf(
|
||||||
|
os.Stderr, "DESCRIPTION:\n %s\n\n", ctx.subCmd.descr,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fmt.Fprintf(
|
fmt.Fprintf(
|
||||||
os.Stderr,
|
os.Stderr,
|
||||||
"%s<subCmd> [-h|--help] [sub-command flags...]\n",
|
"%s<subCmd> [-h|--help] [sub-command flags...]\n\n",
|
||||||
usagePrefix(ctx.opts.subCmdNames),
|
usagePrefix(ctx.opts.subCmdNames),
|
||||||
)
|
)
|
||||||
|
|
||||||
fmt.Fprintf(os.Stderr, "\nSUB-COMMANDS:\n\n")
|
fmt.Fprintf(os.Stderr, "SUB-COMMANDS:\n")
|
||||||
|
|
||||||
|
var maxNameLen int
|
||||||
|
for _, subCmd := range subCmds {
|
||||||
|
l := len(subCmd.fullName())
|
||||||
|
if l > maxNameLen {
|
||||||
|
maxNameLen = l
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, subCmd := range subCmds {
|
for _, subCmd := range subCmds {
|
||||||
name := subCmd.name
|
var (
|
||||||
if subCmd.plural != "" {
|
name = subCmd.fullName()
|
||||||
name += "(" + subCmd.plural + ")"
|
padding = strings.Repeat(" ", maxNameLen-len(name)+3)
|
||||||
}
|
)
|
||||||
fmt.Fprintf(os.Stderr, " %s\t%s\n", name, subCmd.descr)
|
|
||||||
|
fmt.Fprintf(
|
||||||
|
os.Stderr, " %s%s%s\n", name, padding, subCmd.descr,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Fprintf(os.Stderr, "\n")
|
fmt.Fprintf(os.Stderr, "\n")
|
||||||
|
Loading…
Reference in New Issue
Block a user