github.com/wawandco/ox@v0.13.6-0.20230809142027-913b3d837f2a/plugins/tools/ox/model/initializer.go (about)

     1  package model
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  	"path/filepath"
     7  
     8  	"github.com/wawandco/ox/internal/source"
     9  	"github.com/wawandco/ox/plugins/base/new"
    10  )
    11  
    12  // Initializer
    13  type Initializer struct{}
    14  
    15  func (i Initializer) Name() string {
    16  	return "model/initializer"
    17  }
    18  
    19  func (i *Initializer) Initialize(ctx context.Context, options new.Options) error {
    20  	tmpl, err := Templates.ReadFile("templates/models.go.tmpl")
    21  	if err != nil {
    22  		return err
    23  	}
    24  
    25  	filename := filepath.Join(options.Folder, "app", "models", "models.go")
    26  	err = source.Build(filename, string(tmpl), options.Module)
    27  	if err != nil {
    28  		return err
    29  	}
    30  
    31  	tmpl, err = Templates.ReadFile("templates/models_test.go.tmpl")
    32  	if err != nil {
    33  		return err
    34  	}
    35  
    36  	filename = filepath.Join(options.Folder, "app", "models", "models_test.go")
    37  	err = os.WriteFile(filename, tmpl, 0777)
    38  	if err != nil {
    39  		return err
    40  	}
    41  
    42  	return nil
    43  }