Walk parent directories to find config file (#141)
Code is mostly borrowed from [gqlgen](https://github.com/99designs/gqlgen). The idea here is that I want to be able to store `genqlient.yaml` at the top-level, but my client code lives down in `graph/client/`. I put the `//go:generate` line in `graph/client/client.go`.
This commit is contained in:
+19
-5
@@ -14,9 +14,18 @@ import (
|
||||
)
|
||||
|
||||
func readConfigGenerateAndWrite(configFilename string) error {
|
||||
config, err := ReadAndValidateConfig(configFilename)
|
||||
if err != nil {
|
||||
return err
|
||||
var config *Config
|
||||
var err error
|
||||
if configFilename != "" {
|
||||
config, err = ReadAndValidateConfig(configFilename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
config, err = ReadAndValidateConfigFromDefaultLocations()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
generated, err := Generate(config)
|
||||
@@ -42,7 +51,7 @@ func readConfigGenerateAndWrite(configFilename string) error {
|
||||
}
|
||||
|
||||
type cliArgs struct {
|
||||
ConfigFilename string `arg:"positional" placeholder:"CONFIG" default:"genqlient.yaml" help:"path to genqlient configuration (default genqlient.yaml)"`
|
||||
ConfigFilename string `arg:"positional" placeholder:"CONFIG" default:"" help:"path to genqlient configuration (default: genqlient.yaml in current or any parent directory)"`
|
||||
Init bool `arg:"--init" help:"write out and use a default config file"`
|
||||
}
|
||||
|
||||
@@ -67,7 +76,12 @@ func Main() {
|
||||
var args cliArgs
|
||||
arg.MustParse(&args)
|
||||
if args.Init {
|
||||
err := initConfig(args.ConfigFilename)
|
||||
filename := args.ConfigFilename
|
||||
if filename == "" {
|
||||
filename = "genqlient.yaml"
|
||||
}
|
||||
|
||||
err := initConfig(filename)
|
||||
exitIfError(err)
|
||||
}
|
||||
err := readConfigGenerateAndWrite(args.ConfigFilename)
|
||||
|
||||
Reference in New Issue
Block a user