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  }