mirror of
https://github.com/beego/bee.git
synced 2024-11-22 15:10:54 +00:00
This fixes #201
This commit is contained in:
parent
bccfd667c1
commit
01e7ff3774
64
apiapp.go
64
apiapp.go
@ -546,14 +546,15 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func createapi(cmd *Command, args []string) int {
|
func createapi(cmd *Command, args []string) int {
|
||||||
curpath, _ := os.Getwd()
|
|
||||||
if len(args) < 1 {
|
if len(args) < 1 {
|
||||||
ColorLog("[ERRO] Argument [appname] is missing\n")
|
ColorLog("[ERRO] Argument [appname] is missing\n")
|
||||||
os.Exit(2)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(args) > 1 {
|
if len(args) > 1 {
|
||||||
cmd.Flag.Parse(args[1:])
|
cmd.Flag.Parse(args[1:])
|
||||||
}
|
}
|
||||||
|
|
||||||
apppath, packpath, err := checkEnv(args[0])
|
apppath, packpath, err := checkEnv(args[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
@ -576,8 +577,8 @@ func createapi(cmd *Command, args []string) int {
|
|||||||
fmt.Println("create tests:", path.Join(apppath, "tests"))
|
fmt.Println("create tests:", path.Join(apppath, "tests"))
|
||||||
|
|
||||||
fmt.Println("create conf app.conf:", path.Join(apppath, "conf", "app.conf"))
|
fmt.Println("create conf app.conf:", path.Join(apppath, "conf", "app.conf"))
|
||||||
writetofile(path.Join(apppath, "conf", "app.conf"),
|
WriteToFile(path.Join(apppath, "conf", "app.conf"),
|
||||||
strings.Replace(apiconf, "{{.Appname}}", args[0], -1))
|
strings.Replace(apiconf, "{{.Appname}}", path.Base(args[0]), -1))
|
||||||
|
|
||||||
if conn != "" {
|
if conn != "" {
|
||||||
fmt.Println("create main.go:", path.Join(apppath, "main.go"))
|
fmt.Println("create main.go:", path.Join(apppath, "main.go"))
|
||||||
@ -588,7 +589,7 @@ func createapi(cmd *Command, args []string) int {
|
|||||||
} else if driver == "postgres" {
|
} else if driver == "postgres" {
|
||||||
maingoContent = strings.Replace(maingoContent, "{{.DriverPkg}}", `_ "github.com/lib/pq"`, -1)
|
maingoContent = strings.Replace(maingoContent, "{{.DriverPkg}}", `_ "github.com/lib/pq"`, -1)
|
||||||
}
|
}
|
||||||
writetofile(path.Join(apppath, "main.go"),
|
WriteToFile(path.Join(apppath, "main.go"),
|
||||||
strings.Replace(
|
strings.Replace(
|
||||||
maingoContent,
|
maingoContent,
|
||||||
"{{.conn}}",
|
"{{.conn}}",
|
||||||
@ -599,7 +600,7 @@ func createapi(cmd *Command, args []string) int {
|
|||||||
ColorLog("[INFO] Using '%s' as 'driver'\n", driver)
|
ColorLog("[INFO] Using '%s' as 'driver'\n", driver)
|
||||||
ColorLog("[INFO] Using '%s' as 'conn'\n", conn)
|
ColorLog("[INFO] Using '%s' as 'conn'\n", conn)
|
||||||
ColorLog("[INFO] Using '%s' as 'tables'\n", tables)
|
ColorLog("[INFO] Using '%s' as 'tables'\n", tables)
|
||||||
generateAppcode(string(driver), string(conn), "3", string(tables), path.Join(curpath, args[0]))
|
generateAppcode(string(driver), string(conn), "3", string(tables), path.Join(apppath, args[0]))
|
||||||
} else {
|
} else {
|
||||||
os.Mkdir(path.Join(apppath, "models"), 0755)
|
os.Mkdir(path.Join(apppath, "models"), 0755)
|
||||||
fmt.Println("create models:", path.Join(apppath, "models"))
|
fmt.Println("create models:", path.Join(apppath, "models"))
|
||||||
@ -607,43 +608,38 @@ func createapi(cmd *Command, args []string) int {
|
|||||||
fmt.Println(path.Join(apppath, "routers") + string(path.Separator))
|
fmt.Println(path.Join(apppath, "routers") + string(path.Separator))
|
||||||
|
|
||||||
fmt.Println("create controllers object.go:", path.Join(apppath, "controllers", "object.go"))
|
fmt.Println("create controllers object.go:", path.Join(apppath, "controllers", "object.go"))
|
||||||
writetofile(path.Join(apppath, "controllers", "object.go"),
|
WriteToFile(path.Join(apppath, "controllers", "object.go"),
|
||||||
strings.Replace(apiControllers, "{{.Appname}}", packpath, -1))
|
strings.Replace(apiControllers, "{{.Appname}}", packpath, -1))
|
||||||
|
|
||||||
fmt.Println("create controllers user.go:", path.Join(apppath, "controllers", "user.go"))
|
fmt.Println("create controllers user.go:", path.Join(apppath, "controllers", "user.go"))
|
||||||
writetofile(path.Join(apppath, "controllers", "user.go"),
|
WriteToFile(path.Join(apppath, "controllers", "user.go"),
|
||||||
strings.Replace(apiControllers2, "{{.Appname}}", packpath, -1))
|
strings.Replace(apiControllers2, "{{.Appname}}", packpath, -1))
|
||||||
|
|
||||||
fmt.Println("create tests default.go:", path.Join(apppath, "tests", "default_test.go"))
|
fmt.Println("create tests default.go:", path.Join(apppath, "tests", "default_test.go"))
|
||||||
writetofile(path.Join(apppath, "tests", "default_test.go"),
|
WriteToFile(path.Join(apppath, "tests", "default_test.go"),
|
||||||
strings.Replace(apiTests, "{{.Appname}}", packpath, -1))
|
strings.Replace(apiTests, "{{.Appname}}", packpath, -1))
|
||||||
|
|
||||||
fmt.Println("create routers router.go:", path.Join(apppath, "routers", "router.go"))
|
fmt.Println("create routers router.go:", path.Join(apppath, "routers", "router.go"))
|
||||||
writetofile(path.Join(apppath, "routers", "router.go"),
|
WriteToFile(path.Join(apppath, "routers", "router.go"),
|
||||||
strings.Replace(apirouter, "{{.Appname}}", packpath, -1))
|
strings.Replace(apirouter, "{{.Appname}}", packpath, -1))
|
||||||
|
|
||||||
fmt.Println("create models object.go:", path.Join(apppath, "models", "object.go"))
|
fmt.Println("create models object.go:", path.Join(apppath, "models", "object.go"))
|
||||||
writetofile(path.Join(apppath, "models", "object.go"), apiModels)
|
WriteToFile(path.Join(apppath, "models", "object.go"), apiModels)
|
||||||
|
|
||||||
fmt.Println("create models user.go:", path.Join(apppath, "models", "user.go"))
|
fmt.Println("create models user.go:", path.Join(apppath, "models", "user.go"))
|
||||||
writetofile(path.Join(apppath, "models", "user.go"), apiModels2)
|
WriteToFile(path.Join(apppath, "models", "user.go"), apiModels2)
|
||||||
|
|
||||||
fmt.Println("create docs doc.go:", path.Join(apppath, "docs", "doc.go"))
|
fmt.Println("create docs doc.go:", path.Join(apppath, "docs", "doc.go"))
|
||||||
writetofile(path.Join(apppath, "docs", "doc.go"), "package docs")
|
WriteToFile(path.Join(apppath, "docs", "doc.go"), "package docs")
|
||||||
|
|
||||||
fmt.Println("create main.go:", path.Join(apppath, "main.go"))
|
fmt.Println("create main.go:", path.Join(apppath, "main.go"))
|
||||||
writetofile(path.Join(apppath, "main.go"),
|
WriteToFile(path.Join(apppath, "main.go"),
|
||||||
strings.Replace(apiMaingo, "{{.Appname}}", packpath, -1))
|
strings.Replace(apiMaingo, "{{.Appname}}", packpath, -1))
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkEnv(appname string) (apppath, packpath string, err error) {
|
func checkEnv(appname string) (apppath, packpath string, err error) {
|
||||||
curpath, err := os.Getwd()
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
gopath := os.Getenv("GOPATH")
|
gopath := os.Getenv("GOPATH")
|
||||||
Debugf("gopath:%s", gopath)
|
Debugf("gopath:%s", gopath)
|
||||||
if gopath == "" {
|
if gopath == "" {
|
||||||
@ -651,38 +647,14 @@ func checkEnv(appname string) (apppath, packpath string, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
appsrcpath := ""
|
gosrcpath := path.Join(gopath, "src")
|
||||||
haspath := false
|
apppath = path.Join(gosrcpath, appname)
|
||||||
wgopath := path.SplitList(gopath)
|
|
||||||
for _, wg := range wgopath {
|
|
||||||
wg = path.Join(wg, "src")
|
|
||||||
|
|
||||||
if strings.HasPrefix(strings.ToLower(curpath), strings.ToLower(wg)) {
|
|
||||||
haspath = true
|
|
||||||
appsrcpath = wg
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
wg, _ = path.EvalSymlinks(wg)
|
|
||||||
|
|
||||||
if strings.HasPrefix(strings.ToLower(curpath), strings.ToLower(wg)) {
|
|
||||||
haspath = true
|
|
||||||
appsrcpath = wg
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if !haspath {
|
|
||||||
err = fmt.Errorf("can't create application outside of GOPATH `%s`\n"+
|
|
||||||
"you first should `cd $GOPATH%ssrc` then use create\n", gopath, string(path.Separator))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
apppath = path.Join(curpath, appname)
|
|
||||||
|
|
||||||
if _, e := os.Stat(apppath); os.IsNotExist(e) == false {
|
if _, e := os.Stat(apppath); os.IsNotExist(e) == false {
|
||||||
err = fmt.Errorf("path `%s` exists, can not create app without remove it\n", apppath)
|
err = fmt.Errorf("path `%s` exists, can not create app without remove it\n", apppath)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
packpath = strings.Join(strings.Split(apppath[len(appsrcpath)+1:], string(path.Separator)), "/")
|
packpath = strings.Join(strings.Split(apppath[len(gosrcpath)+1:], string(path.Separator)), "/")
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
10
g_appcode.go
10
g_appcode.go
@ -292,7 +292,7 @@ func generateAppcode(driver, connStr, level, tables, currpath string) {
|
|||||||
|
|
||||||
// Generate takes table, column and foreign key information from database connection
|
// Generate takes table, column and foreign key information from database connection
|
||||||
// and generate corresponding golang source files
|
// and generate corresponding golang source files
|
||||||
func gen(dbms, connStr string, mode byte, selectedTableNames map[string]bool, currpath string) {
|
func gen(dbms, connStr string, mode byte, selectedTableNames map[string]bool, apppath string) {
|
||||||
db, err := sql.Open(dbms, connStr)
|
db, err := sql.Open(dbms, connStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ColorLog("[ERRO] Could not connect to %s database: %s, %s\n", dbms, connStr, err)
|
ColorLog("[ERRO] Could not connect to %s database: %s, %s\n", dbms, connStr, err)
|
||||||
@ -304,11 +304,11 @@ func gen(dbms, connStr string, mode byte, selectedTableNames map[string]bool, cu
|
|||||||
tableNames := trans.GetTableNames(db)
|
tableNames := trans.GetTableNames(db)
|
||||||
tables := getTableObjects(tableNames, db, trans)
|
tables := getTableObjects(tableNames, db, trans)
|
||||||
mvcPath := new(MvcPath)
|
mvcPath := new(MvcPath)
|
||||||
mvcPath.ModelPath = path.Join(currpath, "models")
|
mvcPath.ModelPath = path.Join(apppath, "models")
|
||||||
mvcPath.ControllerPath = path.Join(currpath, "controllers")
|
mvcPath.ControllerPath = path.Join(apppath, "controllers")
|
||||||
mvcPath.RouterPath = path.Join(currpath, "routers")
|
mvcPath.RouterPath = path.Join(apppath, "routers")
|
||||||
createPaths(mode, mvcPath)
|
createPaths(mode, mvcPath)
|
||||||
pkgPath := getPackagePath(currpath)
|
pkgPath := getPackagePath(apppath)
|
||||||
writeSourceFiles(pkgPath, tables, mode, mvcPath, selectedTableNames)
|
writeSourceFiles(pkgPath, tables, mode, mvcPath, selectedTableNames)
|
||||||
} else {
|
} else {
|
||||||
ColorLog("[ERRO] Generating app code from %s database is not supported yet.\n", dbms)
|
ColorLog("[ERRO] Generating app code from %s database is not supported yet.\n", dbms)
|
||||||
|
10
hproseapp.go
10
hproseapp.go
@ -274,7 +274,7 @@ func createhprose(cmd *Command, args []string) int {
|
|||||||
os.Mkdir(path.Join(apppath, "conf"), 0755)
|
os.Mkdir(path.Join(apppath, "conf"), 0755)
|
||||||
fmt.Println("create conf:", path.Join(apppath, "conf"))
|
fmt.Println("create conf:", path.Join(apppath, "conf"))
|
||||||
fmt.Println("create conf app.conf:", path.Join(apppath, "conf", "app.conf"))
|
fmt.Println("create conf app.conf:", path.Join(apppath, "conf", "app.conf"))
|
||||||
writetofile(path.Join(apppath, "conf", "app.conf"),
|
WriteToFile(path.Join(apppath, "conf", "app.conf"),
|
||||||
strings.Replace(hproseconf, "{{.Appname}}", args[0], -1))
|
strings.Replace(hproseconf, "{{.Appname}}", args[0], -1))
|
||||||
|
|
||||||
if conn != "" {
|
if conn != "" {
|
||||||
@ -291,7 +291,7 @@ func createhprose(cmd *Command, args []string) int {
|
|||||||
} else if driver == "postgres" {
|
} else if driver == "postgres" {
|
||||||
maingoContent = strings.Replace(maingoContent, "{{.DriverPkg}}", `_ "github.com/lib/pq"`, -1)
|
maingoContent = strings.Replace(maingoContent, "{{.DriverPkg}}", `_ "github.com/lib/pq"`, -1)
|
||||||
}
|
}
|
||||||
writetofile(path.Join(apppath, "main.go"),
|
WriteToFile(path.Join(apppath, "main.go"),
|
||||||
strings.Replace(
|
strings.Replace(
|
||||||
maingoContent,
|
maingoContent,
|
||||||
"{{.conn}}",
|
"{{.conn}}",
|
||||||
@ -304,13 +304,13 @@ func createhprose(cmd *Command, args []string) int {
|
|||||||
fmt.Println("create models:", path.Join(apppath, "models"))
|
fmt.Println("create models:", path.Join(apppath, "models"))
|
||||||
|
|
||||||
fmt.Println("create models object.go:", path.Join(apppath, "models", "object.go"))
|
fmt.Println("create models object.go:", path.Join(apppath, "models", "object.go"))
|
||||||
writetofile(path.Join(apppath, "models", "object.go"), apiModels)
|
WriteToFile(path.Join(apppath, "models", "object.go"), apiModels)
|
||||||
|
|
||||||
fmt.Println("create models user.go:", path.Join(apppath, "models", "user.go"))
|
fmt.Println("create models user.go:", path.Join(apppath, "models", "user.go"))
|
||||||
writetofile(path.Join(apppath, "models", "user.go"), apiModels2)
|
WriteToFile(path.Join(apppath, "models", "user.go"), apiModels2)
|
||||||
|
|
||||||
fmt.Println("create main.go:", path.Join(apppath, "main.go"))
|
fmt.Println("create main.go:", path.Join(apppath, "main.go"))
|
||||||
writetofile(path.Join(apppath, "main.go"),
|
WriteToFile(path.Join(apppath, "main.go"),
|
||||||
strings.Replace(hproseMaingo, "{{.Appname}}", packpath, -1))
|
strings.Replace(hproseMaingo, "{{.Appname}}", packpath, -1))
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
|
51
new.go
51
new.go
@ -55,7 +55,6 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func createApp(cmd *Command, args []string) int {
|
func createApp(cmd *Command, args []string) int {
|
||||||
curpath, _ := os.Getwd()
|
|
||||||
if len(args) != 1 {
|
if len(args) != 1 {
|
||||||
ColorLog("[ERRO] Argument [appname] is missing\n")
|
ColorLog("[ERRO] Argument [appname] is missing\n")
|
||||||
os.Exit(2)
|
os.Exit(2)
|
||||||
@ -65,40 +64,12 @@ func createApp(cmd *Command, args []string) int {
|
|||||||
Debugf("gopath:%s", gopath)
|
Debugf("gopath:%s", gopath)
|
||||||
if gopath == "" {
|
if gopath == "" {
|
||||||
ColorLog("[ERRO] $GOPATH not found\n")
|
ColorLog("[ERRO] $GOPATH not found\n")
|
||||||
ColorLog("[HINT] Set $GOPATH in your environment vairables\n")
|
ColorLog("[HINT] Set $GOPATH in your environment variables\n")
|
||||||
os.Exit(2)
|
|
||||||
}
|
|
||||||
haspath := false
|
|
||||||
appsrcpath := ""
|
|
||||||
|
|
||||||
wgopath := path.SplitList(gopath)
|
|
||||||
for _, wg := range wgopath {
|
|
||||||
|
|
||||||
wg = path.Join(wg, "src")
|
|
||||||
|
|
||||||
if strings.HasPrefix(strings.ToLower(curpath), strings.ToLower(wg)) {
|
|
||||||
haspath = true
|
|
||||||
appsrcpath = wg
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
wg, _ = path.EvalSymlinks(wg)
|
|
||||||
|
|
||||||
if strings.HasPrefix(strings.ToLower(curpath), strings.ToLower(wg)) {
|
|
||||||
haspath = true
|
|
||||||
appsrcpath = wg
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if !haspath {
|
|
||||||
ColorLog("[ERRO] Unable to create an application outside of $GOPATH%ssrc(%s%ssrc)\n", string(path.Separator), gopath, string(path.Separator))
|
|
||||||
ColorLog("[HINT] Change your work directory by `cd ($GOPATH%ssrc)`\n", string(path.Separator))
|
|
||||||
os.Exit(2)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
apppath := path.Join(curpath, args[0])
|
gosrcpath := path.Join(gopath, "src") // User's workspace
|
||||||
|
apppath := path.Join(gosrcpath, args[0])
|
||||||
|
|
||||||
if isExist(apppath) {
|
if isExist(apppath) {
|
||||||
ColorLog("[ERRO] Path (%s) already exists\n", apppath)
|
ColorLog("[ERRO] Path (%s) already exists\n", apppath)
|
||||||
@ -133,22 +104,22 @@ func createApp(cmd *Command, args []string) int {
|
|||||||
fmt.Println(path.Join(apppath, "views") + string(path.Separator))
|
fmt.Println(path.Join(apppath, "views") + string(path.Separator))
|
||||||
os.Mkdir(path.Join(apppath, "views"), 0755)
|
os.Mkdir(path.Join(apppath, "views"), 0755)
|
||||||
fmt.Println(path.Join(apppath, "conf", "app.conf"))
|
fmt.Println(path.Join(apppath, "conf", "app.conf"))
|
||||||
writetofile(path.Join(apppath, "conf", "app.conf"), strings.Replace(appconf, "{{.Appname}}", args[0], -1))
|
WriteToFile(path.Join(apppath, "conf", "app.conf"), strings.Replace(appconf, "{{.Appname}}", path.Base(args[0]), -1))
|
||||||
|
|
||||||
fmt.Println(path.Join(apppath, "controllers", "default.go"))
|
fmt.Println(path.Join(apppath, "controllers", "default.go"))
|
||||||
writetofile(path.Join(apppath, "controllers", "default.go"), controllers)
|
WriteToFile(path.Join(apppath, "controllers", "default.go"), controllers)
|
||||||
|
|
||||||
fmt.Println(path.Join(apppath, "views", "index.tpl"))
|
fmt.Println(path.Join(apppath, "views", "index.tpl"))
|
||||||
writetofile(path.Join(apppath, "views", "index.tpl"), indextpl)
|
WriteToFile(path.Join(apppath, "views", "index.tpl"), indextpl)
|
||||||
|
|
||||||
fmt.Println(path.Join(apppath, "routers", "router.go"))
|
fmt.Println(path.Join(apppath, "routers", "router.go"))
|
||||||
writetofile(path.Join(apppath, "routers", "router.go"), strings.Replace(router, "{{.Appname}}", strings.Join(strings.Split(apppath[len(appsrcpath)+1:], string(path.Separator)), "/"), -1))
|
WriteToFile(path.Join(apppath, "routers", "router.go"), strings.Replace(router, "{{.Appname}}", strings.Join(strings.Split(apppath[len(gosrcpath)+1:], string(path.Separator)), "/"), -1))
|
||||||
|
|
||||||
fmt.Println(path.Join(apppath, "tests", "default_test.go"))
|
fmt.Println(path.Join(apppath, "tests", "default_test.go"))
|
||||||
writetofile(path.Join(apppath, "tests", "default_test.go"), strings.Replace(test, "{{.Appname}}", strings.Join(strings.Split(apppath[len(appsrcpath)+1:], string(path.Separator)), "/"), -1))
|
WriteToFile(path.Join(apppath, "tests", "default_test.go"), strings.Replace(test, "{{.Appname}}", strings.Join(strings.Split(apppath[len(gosrcpath)+1:], string(path.Separator)), "/"), -1))
|
||||||
|
|
||||||
fmt.Println(path.Join(apppath, "main.go"))
|
fmt.Println(path.Join(apppath, "main.go"))
|
||||||
writetofile(path.Join(apppath, "main.go"), strings.Replace(maingo, "{{.Appname}}", strings.Join(strings.Split(apppath[len(appsrcpath)+1:], string(path.Separator)), "/"), -1))
|
WriteToFile(path.Join(apppath, "main.go"), strings.Replace(maingo, "{{.Appname}}", strings.Join(strings.Split(apppath[len(gosrcpath)+1:], string(path.Separator)), "/"), -1))
|
||||||
|
|
||||||
ColorLog("[SUCC] New application successfully created!\n")
|
ColorLog("[SUCC] New application successfully created!\n")
|
||||||
return 0
|
return 0
|
||||||
@ -336,11 +307,11 @@ var indextpl = `<!DOCTYPE html>
|
|||||||
</html>
|
</html>
|
||||||
`
|
`
|
||||||
|
|
||||||
func writetofile(filename, content string) {
|
func WriteToFile(filename, content string) {
|
||||||
f, err := os.Create(filename)
|
f, err := os.Create(filename)
|
||||||
|
defer f.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
defer f.Close()
|
|
||||||
f.WriteString(content)
|
f.WriteString(content)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user