github.com/HaswinVidanage/gqlgen@v0.8.1-0.20220609041233-69528c1bf712/plugin/stubgen/stubs.go (about) 1 package stubgen 2 3 import ( 4 "path/filepath" 5 "syscall" 6 7 "github.com/HaswinVidanage/gqlgen/internal/code" 8 9 "github.com/HaswinVidanage/gqlgen/codegen" 10 "github.com/HaswinVidanage/gqlgen/codegen/config" 11 "github.com/HaswinVidanage/gqlgen/codegen/templates" 12 "github.com/HaswinVidanage/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 pkgPath := code.ImportPathForDir(filepath.Dir(m.filename)) 38 pkgName := code.NameForPackage(pkgPath) 39 40 return templates.Render(templates.Options{ 41 PackageName: pkgName, 42 Filename: m.filename, 43 Data: &ResolverBuild{ 44 Data: data, 45 TypeName: m.typeName, 46 }, 47 GeneratedHeader: true, 48 }) 49 } 50 51 type ResolverBuild struct { 52 *codegen.Data 53 54 TypeName string 55 }