Fix bug where help command doesn't show flags/subcommands

This commit is contained in:
Elara 2022-07-31 02:15:42 -07:00
parent 1f5a6365bc
commit 71e9caf0bc
2 changed files with 32 additions and 5 deletions

View File

@ -26,6 +26,7 @@ func main() {
app := cli.App{ app := cli.App{
Name: "itctl", Name: "itctl",
HideHelpCommand: true,
Flags: []cli.Flag{ Flags: []cli.Flag{
&cli.StringFlag{ &cli.StringFlag{
Name: "socket-path", Name: "socket-path",
@ -35,6 +36,12 @@ func main() {
}, },
}, },
Commands: []*cli.Command{ Commands: []*cli.Command{
{
Name: "help",
ArgsUsage: "<command>",
Usage: "Display help screen for a command",
Action: helpCmd,
},
{ {
Name: "filesystem", Name: "filesystem",
Aliases: []string{"fs"}, Aliases: []string{"fs"},
@ -229,11 +236,13 @@ func main() {
}, },
}, },
Before: func(c *cli.Context) error { Before: func(c *cli.Context) error {
newClient, err := api.New(c.String("socket-path")) if !isHelpCmd() {
if err != nil { newClient, err := api.New(c.String("socket-path"))
return err if err != nil {
return err
}
client = newClient
} }
client = newClient
return nil return nil
}, },
After: func(*cli.Context) error { After: func(*cli.Context) error {
@ -249,3 +258,21 @@ func main() {
log.Fatal().Err(err).Msg("Error while running app") log.Fatal().Err(err).Msg("Error while running app")
} }
} }
func helpCmd(c *cli.Context) error {
cmdArgs := append([]string{os.Args[0]}, c.Args().Slice()...)
cmdArgs = append(cmdArgs, "-h")
return c.App.RunContext(c.Context, cmdArgs)
}
func isHelpCmd() bool {
if len(os.Args) == 1 {
return true
}
for _, arg := range os.Args {
if arg == "-h" || arg == "help" {
return true
}
}
return false
}

View File

@ -29,7 +29,7 @@ func newProgress(w fyne.Window) progress {
// Create new rectangle to set the size of the popup // Create new rectangle to set the size of the popup
sizeRect := canvas.NewRectangle(color.Transparent) sizeRect := canvas.NewRectangle(color.Transparent)
sizeRect.SetMinSize(fyne.NewSize(300, 50)) sizeRect.SetMinSize(fyne.NewSize(300, 50))
// Create vbox for label and progress bar // Create vbox for label and progress bar
l := container.NewVBox(out.lbl, out.pb) l := container.NewVBox(out.lbl, out.pb)
// Create popup // Create popup