mirror of
https://github.com/beego/bee.git
synced 2024-11-25 20:10:55 +00:00
Added PreRun phase to Command struct
Now each command has a PreRun function that will execute before calling the Run() function. This allows to show the banner and do some pre-check work. Also moved parsePackagesFromDir() to the main function to avoid getting called each time 'bee' is invoked.
This commit is contained in:
parent
35384b463e
commit
03f2057eb0
@ -538,14 +538,13 @@ func TestGet(t *testing.T) {
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmdApiapp.Run = createapi
|
cmdApiapp.Run = createapi
|
||||||
|
cmdApiapp.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
cmdApiapp.Flag.Var(&tables, "tables", "specify tables to generate model")
|
cmdApiapp.Flag.Var(&tables, "tables", "specify tables to generate model")
|
||||||
cmdApiapp.Flag.Var(&driver, "driver", "database driver: mysql, postgresql, etc.")
|
cmdApiapp.Flag.Var(&driver, "driver", "database driver: mysql, postgresql, etc.")
|
||||||
cmdApiapp.Flag.Var(&conn, "conn", "connection string used by the driver to connect to a database instance")
|
cmdApiapp.Flag.Var(&conn, "conn", "connection string used by the driver to connect to a database instance")
|
||||||
}
|
}
|
||||||
|
|
||||||
func createapi(cmd *Command, args []string) int {
|
func createapi(cmd *Command, args []string) int {
|
||||||
ShowShortVersionBanner()
|
|
||||||
|
|
||||||
w := NewColorWriter(os.Stdout)
|
w := NewColorWriter(os.Stdout)
|
||||||
|
|
||||||
if len(args) < 1 {
|
if len(args) < 1 {
|
||||||
@ -656,7 +655,7 @@ func checkEnv(appname string) (apppath, packpath string, err error) {
|
|||||||
// we use the first path
|
// we use the first path
|
||||||
gopath := gps[0]
|
gopath := gps[0]
|
||||||
|
|
||||||
logger.Warn("You current workdir is not inside $GOPATH/src")
|
logger.Warn("You current workdir is not inside $GOPATH/src.")
|
||||||
logger.Debugf("GOPATH: %s", __FILE__(), __LINE__(), gopath)
|
logger.Debugf("GOPATH: %s", __FILE__(), __LINE__(), gopath)
|
||||||
|
|
||||||
gosrcpath := path.Join(gopath, "src")
|
gosrcpath := path.Join(gopath, "src")
|
||||||
|
5
bale.go
5
bale.go
@ -32,7 +32,7 @@ var cmdBale = &Command{
|
|||||||
Long: `
|
Long: `
|
||||||
Bale command compress all the static files in to a single binary file.
|
Bale command compress all the static files in to a single binary file.
|
||||||
|
|
||||||
This is usefull to not have to carry static files including js, css, images
|
This is useful to not have to carry static files including js, css, images
|
||||||
and views when publishing a project.
|
and views when publishing a project.
|
||||||
|
|
||||||
auto-generate unpack function to main package then run it during the runtime.
|
auto-generate unpack function to main package then run it during the runtime.
|
||||||
@ -43,11 +43,10 @@ This is mainly used for zealots who are requiring 100% Go code.
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmdBale.Run = runBale
|
cmdBale.Run = runBale
|
||||||
|
cmdBale.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
}
|
}
|
||||||
|
|
||||||
func runBale(cmd *Command, args []string) int {
|
func runBale(cmd *Command, args []string) int {
|
||||||
ShowShortVersionBanner()
|
|
||||||
|
|
||||||
err := loadConfig()
|
err := loadConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatalf("Failed to load configuration: %s", err)
|
logger.Fatalf("Failed to load configuration: %s", err)
|
||||||
|
17
bee.go
17
bee.go
@ -33,6 +33,9 @@ type Command struct {
|
|||||||
// The args are the arguments after the command name.
|
// The args are the arguments after the command name.
|
||||||
Run func(cmd *Command, args []string) int
|
Run func(cmd *Command, args []string) int
|
||||||
|
|
||||||
|
// PreRun performs an operation before running the command
|
||||||
|
PreRun func(cmd *Command, args []string)
|
||||||
|
|
||||||
// UsageLine is the one-line usage message.
|
// UsageLine is the one-line usage message.
|
||||||
// The first word in the line is taken to be the command name.
|
// The first word in the line is taken to be the command name.
|
||||||
UsageLine string
|
UsageLine string
|
||||||
@ -93,6 +96,8 @@ var commands = []*Command{
|
|||||||
var logger = GetBeeLogger(os.Stdout)
|
var logger = GetBeeLogger(os.Stdout)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
currentpath, _ := os.Getwd()
|
||||||
|
|
||||||
flag.Usage = usage
|
flag.Usage = usage
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
log.SetFlags(0)
|
log.SetFlags(0)
|
||||||
@ -116,6 +121,17 @@ func main() {
|
|||||||
cmd.Flag.Parse(args[1:])
|
cmd.Flag.Parse(args[1:])
|
||||||
args = cmd.Flag.Args()
|
args = cmd.Flag.Args()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cmd.PreRun != nil {
|
||||||
|
cmd.PreRun(cmd, args)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if current directory is inside the GOPATH,
|
||||||
|
// if so parse the packages inside it.
|
||||||
|
if strings.Contains(currentpath, GetGOPATHs()[0]+"/src") {
|
||||||
|
parsePackagesFromDir(currentpath)
|
||||||
|
}
|
||||||
|
|
||||||
os.Exit(cmd.Run(cmd, args))
|
os.Exit(cmd.Run(cmd, args))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -142,7 +158,6 @@ Additional help topics:
|
|||||||
{{.Name | printf "%-11s"}} {{.Short}}{{end}}{{end}}
|
{{.Name | printf "%-11s"}} {{.Short}}{{end}}{{end}}
|
||||||
|
|
||||||
Use "bee help [topic]" for more information about that topic.
|
Use "bee help [topic]" for more information about that topic.
|
||||||
|
|
||||||
`
|
`
|
||||||
|
|
||||||
var helpTemplate = `{{if .Runnable}}usage: bee {{.UsageLine}}
|
var helpTemplate = `{{if .Runnable}}usage: bee {{.UsageLine}}
|
||||||
|
4
fix.go
4
fix.go
@ -23,12 +23,12 @@ bee fix help to upgrade the application to beego 1.6
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmdFix.Run = runFix
|
cmdFix.Run = runFix
|
||||||
|
cmdFix.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
}
|
}
|
||||||
|
|
||||||
func runFix(cmd *Command, args []string) int {
|
func runFix(cmd *Command, args []string) int {
|
||||||
ShowShortVersionBanner()
|
|
||||||
|
|
||||||
logger.Info("Upgrading the application...")
|
logger.Info("Upgrading the application...")
|
||||||
|
|
||||||
dir, err := os.Getwd()
|
dir, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatalf("Error while getting the current working directory: %s", err)
|
logger.Fatalf("Error while getting the current working directory: %s", err)
|
||||||
|
3
g.go
3
g.go
@ -69,6 +69,7 @@ var fields docValue
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmdGenerate.Run = generateCode
|
cmdGenerate.Run = generateCode
|
||||||
|
cmdGenerate.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
cmdGenerate.Flag.Var(&tables, "tables", "specify tables to generate model")
|
cmdGenerate.Flag.Var(&tables, "tables", "specify tables to generate model")
|
||||||
cmdGenerate.Flag.Var(&driver, "driver", "database driver: mysql, postgresql, etc.")
|
cmdGenerate.Flag.Var(&driver, "driver", "database driver: mysql, postgresql, etc.")
|
||||||
cmdGenerate.Flag.Var(&conn, "conn", "connection string used by the driver to connect to a database instance")
|
cmdGenerate.Flag.Var(&conn, "conn", "connection string used by the driver to connect to a database instance")
|
||||||
@ -77,8 +78,6 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func generateCode(cmd *Command, args []string) int {
|
func generateCode(cmd *Command, args []string) int {
|
||||||
ShowShortVersionBanner()
|
|
||||||
|
|
||||||
currpath, _ := os.Getwd()
|
currpath, _ := os.Getwd()
|
||||||
if len(args) < 1 {
|
if len(args) < 1 {
|
||||||
logger.Fatal("Command is missing")
|
logger.Fatal("Command is missing")
|
||||||
|
@ -80,9 +80,7 @@ func init() {
|
|||||||
importlist = make(map[string]string)
|
importlist = make(map[string]string)
|
||||||
controllerList = make(map[string]map[string]*swagger.Item)
|
controllerList = make(map[string]map[string]*swagger.Item)
|
||||||
modelsList = make(map[string]map[string]swagger.Schema)
|
modelsList = make(map[string]map[string]swagger.Schema)
|
||||||
curPath, _ := os.Getwd()
|
|
||||||
astPkgs = map[string]*ast.Package{}
|
astPkgs = map[string]*ast.Package{}
|
||||||
parsePackagesFromDir(curPath)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func parsePackagesFromDir(dirpath string) {
|
func parsePackagesFromDir(dirpath string) {
|
||||||
|
@ -298,14 +298,13 @@ var hproseAddFunctions = []string{}
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmdHproseapp.Run = createhprose
|
cmdHproseapp.Run = createhprose
|
||||||
|
cmdHproseapp.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
cmdHproseapp.Flag.Var(&tables, "tables", "specify tables to generate model")
|
cmdHproseapp.Flag.Var(&tables, "tables", "specify tables to generate model")
|
||||||
cmdHproseapp.Flag.Var(&driver, "driver", "database driver: mysql, postgresql, etc.")
|
cmdHproseapp.Flag.Var(&driver, "driver", "database driver: mysql, postgresql, etc.")
|
||||||
cmdHproseapp.Flag.Var(&conn, "conn", "connection string used by the driver to connect to a database instance")
|
cmdHproseapp.Flag.Var(&conn, "conn", "connection string used by the driver to connect to a database instance")
|
||||||
}
|
}
|
||||||
|
|
||||||
func createhprose(cmd *Command, args []string) int {
|
func createhprose(cmd *Command, args []string) int {
|
||||||
ShowShortVersionBanner()
|
|
||||||
|
|
||||||
w := NewColorWriter(os.Stdout)
|
w := NewColorWriter(os.Stdout)
|
||||||
|
|
||||||
curpath, _ := os.Getwd()
|
curpath, _ := os.Getwd()
|
||||||
|
@ -56,14 +56,13 @@ var mConn docValue
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmdMigrate.Run = runMigration
|
cmdMigrate.Run = runMigration
|
||||||
|
cmdMigrate.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
cmdMigrate.Flag.Var(&mDriver, "driver", "database driver: mysql, postgres, sqlite, etc.")
|
cmdMigrate.Flag.Var(&mDriver, "driver", "database driver: mysql, postgres, sqlite, etc.")
|
||||||
cmdMigrate.Flag.Var(&mConn, "conn", "connection string used by the driver to connect to a database instance")
|
cmdMigrate.Flag.Var(&mConn, "conn", "connection string used by the driver to connect to a database instance")
|
||||||
}
|
}
|
||||||
|
|
||||||
// runMigration is the entry point for starting a migration
|
// runMigration is the entry point for starting a migration
|
||||||
func runMigration(cmd *Command, args []string) int {
|
func runMigration(cmd *Command, args []string) int {
|
||||||
ShowShortVersionBanner()
|
|
||||||
|
|
||||||
currpath, _ := os.Getwd()
|
currpath, _ := os.Getwd()
|
||||||
|
|
||||||
gps := GetGOPATHs()
|
gps := GetGOPATHs()
|
||||||
|
14
new.go
14
new.go
@ -52,24 +52,24 @@ the following files/directories structure:
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmdNew.Run = createApp
|
cmdNew.Run = createApp
|
||||||
|
cmdNew.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
}
|
}
|
||||||
|
|
||||||
func createApp(cmd *Command, args []string) int {
|
func createApp(cmd *Command, args []string) int {
|
||||||
ShowShortVersionBanner()
|
|
||||||
w := NewColorWriter(os.Stdout)
|
w := NewColorWriter(os.Stdout)
|
||||||
|
|
||||||
if len(args) != 1 {
|
if len(args) != 1 {
|
||||||
logger.Error("Argument [appname] is missing")
|
logger.Fatal("Argument [appname] is missing")
|
||||||
os.Exit(2)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
apppath, packpath, err := checkEnv(args[0])
|
apppath, packpath, err := checkEnv(args[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
logger.Fatalf("%s", err)
|
||||||
os.Exit(2)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if isExist(apppath) {
|
if isExist(apppath) {
|
||||||
logger.Errorf("Path (%s) already exists", apppath)
|
logger.Errorf(bold("Application '%s' already exists"), apppath)
|
||||||
logger.Warn("Do you want to overwrite it? [Yes|No] ")
|
logger.Warn(bold("Do you want to overwrite it? [Yes|No] "))
|
||||||
if !askForConfirmation() {
|
if !askForConfirmation() {
|
||||||
os.Exit(2)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
|
7
pack.go
7
pack.go
@ -101,6 +101,7 @@ func init() {
|
|||||||
fs.BoolVar(&verbose, "v", false, "verbose")
|
fs.BoolVar(&verbose, "v", false, "verbose")
|
||||||
cmdPack.Flag = *fs
|
cmdPack.Flag = *fs
|
||||||
cmdPack.Run = packApp
|
cmdPack.Run = packApp
|
||||||
|
cmdPack.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
w = NewColorWriter(os.Stdout)
|
w = NewColorWriter(os.Stdout)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -449,8 +450,6 @@ func packDirectory(excludePrefix []string, excludeSuffix []string,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func packApp(cmd *Command, args []string) int {
|
func packApp(cmd *Command, args []string) int {
|
||||||
ShowShortVersionBanner()
|
|
||||||
|
|
||||||
curPath, _ := os.Getwd()
|
curPath, _ := os.Getwd()
|
||||||
thePath := ""
|
thePath := ""
|
||||||
|
|
||||||
@ -597,11 +596,13 @@ func packApp(cmd *Command, args []string) int {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.Infof("Writing to output: %s", outputP)
|
||||||
|
|
||||||
err = packDirectory(exp, exs, exr, tmpdir, thePath)
|
err = packDirectory(exp, exs, exr, tmpdir, thePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal(err.Error())
|
logger.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Infof("Writing to output: %s", outputP)
|
logger.Success("Application packed!")
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
3
run.go
3
run.go
@ -56,6 +56,7 @@ var (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmdRun.Run = runApp
|
cmdRun.Run = runApp
|
||||||
|
cmdRun.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
cmdRun.Flag.Var(&mainFiles, "main", "specify main go files")
|
cmdRun.Flag.Var(&mainFiles, "main", "specify main go files")
|
||||||
cmdRun.Flag.Var(&gendoc, "gendoc", "auto generate the docs")
|
cmdRun.Flag.Var(&gendoc, "gendoc", "auto generate the docs")
|
||||||
cmdRun.Flag.Var(&downdoc, "downdoc", "auto download swagger file when not exist")
|
cmdRun.Flag.Var(&downdoc, "downdoc", "auto download swagger file when not exist")
|
||||||
@ -67,8 +68,6 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func runApp(cmd *Command, args []string) int {
|
func runApp(cmd *Command, args []string) int {
|
||||||
ShowShortVersionBanner()
|
|
||||||
|
|
||||||
if len(args) == 0 || args[0] == "watchall" {
|
if len(args) == 0 || args[0] == "watchall" {
|
||||||
currpath, _ = os.Getwd()
|
currpath, _ = os.Getwd()
|
||||||
|
|
||||||
|
@ -53,6 +53,7 @@ var docport docValue
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmdRundocs.Run = runDocs
|
cmdRundocs.Run = runDocs
|
||||||
|
cmdRundocs.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
cmdRundocs.Flag.Var(&isDownload, "isDownload", "weather download the Swagger Docs")
|
cmdRundocs.Flag.Var(&isDownload, "isDownload", "weather download the Swagger Docs")
|
||||||
cmdRundocs.Flag.Var(&docport, "docport", "doc server port")
|
cmdRundocs.Flag.Var(&docport, "docport", "doc server port")
|
||||||
}
|
}
|
||||||
|
1
test.go
1
test.go
@ -31,6 +31,7 @@ var cmdTest = &Command{
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmdTest.Run = testApp
|
cmdTest.Run = testApp
|
||||||
|
cmdTest.PreRun = func(cmd *Command, args []string) { ShowShortVersionBanner() }
|
||||||
}
|
}
|
||||||
|
|
||||||
func safePathAppend(arr []string, paths ...string) []string {
|
func safePathAppend(arr []string, paths ...string) []string {
|
||||||
|
Loading…
Reference in New Issue
Block a user