Skip to content

Commit 0d80836

Browse files
author
Lee Fernandes
committed
watch multiple directories
1 parent 0244380 commit 0d80836

File tree

350 files changed

+241287
-26
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

350 files changed

+241287
-26
lines changed

Gopkg.lock

Lines changed: 52 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Gopkg.toml example
2+
#
3+
# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
4+
# for detailed Gopkg.toml documentation.
5+
#
6+
# required = ["github.com/user/thing/cmd/thing"]
7+
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
8+
#
9+
# [[constraint]]
10+
# name = "github.com/user/project"
11+
# version = "1.0.0"
12+
#
13+
# [[constraint]]
14+
# name = "github.com/user/project2"
15+
# branch = "dev"
16+
# source = "github.com/myfork/project2"
17+
#
18+
# [[override]]
19+
# name = "github.com/x/y"
20+
# version = "2.4.0"
21+
#
22+
# [prune]
23+
# non-go = false
24+
# go-tests = true
25+
# unused-packages = true
26+
27+
28+
[[constraint]]
29+
name = "github.com/fatih/color"
30+
version = "1.7.0"
31+
32+
[[constraint]]
33+
name = "github.com/fsnotify/fsnotify"
34+
version = "1.4.7"
35+
36+
[prune]
37+
go-tests = true
38+
unused-packages = true

daemon.go

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,12 @@ func (g *globList) Matches(value string) bool {
107107
}
108108

109109
var (
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) {
231231
func 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

364364
func 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)

vendor/github.com/fatih/color/.travis.yml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/fatih/color/Gopkg.lock

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/fatih/color/Gopkg.toml

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/fatih/color/LICENSE.md

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)