aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/99designs/gqlgen/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/99designs/gqlgen/cmd')
-rw-r--r--vendor/github.com/99designs/gqlgen/cmd/gen.go60
-rw-r--r--vendor/github.com/99designs/gqlgen/cmd/init.go162
-rw-r--r--vendor/github.com/99designs/gqlgen/cmd/root.go53
-rw-r--r--vendor/github.com/99designs/gqlgen/cmd/version.go16
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)
+ },
+}