mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-17 04:24:35 +03:00
94a3be3e6e
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/1749 Co-authored-by: Aravind K P <8335904+scriptonist@users.noreply.github.com> GitOrigin-RevId: 4515f7f2c58b7f28645b2c5a5d9842aa7a844eae
99 lines
2.1 KiB
Go
99 lines
2.1 KiB
Go
package commands
|
|
|
|
import (
|
|
"fmt"
|
|
"text/tabwriter"
|
|
|
|
"github.com/hasura/graphql-engine/cli/v2"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
type commandGroup struct {
|
|
Title string
|
|
Commands []*cobra.Command
|
|
}
|
|
|
|
// NewHelpCmd returns the help command
|
|
func NewHelpCmd(ec *cli.ExecutionContext) *cobra.Command {
|
|
opts := &helpOptions{
|
|
EC: ec,
|
|
}
|
|
var helpCmd = &cobra.Command{
|
|
Use: "help",
|
|
Short: "Help about any command",
|
|
Long: "Help provides help for any command in the CLI",
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
opts.Cmd = cmd
|
|
opts.Args = args
|
|
opts.run()
|
|
},
|
|
}
|
|
return helpCmd
|
|
}
|
|
|
|
type helpOptions struct {
|
|
EC *cli.ExecutionContext
|
|
|
|
Cmd *cobra.Command
|
|
Args []string
|
|
}
|
|
|
|
func (o *helpOptions) run() {
|
|
topLevelCommands := []commandGroup{
|
|
{
|
|
Title: "GraphQL commands",
|
|
Commands: []*cobra.Command{
|
|
NewInitCmd(o.EC),
|
|
NewMigrateCmd(o.EC),
|
|
NewMetadataCmd(o.EC),
|
|
NewConsoleCmd(o.EC),
|
|
NewActionsCmd(o.EC),
|
|
NewSeedCmd(o.EC),
|
|
NewDeployCmd(o.EC),
|
|
},
|
|
},
|
|
{
|
|
Title: "Other commands",
|
|
Commands: []*cobra.Command{
|
|
NewCompletionCmd(o.EC),
|
|
NewVersionCmd(o.EC),
|
|
NewPluginsCmd(o.EC),
|
|
NewScriptsCmd(o.EC),
|
|
NewUpdateCLICmd(o.EC),
|
|
},
|
|
},
|
|
}
|
|
c := o.Cmd
|
|
args := o.Args
|
|
cmd, _, e := c.Root().Find(args)
|
|
if cmd == nil || e != nil {
|
|
c.Printf("Unknown help topic %#q\n", args)
|
|
err := c.Root().Usage()
|
|
if err != nil {
|
|
ec.Logger.WithError(err).Errorf("error while using a dependency library")
|
|
}
|
|
} else {
|
|
if cmd.Name() == "hasura" {
|
|
// root command
|
|
fmt.Println(cmd.Long)
|
|
w := tabwriter.NewWriter(o.EC.Stdout, 0, 0, 3, ' ', 0)
|
|
for _, g := range topLevelCommands {
|
|
fmt.Println(g.Title + ":")
|
|
for _, gc := range g.Commands {
|
|
fmt.Fprintf(w, " %s\t%s\n", gc.Name(), gc.Short)
|
|
}
|
|
w.Flush()
|
|
fmt.Println("")
|
|
}
|
|
fmt.Println(`Use "hasura [command] --help" for more information about a command.`)
|
|
} else {
|
|
cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown
|
|
err := cmd.Help()
|
|
if err != nil {
|
|
ec.Logger.WithError(err).Errorf("error while using a dependency library")
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|