From 86cf40564b3c56b3f867745feeadb936befc76be Mon Sep 17 00:00:00 2001 From: dengsgo Date: Sun, 23 Aug 2020 16:17:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=89=AB=E6=8F=8F=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fileboy.go | 24 +++++++----------------- util.go | 13 +++++++++++++ 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/fileboy.go b/fileboy.go index 496c1e2..bb57f5c 100644 --- a/fileboy.go +++ b/fileboy.go @@ -113,6 +113,11 @@ func eventDispatcher(event fsnotify.Event) { func addWatcher() { logInfo("collecting directory information...") dirsMap := map[string]bool{} + for _, dir := range cfg.Monitor.ExceptDirs { + if dir == "." { + logAndExit("exceptDirs must is not project root path ! err path:", dir) + } + } for _, dir := range cfg.Monitor.IncludeDirs { darr := dirParse2Array(dir) if len(darr) < 1 || len(darr) > 2 { @@ -147,16 +152,7 @@ func addWatcher() { } } - for _, dir := range cfg.Monitor.ExceptDirs { - if dir == "." { - logAndExit("exceptDirs must is not project root path ! err path:", dir) - } - p := projectFolder + "/" + dir - delete(dirsMap, p) - listFile(p, func(d string) { - delete(dirsMap, d) - }) - } + for dir := range dirsMap { logInfo("watcher add -> ", dir) err := watcher.Add(dir) @@ -224,13 +220,7 @@ func watchChangeHandler(event fsnotify.Event) { continue } // check exceptDirs - has := false - for _, v := range cfg.Monitor.ExceptDirs { - if strings.HasPrefix(event.Name, projectFolder+"/"+v) { - has = true - } - } - if has { + if hitDirs(event.Name, &cfg.Monitor.ExceptDirs) { continue } diff --git a/util.go b/util.go index 40ddb48..6649d3d 100644 --- a/util.go +++ b/util.go @@ -53,11 +53,24 @@ func dirParse2Array(s string) []string { return r } +func hitDirs(d string, dirs *[]string) bool { + d += "/" + for _, v := range *dirs { + if strings.HasPrefix(d, projectFolder+"/"+v+"/") { + return true + } + } + return false +} + func listFile(folder string, fun func(string)) { files, _ := ioutil.ReadDir(folder) for _, file := range files { if file.IsDir() { d := folder + "/" + file.Name() + if hitDirs(d, &cfg.Monitor.ExceptDirs) { + continue + } fun(d) listFile(d, fun) }