// nolint: govet package main import ( "fmt" "github.com/alecthomas/kong" ) // Ensure the grammar compiles. var _ = kong.Must(&grammar{}) // Server interface. type grammar struct { Help helpCmd `cmd help:"Show help."` Question helpCmd `cmd hidden name:"?" help:"Show help."` Status statusCmd `cmd help:"Show server status."` } type statusCmd struct { Verbose bool `short:"v" help:"Show verbose status information."` } func (s *statusCmd) Run(ctx *kong.Context) error { ctx.Printf("OK") return nil } type helpCmd struct { Command []string `arg optional help:"Show help on command."` } // Run shows help. func (h *helpCmd) Run(realCtx *kong.Context) error { ctx, err := kong.Trace(realCtx.Kong, h.Command) if err != nil { return err } if ctx.Error != nil { return ctx.Error } err = ctx.PrintUsage(false) if err != nil { return err } fmt.Fprintln(realCtx.Stdout) return nil }