diff options
Diffstat (limited to 'vendor/github.com/99designs/gqlgen/cmd')
-rw-r--r-- | vendor/github.com/99designs/gqlgen/cmd/gen.go | 60 | ||||
-rw-r--r-- | vendor/github.com/99designs/gqlgen/cmd/init.go | 162 | ||||
-rw-r--r-- | vendor/github.com/99designs/gqlgen/cmd/root.go | 53 | ||||
-rw-r--r-- | vendor/github.com/99designs/gqlgen/cmd/version.go | 16 |
4 files changed, 291 insertions, 0 deletions
diff --git a/vendor/github.com/99designs/gqlgen/cmd/gen.go b/vendor/github.com/99designs/gqlgen/cmd/gen.go new file mode 100644 index 00000000..3842f02b --- /dev/null +++ b/vendor/github.com/99designs/gqlgen/cmd/gen.go @@ -0,0 +1,60 @@ +package cmd + +import ( + "fmt" + "io/ioutil" + "os" + + "github.com/99designs/gqlgen/codegen" + "github.com/pkg/errors" + "github.com/urfave/cli" +) + +var genCmd = cli.Command{ + Name: "generate", + Usage: "generate a graphql server based on schema", + Flags: []cli.Flag{ + cli.BoolFlag{Name: "verbose, v", Usage: "show logs"}, + cli.StringFlag{Name: "config, c", Usage: "the config filename"}, + }, + Action: func(ctx *cli.Context) { + var config *codegen.Config + var err error + if configFilename := ctx.String("config"); configFilename != "" { + config, err = codegen.LoadConfig(configFilename) + if err != nil { + fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(1) + } + } else { + config, err = codegen.LoadConfigFromDefaultLocations() + if os.IsNotExist(errors.Cause(err)) { + config = codegen.DefaultConfig() + } else if err != nil { + fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(1) + } + } + + for _, filename := range config.SchemaFilename { + var schemaRaw []byte + schemaRaw, err = ioutil.ReadFile(filename) + if err != nil { + fmt.Fprintln(os.Stderr, "unable to open schema: "+err.Error()) + os.Exit(1) + } + config.SchemaStr[filename] = string(schemaRaw) + } + + if err = config.Check(); err != nil { + fmt.Fprintln(os.Stderr, "invalid config format: "+err.Error()) + os.Exit(1) + } + + err = codegen.Generate(*config) + if err != nil { + fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(2) + } + }, +} diff --git a/vendor/github.com/99designs/gqlgen/cmd/init.go b/vendor/github.com/99designs/gqlgen/cmd/init.go new file mode 100644 index 00000000..1e7c18b9 --- /dev/null +++ b/vendor/github.com/99designs/gqlgen/cmd/init.go @@ -0,0 +1,162 @@ +package cmd + +import ( + "bytes" + "fmt" + "io/ioutil" + "os" + "strings" + + "github.com/99designs/gqlgen/codegen" + "github.com/pkg/errors" + "github.com/urfave/cli" + "gopkg.in/yaml.v2" +) + +var configComment = ` +# .gqlgen.yml example +# +# Refer to https://gqlgen.com/config/ +# for detailed .gqlgen.yml documentation. +` + +var schemaDefault = ` +# GraphQL schema example +# +# https://gqlgen.com/getting-started/ + +type Todo { + id: ID! + text: String! + done: Boolean! + user: User! +} + +type User { + id: ID! + name: String! +} + +type Query { + todos: [Todo!]! +} + +input NewTodo { + text: String! + userId: String! +} + +type Mutation { + createTodo(input: NewTodo!): Todo! +} +` + +var initCmd = cli.Command{ + Name: "init", + Usage: "create a new gqlgen project", + Flags: []cli.Flag{ + cli.BoolFlag{Name: "verbose, v", Usage: "show logs"}, + cli.StringFlag{Name: "config, c", Usage: "the config filename"}, + cli.StringFlag{Name: "server", Usage: "where to write the server stub to", Value: "server/server.go"}, + cli.StringFlag{Name: "schema", Usage: "where to write the schema stub to", Value: "schema.graphql"}, + }, + Action: func(ctx *cli.Context) { + initSchema(ctx.String("schema")) + config := initConfig(ctx) + + GenerateGraphServer(config, ctx.String("server")) + }, +} + +func GenerateGraphServer(config *codegen.Config, serverFilename string) { + for _, filename := range config.SchemaFilename { + schemaRaw, err := ioutil.ReadFile(filename) + if err != nil { + fmt.Fprintln(os.Stderr, "unable to open schema: "+err.Error()) + os.Exit(1) + } + config.SchemaStr[filename] = string(schemaRaw) + } + + if err := config.Check(); err != nil { + fmt.Fprintln(os.Stderr, "invalid config format: "+err.Error()) + os.Exit(1) + } + + if err := codegen.Generate(*config); err != nil { + fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(1) + } + + if err := codegen.GenerateServer(*config, serverFilename); err != nil { + fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(1) + } + + fmt.Fprintf(os.Stdout, "Exec \"go run ./%s\" to start GraphQL server\n", serverFilename) +} + +func initConfig(ctx *cli.Context) *codegen.Config { + var config *codegen.Config + var err error + configFilename := ctx.String("config") + if configFilename != "" { + config, err = codegen.LoadConfig(configFilename) + } else { + config, err = codegen.LoadConfigFromDefaultLocations() + } + + if config != nil { + fmt.Fprintf(os.Stderr, "init failed: a configuration file already exists at %s\n", config.FilePath) + os.Exit(1) + } + + if !os.IsNotExist(errors.Cause(err)) { + fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(1) + } + + if configFilename == "" { + configFilename = "gqlgen.yml" + } + config = codegen.DefaultConfig() + + config.Resolver = codegen.PackageConfig{ + Filename: "resolver.go", + Type: "Resolver", + } + + var buf bytes.Buffer + buf.WriteString(strings.TrimSpace(configComment)) + buf.WriteString("\n\n") + { + var b []byte + b, err = yaml.Marshal(config) + if err != nil { + fmt.Fprintln(os.Stderr, "unable to marshal yaml: "+err.Error()) + os.Exit(1) + } + buf.Write(b) + } + + err = ioutil.WriteFile(configFilename, buf.Bytes(), 0644) + if err != nil { + fmt.Fprintln(os.Stderr, "unable to write config file: "+err.Error()) + os.Exit(1) + } + + return config +} + +func initSchema(schemaFilename string) { + _, err := os.Stat(schemaFilename) + if !os.IsNotExist(err) { + return + } + + err = ioutil.WriteFile(schemaFilename, []byte(strings.TrimSpace(schemaDefault)), 0644) + if err != nil { + fmt.Fprintln(os.Stderr, "unable to write schema file: "+err.Error()) + os.Exit(1) + } +} diff --git a/vendor/github.com/99designs/gqlgen/cmd/root.go b/vendor/github.com/99designs/gqlgen/cmd/root.go new file mode 100644 index 00000000..519c2e1a --- /dev/null +++ b/vendor/github.com/99designs/gqlgen/cmd/root.go @@ -0,0 +1,53 @@ +package cmd + +import ( + "fmt" + "io/ioutil" + "log" + "os" + + "github.com/99designs/gqlgen/graphql" + "github.com/99designs/gqlgen/internal/gopath" + "github.com/urfave/cli" + + // Required since otherwise dep will prune away these unused packages before codegen has a chance to run + _ "github.com/99designs/gqlgen/handler" +) + +func Execute() { + app := cli.NewApp() + app.Name = "gqlgen" + app.Usage = genCmd.Usage + app.Description = "This is a library for quickly creating strictly typed graphql servers in golang. See https://gqlgen.com/ for a getting started guide." + app.HideVersion = true + app.Flags = genCmd.Flags + app.Version = graphql.Version + app.Before = func(context *cli.Context) error { + pwd, err := os.Getwd() + if err != nil { + return fmt.Errorf("unable to determine current workding dir: %s\n", err.Error()) + } + + if !gopath.Contains(pwd) { + return fmt.Errorf("gqlgen must be run from inside your $GOPATH\n") + } + if context.Bool("verbose") { + log.SetFlags(0) + } else { + log.SetOutput(ioutil.Discard) + } + return nil + } + + app.Action = genCmd.Action + app.Commands = []cli.Command{ + genCmd, + initCmd, + versionCmd, + } + + if err := app.Run(os.Args); err != nil { + fmt.Fprintf(os.Stderr, err.Error()) + os.Exit(1) + } +} diff --git a/vendor/github.com/99designs/gqlgen/cmd/version.go b/vendor/github.com/99designs/gqlgen/cmd/version.go new file mode 100644 index 00000000..8b7442d4 --- /dev/null +++ b/vendor/github.com/99designs/gqlgen/cmd/version.go @@ -0,0 +1,16 @@ +package cmd + +import ( + "fmt" + + "github.com/99designs/gqlgen/graphql" + "github.com/urfave/cli" +) + +var versionCmd = cli.Command{ + Name: "version", + Usage: "print the version string", + Action: func(ctx *cli.Context) { + fmt.Println(graphql.Version) + }, +} |