2014-05-16 17:37:45 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2014-05-22 02:35:37 +00:00
|
|
|
"bufio"
|
2014-05-16 17:37:45 +00:00
|
|
|
"fmt"
|
2014-05-22 02:35:37 +00:00
|
|
|
"io"
|
|
|
|
"os"
|
|
|
|
path "path/filepath"
|
|
|
|
"regexp"
|
|
|
|
"runtime"
|
2014-05-16 17:37:45 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var cmdVersion = &Command{
|
|
|
|
UsageLine: "version",
|
|
|
|
Short: "show the bee & beego version",
|
|
|
|
Long: `
|
|
|
|
show the bee & beego version
|
|
|
|
|
|
|
|
bee version
|
|
|
|
bee: 1.1.1
|
|
|
|
beego: 1.2
|
|
|
|
`,
|
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
cmdVersion.Run = versionCmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func versionCmd(cmd *Command, args []string) {
|
2014-05-16 17:53:42 +00:00
|
|
|
fmt.Println("bee :" + version)
|
2014-05-22 02:35:37 +00:00
|
|
|
fmt.Println("beego :" + getbeegoVersion())
|
|
|
|
fmt.Println("Go :" + runtime.Version())
|
|
|
|
}
|
|
|
|
|
|
|
|
func getbeegoVersion() string {
|
|
|
|
gopath := os.Getenv("GOPATH")
|
|
|
|
re, err := regexp.Compile(`const VERSION = "([0-9.]+)"`)
|
2014-05-16 17:53:42 +00:00
|
|
|
if err != nil {
|
2014-05-22 02:35:37 +00:00
|
|
|
return ""
|
|
|
|
}
|
|
|
|
if gopath == "" {
|
|
|
|
err = fmt.Errorf("you should set GOPATH in the env")
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
wgopath := path.SplitList(gopath)
|
|
|
|
for _, wg := range wgopath {
|
|
|
|
wg, _ = path.EvalSymlinks(path.Join(wg, "src", "github.com", "astaxie", "beego"))
|
|
|
|
filename := path.Join(wg, "beego.go")
|
|
|
|
_, err := os.Stat(filename)
|
|
|
|
if err != nil {
|
|
|
|
if os.IsNotExist(err) {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
ColorLog("[ERRO] get beego.go has error\n")
|
|
|
|
}
|
|
|
|
fd, err := os.Open(filename)
|
|
|
|
if err != nil {
|
|
|
|
ColorLog("[ERRO] open beego.go has error\n")
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
reader := bufio.NewReader(fd)
|
|
|
|
for {
|
|
|
|
byteLine, _, er := reader.ReadLine()
|
|
|
|
if er != nil && er != io.EOF {
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
if er == io.EOF {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
line := string(byteLine)
|
|
|
|
s := re.FindStringSubmatch(line)
|
|
|
|
if len(s) >= 2 {
|
|
|
|
return s[1]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-05-16 17:53:42 +00:00
|
|
|
}
|
2014-05-22 02:35:37 +00:00
|
|
|
return "you don't install beego,install first: github.com/astaxie/beego"
|
2014-05-16 17:37:45 +00:00
|
|
|
}
|