github.com/operandinc/gqlgen@v0.16.1/plugin/stubgen/stubs.go (about) 1 package stubgen 2 3 import ( 4 "path/filepath" 5 "syscall" 6 7 "github.com/operandinc/gqlgen/internal/code" 8 9 "github.com/operandinc/gqlgen/codegen" 10 "github.com/operandinc/gqlgen/codegen/config" 11 "github.com/operandinc/gqlgen/codegen/templates" 12 "github.com/operandinc/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 ( 25 _ plugin.CodeGenerator = &Plugin{} 26 _ plugin.ConfigMutator = &Plugin{} 27 ) 28 29 func (m *Plugin) Name() string { 30 return "stubgen" 31 } 32 33 func (m *Plugin) MutateConfig(cfg *config.Config) error { 34 _ = syscall.Unlink(m.filename) 35 return nil 36 } 37 38 func (m *Plugin) GenerateCode(data *codegen.Data) error { 39 abs, err := filepath.Abs(m.filename) 40 if err != nil { 41 return err 42 } 43 pkgName := code.NameForDir(filepath.Dir(abs)) 44 45 return templates.Render(templates.Options{ 46 PackageName: pkgName, 47 Filename: m.filename, 48 Data: &ResolverBuild{ 49 Data: data, 50 TypeName: m.typeName, 51 }, 52 GeneratedHeader: true, 53 Packages: data.Config.Packages, 54 }) 55 } 56 57 type ResolverBuild struct { 58 *codegen.Data 59 60 TypeName string 61 }