mirror of https://github.com/beego/bee.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
1.7 KiB
88 lines
1.7 KiB
package main |
|
|
|
import ( |
|
"bufio" |
|
"fmt" |
|
"io" |
|
"log" |
|
"os" |
|
"os/exec" |
|
path "path/filepath" |
|
"regexp" |
|
) |
|
|
|
var cmdVersion = &Command{ |
|
UsageLine: "version", |
|
Short: "show the Bee, Beego and Go version", |
|
Long: ` |
|
show the Bee, Beego and Go version |
|
|
|
bee version |
|
bee :1.2.3 |
|
beego :1.4.2 |
|
Go :go version go1.3.3 linux/amd64 |
|
|
|
`, |
|
} |
|
|
|
func init() { |
|
cmdVersion.Run = versionCmd |
|
} |
|
|
|
func versionCmd(cmd *Command, args []string) int { |
|
fmt.Println("bee :" + version) |
|
fmt.Println("beego :" + getbeegoVersion()) |
|
//fmt.Println("Go :" + runtime.Version()) |
|
goversion, err := exec.Command("go", "version").Output() |
|
if err != nil { |
|
log.Fatal(err) |
|
} |
|
fmt.Println("Go :" + string(goversion)) |
|
return 0 |
|
} |
|
|
|
func getbeegoVersion() string { |
|
gopath := os.Getenv("GOPATH") |
|
re, err := regexp.Compile(`const VERSION = "([0-9.]+)"`) |
|
if err != nil { |
|
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] |
|
} |
|
} |
|
|
|
} |
|
return "you don't install beego,install first: github.com/astaxie/beego" |
|
}
|
|
|