github.com/humans-group/gqlgen@v0.7.2/cmd/root.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  	"log"
     7  	"os"
     8  
     9  	"github.com/99designs/gqlgen/graphql"
    10  	"github.com/99designs/gqlgen/internal/gopath"
    11  	"github.com/urfave/cli"
    12  
    13  	// Required since otherwise dep will prune away these unused packages before codegen has a chance to run
    14  	_ "github.com/99designs/gqlgen/handler"
    15  )
    16  
    17  func Execute() {
    18  	app := cli.NewApp()
    19  	app.Name = "gqlgen"
    20  	app.Usage = genCmd.Usage
    21  	app.Description = "This is a library for quickly creating strictly typed graphql servers in golang. See https://gqlgen.com/ for a getting started guide."
    22  	app.HideVersion = true
    23  	app.Flags = genCmd.Flags
    24  	app.Version = graphql.Version
    25  	app.Before = func(context *cli.Context) error {
    26  		pwd, err := os.Getwd()
    27  		if err != nil {
    28  			return fmt.Errorf("unable to determine current workding dir: %s\n", err.Error())
    29  		}
    30  
    31  		if !gopath.Contains(pwd) {
    32  			return fmt.Errorf("gqlgen must be run from inside your $GOPATH\n")
    33  		}
    34  		if context.Bool("verbose") {
    35  			log.SetFlags(0)
    36  		} else {
    37  			log.SetOutput(ioutil.Discard)
    38  		}
    39  		return nil
    40  	}
    41  
    42  	app.Action = genCmd.Action
    43  	app.Commands = []cli.Command{
    44  		genCmd,
    45  		initCmd,
    46  		versionCmd,
    47  	}
    48  
    49  	if err := app.Run(os.Args); err != nil {
    50  		fmt.Fprintf(os.Stderr, err.Error())
    51  		os.Exit(1)
    52  	}
    53  }