github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/cmd/internal/svc/codegen/httpmiddleware.go (about)

     1  package codegen
     2  
     3  import (
     4  	"github.com/sirupsen/logrus"
     5  	"github.com/unionj-cloud/go-doudou/version"
     6  	"os"
     7  	"path/filepath"
     8  	"text/template"
     9  )
    10  
    11  var httpMwTmpl = `/**
    12  * Generated by go-doudou {{.Version}}.
    13  * You can edit it as your need.
    14  */
    15  package httpsrv`
    16  
    17  // GenHttpMiddleware generates http middleware file
    18  func GenHttpMiddleware(dir string) {
    19  	var (
    20  		err     error
    21  		mwfile  string
    22  		f       *os.File
    23  		tpl     *template.Template
    24  		httpDir string
    25  	)
    26  	httpDir = filepath.Join(dir, "transport/httpsrv")
    27  	if err = os.MkdirAll(httpDir, os.ModePerm); err != nil {
    28  		panic(err)
    29  	}
    30  
    31  	mwfile = filepath.Join(httpDir, "middleware.go")
    32  	if _, err = os.Stat(mwfile); os.IsNotExist(err) {
    33  		if f, err = os.Create(mwfile); err != nil {
    34  			panic(err)
    35  		}
    36  		defer f.Close()
    37  		tpl, _ = template.New("middleware.go.tmpl").Parse(httpMwTmpl)
    38  		_ = tpl.Execute(f, struct {
    39  			Version string
    40  		}{
    41  			Version: version.Release,
    42  		})
    43  	} else {
    44  		logrus.Warnf("file %s already exists", mwfile)
    45  	}
    46  }