now bee run can specify main files

This commit is contained in:
slene 2014-02-22 01:51:18 +08:00
parent 1a352bc6b3
commit 7da30d1b35
3 changed files with 23 additions and 9 deletions

16
run.go
View File

@ -23,7 +23,7 @@ import (
)
var cmdRun = &Command{
UsageLine: "run [appname] [watchall]",
UsageLine: "run [appname] [watchall] [-main=*.go]",
Short: "run the app which can hot compile",
Long: `
start the appname throw exec.Command
@ -44,8 +44,11 @@ when the file has changed bee will auto go build and restart the app
`,
}
var mainFiles ListOpts
func init() {
cmdRun.Run = runApp
cmdRun.Flag.Var(&mainFiles, "main", "specify main go files")
}
var appname string
@ -89,8 +92,15 @@ func runApp(cmd *Command, args []string) {
paths = append(paths, strings.Replace(p, "$GOPATH", gopath, -1))
}
NewWatcher(paths)
Autobuild()
files := []string{}
for _, arg := range mainFiles {
if len(arg) > 0 {
files = append(files, arg)
}
}
NewWatcher(paths, files)
Autobuild(files)
for {
select {
case <-exit:

View File

@ -71,9 +71,9 @@ func testApp(cmd *Command, args []string) {
// and ignore non-go files.
paths = append(paths, conf.DirStruct.Others...)
NewWatcher(paths)
NewWatcher(paths, nil)
appname = args[0]
Autobuild()
Autobuild(nil)
for {
select {
case <-started:

View File

@ -34,7 +34,7 @@ var (
buildPeriod time.Time
)
func NewWatcher(paths []string) {
func NewWatcher(paths []string, files []string) {
watcher, err := fsnotify.NewWatcher()
if err != nil {
ColorLog("[ERRO] Fail to create new Watcher[ %s ]\n", err)
@ -71,7 +71,7 @@ func NewWatcher(paths []string) {
if isbuild {
ColorLog("[EVEN] %s\n", e)
go Autobuild()
go Autobuild(files)
}
case err := <-watcher.Error:
ColorLog("[WARN] %s\n", err.Error()) // No need to exit here
@ -110,7 +110,7 @@ func getFileModTime(path string) int64 {
return fi.ModTime().Unix()
}
func Autobuild() {
func Autobuild(files []string) {
state.Lock()
defer state.Unlock()
@ -154,7 +154,11 @@ func Autobuild() {
appName += ".exe"
}
bcmd := exec.Command(cmdName, "build")
args := []string{"build"}
args = append(args, "-o", appName)
args = append(args, files...)
bcmd := exec.Command(cmdName, args...)
bcmd.Stdout = os.Stdout
bcmd.Stderr = os.Stderr
err = bcmd.Run()