github.com/maeglindeveloper/gqlgen@v0.13.1-0.20210413081235-57808b12a0a0/plugin/stubgen/stubs.go (about) 1 package stubgen 2 3 import ( 4 "path/filepath" 5 "syscall" 6 7 "github.com/99designs/gqlgen/internal/code" 8 9 "github.com/99designs/gqlgen/codegen" 10 "github.com/99designs/gqlgen/codegen/config" 11 "github.com/99designs/gqlgen/codegen/templates" 12 "github.com/99designs/gqlgen/plugin" 13 ) 14 15 func New(filename string, typename string) plugin.Plugin { 16 return &Plugin{filename: filename, typeName: typename} 17 } 18 19 type Plugin struct { 20 filename string 21 typeName string 22 } 23 24 var _ plugin.CodeGenerator = &Plugin{} 25 var _ plugin.ConfigMutator = &Plugin{} 26 27 func (m *Plugin) Name() string { 28 return "stubgen" 29 } 30 31 func (m *Plugin) MutateConfig(cfg *config.Config) error { 32 _ = syscall.Unlink(m.filename) 33 return nil 34 } 35 36 func (m *Plugin) GenerateCode(data *codegen.Data) error { 37 abs, err := filepath.Abs(m.filename) 38 if err != nil { 39 return err 40 } 41 pkgName := code.NameForDir(filepath.Dir(abs)) 42 43 return templates.Render(templates.Options{ 44 PackageName: pkgName, 45 Filename: m.filename, 46 Data: &ResolverBuild{ 47 Data: data, 48 TypeName: m.typeName, 49 }, 50 GeneratedHeader: true, 51 Packages: data.Config.Packages, 52 }) 53 } 54 55 type ResolverBuild struct { 56 *codegen.Data 57 58 TypeName string 59 }