248 lines
5.4 KiB
Go
248 lines
5.4 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/gookit/color"
|
|
"github.com/urfave/cli/v2"
|
|
"golib.gaore.com/GaoreGo/beegoinit-cmd/utils"
|
|
"os"
|
|
"path"
|
|
"strings"
|
|
)
|
|
|
|
var gitignore = `# Created by .ignore support plugin (hsz.mobi)
|
|
### Example user template template
|
|
### Example user template
|
|
|
|
# IntelliJ project files
|
|
.idea
|
|
*.iml
|
|
out
|
|
gen
|
|
/runtime
|
|
### Go template
|
|
# Binaries for programs and plugins
|
|
*.exe
|
|
*.exe~
|
|
*.dll
|
|
*.so
|
|
*.dylib
|
|
|
|
# Test binary, built with 'go test -c\'
|
|
*.test
|
|
|
|
# Output of the go coverage tool, specifically when used with LiteIDE
|
|
*.out
|
|
|
|
# Dependency directories (remove the comment below to include it)
|
|
# vendor/`
|
|
|
|
var tree = `.
|
|
├── applications
|
|
│ ├── _common
|
|
│ ├── api
|
|
| | ├── base.go
|
|
│ | └── index.go
|
|
│ └── init.go
|
|
├── conf
|
|
│ └──app.conf
|
|
├── runtime
|
|
│ └── logs
|
|
├── static
|
|
| └── js
|
|
| └── css
|
|
├── main.go
|
|
├── Makefile
|
|
└── README.md
|
|
`
|
|
|
|
var appconf = `appname = {{ packageName }}
|
|
|
|
httpaddr = "${CENTER_HTTP_HOST||127.0.0.1}"
|
|
|
|
httpport = "${CENTER_HTTP_PORT||8080}"
|
|
|
|
runmode ="${CENTER_RUNMODE||prod}"
|
|
|
|
copyrequestbody = true
|
|
|
|
sessionon = true
|
|
|
|
customviewdir = "views"
|
|
|
|
custommodules = "api,web,openapi,admin"
|
|
|
|
RouterCaseSensitive = false
|
|
|
|
EnableGzip = true
|
|
|
|
enablexsrf = true
|
|
|
|
xsrfkey = 61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o
|
|
|
|
xsrfexpire = 21600
|
|
`
|
|
|
|
var initfun = `
|
|
package applications
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/astaxie/beego"
|
|
"golib.gaore.com/GaoreGo/beegoinit/response"
|
|
router "golib.gaore.com/GaoreGo/beegoinit/routers"
|
|
"golib.gaore.com/GaoreGo/grconfig"
|
|
"golib.gaore.com/GaoreGo/grlogs"
|
|
common "{{ packageName }}/applications/_common/controllers"
|
|
api "{{ packageName }}/applications/api/controllers"
|
|
"strings"
|
|
)
|
|
|
|
func init() {
|
|
router.AddController("api", new(api.IndexController))
|
|
// 通用路由处理
|
|
router.ErrorController(&common.ErrorController{})
|
|
beego.Router("/", &api.IndexController{}, "get:Index")
|
|
|
|
beego.SetStaticPath("/assets", "static")
|
|
if err := beego.AddViewPath("applications/_common/views"); err != nil {
|
|
grlogs.Error(err)
|
|
}
|
|
}
|
|
`
|
|
var indexcontroller = `
|
|
package controllers
|
|
|
|
import (
|
|
|
|
)
|
|
|
|
type IndexController struct {
|
|
baseController
|
|
}
|
|
|
|
func (this *IndexController) Index() {
|
|
this.Ctx.WriteString("ok")
|
|
this.StopRun()
|
|
}
|
|
`
|
|
|
|
var basecontroller = `
|
|
package controllers
|
|
|
|
import (
|
|
"github.com/astaxie/beego"
|
|
"golib.gaore.com/GaoreGo/beegoinit/mvc"
|
|
"golib.gaore.com/GaoreGo/grconfig"
|
|
"path"
|
|
)
|
|
|
|
type baseController struct {
|
|
Configer *grconfig.Configer
|
|
mvc.BaseController
|
|
}
|
|
|
|
func (this *baseController) NestPrepare() {
|
|
this.Configer = grconfig.New(path.Join(beego.WorkPath, "conf/"))
|
|
this.EnableXSRF = false
|
|
this.StopRender()
|
|
}
|
|
`
|
|
|
|
var errcontroller = `
|
|
package controllers
|
|
|
|
import (
|
|
"golib.gaore.com/GaoreGo/beegoinit/mvc"
|
|
"golib.gaore.com/GaoreGo/beegoinit/response"
|
|
"strings"
|
|
)
|
|
|
|
type ErrorController struct {
|
|
mvc.BaseController
|
|
}
|
|
|
|
func (this *ErrorController) NestPrepare() {
|
|
this.ViewPath = "applications/_common/views"
|
|
}
|
|
|
|
func (this *ErrorController) Error404() {
|
|
if this.IsAjax() || strings.Contains(strings.ToLower(this.Ctx.Input.Header("Accept")), "json") {
|
|
resp := response.NewJsonByDefaultFailed()
|
|
this.Data["json"] = resp
|
|
this.ServeJSON()
|
|
} else {
|
|
this.Data["content"] = "page not found"
|
|
this.TplName = "404.tpl"
|
|
}
|
|
}
|
|
`
|
|
|
|
var mainfun = `
|
|
package main
|
|
|
|
import (
|
|
"github.com/astaxie/beego"
|
|
"github.com/astaxie/beego/toolbox"
|
|
_ "golib.gaore.com/GaoreGo/beegoinit"
|
|
_ "{{ packageName }}/applications"
|
|
)
|
|
|
|
func main() {
|
|
defer toolbox.StopTask()
|
|
toolbox.StartTask()
|
|
beego.Run()
|
|
}
|
|
`
|
|
|
|
var indextpl = `<h1 class="animation-slide-top">400</h1>`
|
|
|
|
func New(c *cli.Context) error {
|
|
|
|
var appPath string
|
|
var packPath string
|
|
var packageName string
|
|
var err error
|
|
|
|
if packPath == "." {
|
|
packPath = path.Base(appPath)
|
|
}
|
|
|
|
fmt.Println(tree)
|
|
|
|
appPath = c.String("apppath")
|
|
if appPath == "" {
|
|
if appPath, err = os.Getwd(); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
packageName = c.String("package")
|
|
if packageName == "" {
|
|
packageName = path.Base(appPath)
|
|
}
|
|
|
|
color.Yellow.Println("Now current working directory is :", appPath)
|
|
color.Yellow.Println("Now package name is default to :", packageName)
|
|
|
|
os.Mkdir(path.Join(appPath, "static"), 0755)
|
|
os.Mkdir(path.Join(appPath, "conf"), 0755)
|
|
os.Mkdir(path.Join(appPath, "cli"), 0755)
|
|
os.MkdirAll(path.Join(appPath, "runtime", "logs"), 0755)
|
|
os.MkdirAll(path.Join(appPath, "applications", "_common", "controllers"), 0755)
|
|
os.MkdirAll(path.Join(appPath, "applications", "_common", "views"), 0755)
|
|
os.MkdirAll(path.Join(appPath, "applications", "api", "controllers"), 0755)
|
|
|
|
utils.WriteToFile(path.Join(appPath, "main1.go"), strings.ReplaceAll(mainfun, "{{ packageName }}", packageName))
|
|
utils.WriteToFile(path.Join(appPath, "applications", "init.go"), strings.ReplaceAll(initfun, "{{ packageName }}", packageName))
|
|
utils.WriteToFile(path.Join(appPath, "conf", "app.conf"), strings.ReplaceAll(appconf, "{{ packageName }}", packageName))
|
|
utils.WriteToFile(path.Join(appPath, "applications", "_common", "views", "404.tpl"), indextpl)
|
|
utils.WriteToFile(path.Join(appPath, "applications", "_common", "views", "403.tpl"), indextpl)
|
|
utils.WriteToFile(path.Join(appPath, "applications", "_common", "controllers", "error.go"), errcontroller)
|
|
utils.WriteToFile(path.Join(appPath, "applications", "api", "controllers", "base.go"), basecontroller)
|
|
utils.WriteToFile(path.Join(appPath, "applications", "api", "controllers", "index.go"), indexcontroller)
|
|
|
|
color.Yellow.Println("Finish ...")
|
|
return nil
|
|
}
|