...

Source file src/github.com/99designs/gqlgen/plugin/stubgen/stubs.go

Documentation: github.com/99designs/gqlgen/plugin/stubgen

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

View as plain text