50 lines
929 B
Go
50 lines
929 B
Go
// nolint: govet
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.company.lan/gopkg/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
|
|
}
|