Files
genqlient/generate/main.go
T

61 lines
1.1 KiB
Go

package generate
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
)
func readConfigGenerateAndWrite(configFilename string) error {
config, err := ReadAndValidateConfig(configFilename)
if err != nil {
return err
}
generated, err := Generate(config)
if err != nil {
return err
}
for filename, content := range generated {
err = os.MkdirAll(filepath.Dir(filename), 0o755)
if err != nil {
return errorf(nil,
"could not create parent directory for generated file %v: %v",
filename, err)
}
err = ioutil.WriteFile(filename, content, 0o644)
if err != nil {
return errorf(nil, "could not write generated file %v: %v",
filename, err)
}
}
return nil
}
func Main() {
var err error
defer func() {
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}()
switch len(os.Args) {
case 2:
err = readConfigGenerateAndWrite(os.Args[1])
case 1:
err = readConfigGenerateAndWrite("")
default:
argv0 := os.Args[0]
if strings.Contains(argv0, string(filepath.Separator)+"go-build") {
argv0 = "go run github.com/Khan/genqlient"
}
err = errorf(nil, "usage: %s [config]", argv0)
}
}