add ignore suffix of the listener file

This commit is contained in:
ehlxr 2020-11-10 17:13:49 +08:00
parent da54305188
commit 8dc1ebe6d9
6 changed files with 30 additions and 4 deletions

View File

@ -95,6 +95,11 @@ monitor:
# .* 所有的文件更改都会执行 command 中的命令 # .* 所有的文件更改都会执行 command 中的命令
types: types:
- .go - .go
# 不监听文件的格式,此类文件更改不会执行 command 中的命令
# .DS_Store 后缀为 .DS_Store 的文件更改,不会执行 command 中的命令
types:
- .DS_Store
# 监听的事件类型,发生此类事件才执行 command 中的命令 # 监听的事件类型,发生此类事件才执行 command 中的命令
# 没有该配置默认监听所有事件 # 没有该配置默认监听所有事件

View File

@ -92,6 +92,11 @@ monitor:
# .* all file changes execute commands in the command # .* all file changes execute commands in the command
types: types:
- .go - .go
# ignore the suffix of the listener file, which changes the file not to execute commands
# .DS_Store file changes suffixed with .go not execute commands
types:
- .DS_Store
# the type of event to listen to. Only when such an event occurs can the command in command be executed # the type of event to listen to. Only when such an event occurs can the command in command be executed
# without this configuration, all events will be monitored by default # without this configuration, all events will be monitored by default

View File

@ -72,6 +72,7 @@ func parseConfig() {
} }
// init map // init map
cfg.Monitor.TypesMap = map[string]bool{} cfg.Monitor.TypesMap = map[string]bool{}
cfg.Monitor.ExceptTypesMap = map[string]bool{}
cfg.Monitor.IncludeDirsMap = map[string]bool{} cfg.Monitor.IncludeDirsMap = map[string]bool{}
cfg.Monitor.ExceptDirsMap = map[string]bool{} cfg.Monitor.ExceptDirsMap = map[string]bool{}
cfg.Monitor.IncludeDirsRec = map[string]bool{} cfg.Monitor.IncludeDirsRec = map[string]bool{}
@ -83,6 +84,9 @@ func parseConfig() {
for _, v := range cfg.Instruction { for _, v := range cfg.Instruction {
cfg.InstructionMap[v] = true cfg.InstructionMap[v] = true
} }
for _, v := range cfg.Monitor.ExceptTypes {
cfg.Monitor.ExceptTypesMap[v] = true
}
log.Printf("%+v", cfg) log.Printf("%+v", cfg)
} }
@ -92,8 +96,13 @@ func eventDispatcher(event fsnotify.Event) {
} }
ext := path.Ext(event.Name) ext := path.Ext(event.Name)
if len(cfg.Monitor.Types) > 0 && if len(cfg.Monitor.Types) > 0 &&
!keyInMonitorTypesMap(".*", cfg) && !keyInMonitorTypesMap(".*", cfg.Monitor.TypesMap) &&
!keyInMonitorTypesMap(ext, cfg) { !keyInMonitorTypesMap(ext, cfg.Monitor.TypesMap) {
return
}
if len(cfg.Monitor.ExceptTypes) > 0 &&
keyInMonitorTypesMap(ext, cfg.Monitor.ExceptTypesMap) {
return return
} }

View File

@ -6,11 +6,13 @@ type FileGirl struct {
} }
Monitor struct { Monitor struct {
Types []string `yaml:"types"` Types []string `yaml:"types"`
ExceptTypes []string `yaml:"exceptTypes"`
IncludeDirs []string `yaml:"includeDirs"` IncludeDirs []string `yaml:"includeDirs"`
ExceptDirs []string `yaml:"exceptDirs"` ExceptDirs []string `yaml:"exceptDirs"`
Events []string `yaml:"events"` Events []string `yaml:"events"`
// convert to // convert to
TypesMap map[string]bool `yaml:"-"` TypesMap map[string]bool `yaml:"-"`
ExceptTypesMap map[string]bool `yaml:"-"`
IncludeDirsMap map[string]bool `yaml:"-"` IncludeDirsMap map[string]bool `yaml:"-"`
ExceptDirsMap map[string]bool `yaml:"-"` ExceptDirsMap map[string]bool `yaml:"-"`
DirsMap map[string]bool `yaml:"-"` DirsMap map[string]bool `yaml:"-"`

5
raw.go
View File

@ -31,6 +31,11 @@ monitor:
# .* 所有的文件更改都会执行 command 中的命令 # .* 所有的文件更改都会执行 command 中的命令
types: types:
- .go - .go
# 不监听文件的格式此类文件更改不会执行 command 中的命令
# .DS_Store 后缀为 .DS_Store 的文件更改不会执行 command 中的命令
types:
- .DS_Store
# 监听的事件类型发生此类事件才执行 command 中的命令 # 监听的事件类型发生此类事件才执行 command 中的命令
# 没有该配置默认监听所有事件 # 没有该配置默认监听所有事件

View File

@ -8,8 +8,8 @@ import (
"strings" "strings"
) )
func keyInMonitorTypesMap(k string, cfg *FileGirl) bool { func keyInMonitorTypesMap(k string, maps map[string]bool) bool {
_, ok := cfg.Monitor.TypesMap[k] _, ok := maps[k]
return ok return ok
} }