package controller import ( "ArmedPolice/utils" "bytes" "fmt" "go/format" "text/template" ) const ControllerTemplate = `package {{.Name}} import ( "ArmedPolice/app/controller/basic" "ArmedPolice/app/service" ) type {{.StrutName}} struct{ *service.Session } type {{.StrutName}}Handle func(session *service.Session) *{{.StrutName}} func (c *{{.StrutName}}) List() (*basic.PageDataResponse, error) { return &basic.PageDataResponse{Data: nil, Count: 0}, nil } func (c *{{.StrutName}}) Form() error { return nil } func (c *{{.StrutName}}) Delete(id uint64) error { return nil } func New{{.StrutName}}() {{.StrutName}}Handle { return func(session *service.Session) *{{.StrutName}} { return &{{.StrutName}}{session} } }` type ControllerFile struct { // Name is the plugin name. Snack style. Name string // StrutName is the struct name. StrutName string } func (v *ControllerFile) Execute(file, tmplName, tmpl string) error { fmt.Println(file) f, err := utils.Open(file) if err != nil { return err } defer f.Close() temp := new(template.Template) if temp, err = template.New(tmplName).Parse(tmpl); err != nil { return err } buf := new(bytes.Buffer) if err = temp.Execute(buf, v); err != nil { return err } out := make([]byte, 0) if out, err = format.Source(buf.Bytes()); err != nil { return err } _, err = f.Write(out) return err }