1package cmd
2
3import (
4 "fmt"
5 "os"
6
7 "github.com/99designs/gqlgen/api"
8 "github.com/99designs/gqlgen/codegen/config"
9 "github.com/pkg/errors"
10 "github.com/urfave/cli"
11)
12
13var genCmd = cli.Command{
14 Name: "generate",
15 Usage: "generate a graphql server based on schema",
16 Flags: []cli.Flag{
17 cli.BoolFlag{Name: "verbose, v", Usage: "show logs"},
18 cli.StringFlag{Name: "config, c", Usage: "the config filename"},
19 },
20 Action: func(ctx *cli.Context) {
21 var cfg *config.Config
22 var err error
23 if configFilename := ctx.String("config"); configFilename != "" {
24 cfg, err = config.LoadConfig(configFilename)
25 if err != nil {
26 fmt.Fprintln(os.Stderr, err.Error())
27 os.Exit(1)
28 }
29 } else {
30 cfg, err = config.LoadConfigFromDefaultLocations()
31 if os.IsNotExist(errors.Cause(err)) {
32 cfg = config.DefaultConfig()
33 } else if err != nil {
34 fmt.Fprintln(os.Stderr, err.Error())
35 os.Exit(2)
36 }
37 }
38
39 if err = api.Generate(cfg); err != nil {
40 fmt.Fprintln(os.Stderr, err.Error())
41 os.Exit(3)
42 }
43 },
44}