Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ package main
//go:generate ./gen.sh models

import (
"bytes"
"crypto/sha1"
"database/sql"
"encoding/base64"
"encoding/json"
"errors"
"fmt"
"go/format"
"io"
"io/ioutil"
"log"
Expand Down Expand Up @@ -336,6 +338,7 @@ func getFileName(args *internal.ArgType, t *internal.TBuf) (string, string, stri
// file from files. If the built filename is not already defined, then it calls
// the os.OpenFile with the correct parameters depending on the state of args.
func getFile(args *internal.ArgType, filename string, pkg string) (*os.File, error) {
var buf bytes.Buffer
var f *os.File
var err error

Expand All @@ -354,25 +357,25 @@ func getFile(args *internal.ArgType, filename string, pkg string) (*os.File, err

// file didn't originally exist, so add package header
if args.Tags != "" {
f.WriteString(`// +build ` + args.Tags + "\n\n")
buf.WriteString(`// +build ` + args.Tags + "\n\n")
}

generatedText := "Code generated by Xo. DO NOT EDIT.\n\n"

switch {
case strings.HasSuffix(filename, ".go"):
f.WriteString("// " + generatedText)
buf.WriteString("// " + generatedText)
case strings.HasSuffix(filename, ".yml"):
fallthrough
case strings.HasSuffix(filename, ".graphql"):
f.WriteString("# " + generatedText)
buf.WriteString("# " + generatedText)
case strings.HasSuffix(filename, ".sql"):
f.WriteString("-- " + generatedText)
buf.WriteString("-- " + generatedText)
}

if strings.HasSuffix(filename, ".go") {
if strings.HasSuffix(filename, "wire.go") {
if _, err = f.WriteString("//+build wireinject\n\npackage main"); err != nil {
if _, err = buf.WriteString("//+build wireinject\n\npackage main"); err != nil {
return nil, err
}
} else {
Expand All @@ -383,14 +386,21 @@ func getFile(args *internal.ArgType, filename string, pkg string) (*os.File, err
}
}
} else if strings.HasSuffix(filename, ".yml") {
err = args.TemplateSet().Execute(f, "gqlgen.yml.tpl", args)
err = args.TemplateSet().Execute(buf, "gqlgen.yml.tpl", args)
if err != nil {
return nil, err
}
}

args.Package = oldArgPkg

byts, err := format.Source(buf.Bytes())
if err != nil {
f.Write(buf.Bytes())
} else {
f.Write(byts)
}

return f, nil
}

Expand Down