@@ -107,13 +107,12 @@ func (g *globList) Matches(value string) bool {
107107}
108108
109109var (
110- flag_directory = flag .String ("directory" , "." , "Directory to watch for changes" )
111110 flag_pattern = flag .String ("pattern" , FilePattern , "Pattern of watched files" )
112111 flag_command = flag .String ("command" , "" , "Command to run and restart after build" )
113112 flag_command_stop = flag .Bool ("command-stop" , false , "Stop command before building" )
114113 flag_recursive = flag .Bool ("recursive" , true , "Watch all dirs. recursively" )
115114 flag_build = flag .String ("build" , "go build" , "Command to rebuild after changes" )
116- flag_build_dir = flag .String ("build-dir" , "" , "Directory to run build command in. Defaults to directory" )
115+ flag_build_dir = flag .String ("build-dir" , "" , "Directory to run build command in. Defaults to first directory" )
117116 flag_run_dir = flag .String ("run-dir" , "" , "Directory to run command in. Defaults to directory" )
118117 flag_color = flag .Bool ("color" , false , "Colorize output for CompileDaemon status messages" )
119118 flag_logprefix = flag .Bool ("log-prefix" , true , "Print log timestamps and subprocess stderr/stdout output" )
@@ -122,6 +121,7 @@ var (
122121 flag_verbose = flag .Bool ("verbose" , false , "Be verbose about which directories are watched." )
123122
124123 // initialized in main() due to custom type.
124+ flag_directories globList
125125 flag_excludedDirs globList
126126 flag_excludedFiles globList
127127 flag_includedFiles globList
@@ -157,8 +157,8 @@ func build() bool {
157157
158158 if * flag_build_dir != "" {
159159 cmd .Dir = * flag_build_dir
160- } else {
161- cmd .Dir = * flag_directory
160+ } else if len ( flag_directories ) > 0 {
161+ cmd .Dir = flag_directories [ 0 ]
162162 }
163163
164164 output , err := cmd .CombinedOutput ()
@@ -231,7 +231,7 @@ func logger(pipeChan <-chan io.ReadCloser) {
231231func startCommand (command string ) (cmd * exec.Cmd , stdout io.ReadCloser , stderr io.ReadCloser , err error ) {
232232 args := strings .Split (command , " " )
233233 cmd = exec .Command (args [0 ], args [1 :]... )
234-
234+
235235 if * flag_run_dir != "" {
236236 cmd .Dir = * flag_run_dir
237237 }
@@ -362,6 +362,7 @@ func flusher(buildStarted <-chan string, buildSuccess <-chan bool) {
362362}
363363
364364func main () {
365+ flag .Var (& flag_directories , "directory" , "Directories to watch for changes" )
365366 flag .Var (& flag_excludedDirs , "exclude-dir" , " Don't watch directories matching this name" )
366367 flag .Var (& flag_excludedFiles , "exclude" , " Don't watch files matching this name" )
367368 flag .Var (& flag_includedFiles , "include" , " Watch files matching this name" )
@@ -372,7 +373,7 @@ func main() {
372373 log .SetFlags (0 )
373374 }
374375
375- if * flag_directory == "" {
376+ if len ( flag_directories ) == 0 {
376377 fmt .Fprintf (os .Stderr , "-directory=... is required.\n " )
377378 os .Exit (1 )
378379 }
@@ -389,33 +390,36 @@ func main() {
389390
390391 defer watcher .Close ()
391392
392- if * flag_recursive == true {
393- err = filepath .Walk (* flag_directory , func (path string , info os.FileInfo , err error ) error {
394- if err == nil && info .IsDir () {
395- if flag_excludedDirs .Matches (path ) {
396- return filepath .SkipDir
397- } else {
398- if * flag_verbose {
399- log .Printf ("Watching directory '%s' for changes.\n " , path )
393+ for _ , flag_directory := range flag_directories {
394+ if * flag_recursive == true {
395+ err = filepath .Walk (flag_directory , func (path string , info os.FileInfo , err error ) error {
396+ if err == nil && info .IsDir () {
397+ if flag_excludedDirs .Matches (path ) {
398+ return filepath .SkipDir
399+ } else {
400+ if * flag_verbose {
401+ log .Printf ("Watching directory '%s' for changes.\n " , path )
402+ }
403+ return watcher .Add (path )
400404 }
401- return watcher .Add (path )
402405 }
406+ return err
407+ })
408+
409+ if err != nil {
410+ log .Fatal ("filepath.Walk():" , err )
403411 }
404- return err
405- })
406412
407- if err != nil {
408- log .Fatal ("filepath.Walk ():" , err )
409- }
413+ if err := watcher . Add ( flag_directory ); err != nil {
414+ log .Fatal ("watcher.Add ():" , err )
415+ }
410416
411- if err := watcher .Add (* flag_directory ); err != nil {
412- log .Fatal ("watcher.Add():" , err )
417+ } else {
418+ if err := watcher .Add (flag_directory ); err != nil {
419+ log .Fatal ("watcher.Add():" , err )
420+ }
413421 }
414422
415- } else {
416- if err := watcher .Add (* flag_directory ); err != nil {
417- log .Fatal ("watcher.Add():" , err )
418- }
419423 }
420424
421425 pattern := regexp .MustCompile (* flag_pattern )
0 commit comments