beegoinit-cmd/cmd/new.go
2020-08-31 14:37:22 +08:00

199 lines
4.3 KiB
Go

package cmd
import (
"fmt"
"github.com/urfave/cli/v2"
"golib.gaore.com/GaoreGo/beegoinit-cmd/utils"
"os"
"path"
)
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
│ | └── index.go
│ └── init.go
├── cli
│ └── test
├── conf
│ └──app.conf
├── main.go
├── runtime
│ └── logs
├── static
├── Makefile
└── README.md
`
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 "jedi.gaore.com/applications/_common/controllers"
api "jedi.gaore.com/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"
_ "jedi.gaore.com/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
if packPath == "." {
packPath = path.Base(appPath)
}
fmt.Println(tree)
appPath = "."
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", "controlelrs"), 0755)
utils.WriteToFile(path.Join(appPath, "main.go"), mainfun)
utils.WriteToFile(path.Join(appPath, "applications", "init.go"), initfun)
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)
return nil
}