64 lines
1.1 KiB
Go
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)
|
|
}
|