Files
genqlient/generate/main.go
T
2020-01-02 18:48:29 -08:00

64 lines
1.1 KiB
Go

package generate
import (
"fmt"
"io"
"os"
)
func outputWriter(filename string) (io.Writer, error) {
if filename == "-" {
return os.Stdout, nil
}
f, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
return nil, fmt.Errorf("could not open generated file %v: %v",
filename, err)
}
return f, nil
}
func ParseGenerateAndWrite(specFilename, schemaFilename string, out io.Writer) error {
schema, err := getSchema(schemaFilename)
if err != nil {
return err
}
document, err := getAndValidateQueries(specFilename, schema)
if err != nil {
return err
}
code, err := Generate(schema, document)
if err != nil {
return err
}
_, err = out.Write(code)
return err
}
func Main() {
var err error
defer func() {
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}()
if len(os.Args) != 4 {
err = fmt.Errorf("usage: %s queries.graphql schema.graphql generated.go",
os.Args[0])
return
}
out, err := outputWriter(os.Args[3])
if err != nil {
return
}
err = ParseGenerateAndWrite(os.Args[1], os.Args[2], out)
}