github.com/ppphp/yayagf@v0.0.1/cmd/generate/controller/controller.go (about)

     1  package controller
     2  
     3  import (
     4  	"bytes"
     5  	"html/template"
     6  	"io/ioutil"
     7  	"log"
     8  	"os"
     9  	"path/filepath"
    10  	"strings"
    11  
    12  	"github.com/ppphp/yayagf/internal/file"
    13  
    14  	"github.com/ppphp/yayagf/pkg/cli"
    15  )
    16  
    17  func CommandFactory() (*cli.Command, error) {
    18  	c := &cli.Command{
    19  		Run: func(args []string, flags map[string]string) (int, error) {
    20  			root, err := file.GetAppRoot()
    21  			if err != nil {
    22  				log.Printf("get project name failed: %v", err.Error())
    23  				return 1, err
    24  			}
    25  			tmpl, err := template.New("controller").Parse(controllerTemplate)
    26  			if err != nil {
    27  				log.Printf("controller parse failed: %v", err.Error())
    28  				return 1, err
    29  			}
    30  			_ = os.MkdirAll(filepath.Join(root, "app", "controller"), 0755)
    31  			for _, a := range args {
    32  				b := bytes.Buffer{}
    33  				if err := tmpl.Execute(&b, struct {
    34  					Lower, Capital string
    35  				}{strings.ToLower(a), strings.Title(strings.ToLower(a))}); err != nil {
    36  					log.Printf("jenkinsTemplate parse failed: %v", err.Error())
    37  					return 1, err
    38  				}
    39  				if err := ioutil.WriteFile(filepath.Join(root, "app", "controller", strings.ToLower(a)+".go"), b.Bytes(), 0644); err != nil {
    40  					log.Printf("write file failed: %v", err.Error())
    41  					return 1, err
    42  				}
    43  			}
    44  			return 0, nil
    45  		},
    46  	}
    47  	return c, nil
    48  }
    49  
    50  const controllerTemplate = `package controller 
    51  
    52  // Index{{.Capital}} godoc
    53  // @Summary {{.Capital}}
    54  // @Tags {{.Lower}}
    55  // @Accept json
    56  // @Produce json
    57  // @Success 200 {int} int 0
    58  // @Failure 200 {int} int 0
    59  // @Failure 200 {int} int 0
    60  // @Router /{{.Lower}} [get]
    61  func Index{{.Capital}}(c *maotai.Context) (int, string, gin.H) {
    62  	return 0, "", nil
    63  }
    64  
    65  // Create{{.Capital}} godoc
    66  // @Summary Create{{.Capital}}
    67  // @Tags {{.Lower}}
    68  // @Accept json
    69  // @Produce json
    70  // @Success 200 {int} int 0
    71  // @Failure 200 {int} int 0
    72  // @Failure 200 {int} int 0
    73  // @Router /{{.Lower}} [post]
    74  func Create{{.Capital}}(c *maotai.Context) (int, string, gin.H) {
    75  	return 0, "", nil
    76  }
    77  `