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  }