From 7da30d1b35ac5ccce256b78cf5d983cb443f62c1 Mon Sep 17 00:00:00 2001 From: slene Date: Sat, 22 Feb 2014 01:51:18 +0800 Subject: [PATCH] now bee run can specify main files --- run.go | 16 +++++++++++++--- test.go | 4 ++-- watch.go | 12 ++++++++---- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/run.go b/run.go index 2ef319b..c992652 100644 --- a/run.go +++ b/run.go @@ -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: diff --git a/test.go b/test.go index 1377bf2..08c33bd 100644 --- a/test.go +++ b/test.go @@ -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: diff --git a/watch.go b/watch.go index e03ce48..d047bb8 100644 --- a/watch.go +++ b/watch.go @@ -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()