本文整理汇总了Golang中github.com/go-fsnotify/fsnotify.NewWatcher函数的典型用法代码示例。如果您正苦于以下问题:Golang NewWatcher函数的具体用法?Golang NewWatcher怎么用?Golang NewWatcher使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewWatcher函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Init
// Init ensures the internal state of the watcher is properly initialized
func (w *Watcher) Init() (err error) {
if w.inited {
return nil
}
w.fs, err = fsnotify.NewWatcher()
if err != nil {
return
}
stat, err := os.Stat(w.Dir)
if err != nil {
return
}
if !stat.IsDir() {
err = fmt.Errorf("%s is not a directory", w.Dir)
return
}
w.changes = make(chan string, 100)
w.done = make(chan bool, 1)
w.pending = make(map[string]bool)
w.inited = true
return
}
开发者ID:nullstyle,项目名称:mcdev,代码行数:27,代码来源:watcher.go
示例2: watcher
func (h *handler) watcher(f string) {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
done := make(chan bool)
go func() {
for {
select {
case event := <-watcher.Events:
log.Println("event:", event)
if event.Op&fsnotify.Write == fsnotify.Write {
log.Println("modified file:", event.Name)
h.c <- true
}
case err := <-watcher.Errors:
log.Println("error:", err)
}
}
}()
err = watcher.Add(f)
if err != nil {
log.Fatal(err)
}
<-done
}
开发者ID:highway900,项目名称:sigh,代码行数:29,代码来源:main.go
示例3: WatchDir
// WatchDir watches a directory and execute callback on any changes.
func (b *Base) WatchDir(path string, callback func() error) error {
watcher, err := fsnotify.NewWatcher()
if err != nil {
return err
}
defer watcher.Close()
err = watcher.Add(path)
if err != nil {
return err
}
for {
select {
case event := <-watcher.Events:
if (event.Op&fsnotify.Create == fsnotify.Create) || (event.Op&fsnotify.Remove == fsnotify.Remove) || (event.Op&fsnotify.Write == fsnotify.Write) || (event.Op&fsnotify.Rename == fsnotify.Rename) {
logrus.WithFields(logrus.Fields{
"Path": path,
"Event": event.String(),
}).Info("Changes happened, executing callback")
callback()
}
case err := <-watcher.Errors:
if err != nil {
logrus.WithFields(logrus.Fields{
"Error": err.Error(),
"Path": path,
}).Error("Error while watching path")
}
}
}
return nil
}
开发者ID:simudream,项目名称:resourced,代码行数:36,代码来源:base.go
示例4: RunWatcher
// watch file change
func RunWatcher(path string) {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
done := make(chan bool)
go func() {
for {
select {
case event := <-watcher.Events:
if event.Op&fsnotify.Write == fsnotify.Write {
log.Printf("file modified:" + event.Name)
LoadDict()
}
case err := <-watcher.Errors:
log.Fatal(err)
}
}
}()
err = watcher.Add(path)
if err != nil {
log.Fatal(err)
}
<-done
}
开发者ID:henryluki,项目名称:word_filter,代码行数:29,代码来源:loader.go
示例5: main
func main() {
file := "file.txt"
r := gin.Default()
m := melody.New()
w, _ := fsnotify.NewWatcher()
r.GET("/", func(c *gin.Context) {
http.ServeFile(c.Writer, c.Request, "index.html")
})
r.GET("/ws", func(c *gin.Context) {
m.HandleRequest(c.Writer, c.Request)
})
m.HandleConnect(func(s *melody.Session) {
content, _ := ioutil.ReadFile(file)
s.Write(content)
})
go func() {
for {
ev := <-w.Events
if ev.Op == fsnotify.Write {
content, _ := ioutil.ReadFile(ev.Name)
m.Broadcast(content)
}
}
}()
w.Add(file)
r.Run(":5000")
}
开发者ID:wuwenbao,项目名称:melody,代码行数:34,代码来源:main.go
示例6: init
func init() {
// in snappy, we default to using the snappy data path
snappDataPath := os.Getenv("SNAPP_APP_DATA_PATH")
if snappDataPath != "" {
dataPath = snappDataPath
}
MustRefresh()
if Bool(false, "dumpConfig") {
spew.Dump(GetAll(false))
}
go func() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
panic("Failed to create watcher: " + err.Error())
}
watcher.Add(dataPath + "/etc/opt/ninja")
for {
select {
case ev := <-watcher.Events:
log.Infof("Config updated: %s", ev.Name)
MustRefresh()
case err := <-watcher.Errors:
log.Warningf("Config Watcher error: %s", err)
}
}
}()
}
开发者ID:kpernyer,项目名称:go-ninja,代码行数:33,代码来源:config.go
示例7: Watch
func Watch() {
watcher, _ = fsnotify.NewWatcher()
// Listen watched file change event
go func() {
for {
select {
case event := <-watcher.Events:
if event.Op == fsnotify.Write {
// Handle when file change
Build()
}
case err := <-watcher.Errors:
Log(err.Error())
}
}
}()
var dirs = []string{"source"}
for _, source := range dirs {
dirPath := filepath.Join(rootPath, source)
filepath.Walk(dirPath, func(path string, f os.FileInfo, err error) error {
if f.IsDir() {
// Defer watcher.Close()
if err := watcher.Add(path); err != nil {
Log(err.Error())
}
}
return nil
})
}
}
开发者ID:andywxl,项目名称:ink,代码行数:30,代码来源:main.go
示例8: main
func main() {
watchr, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
stopChannel := make(chan os.Signal, 1)
wd, err := os.Getwd()
if err != nil {
log.Fatal(err)
}
log.Printf("watching directory %s \n", wd)
err = watchr.Add(wd)
if err != nil {
log.Fatal(err)
}
signal.Notify(stopChannel, syscall.SIGINT, syscall.SIGTERM)
for {
select {
case ev := <-watchr.Events:
log.Println("event: ", ev)
case err := <-watchr.Errors:
log.Println("error: ", err)
case <-stopChannel:
log.Println("Exiting...")
watchr.Close()
os.Exit(1)
}
}
}
开发者ID:interactiv,项目名称:live-server,代码行数:31,代码来源:live-server.go
示例9: ExampleNewWatcher
func ExampleNewWatcher() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
done := make(chan bool)
go func() {
for {
select {
case event := <-watcher.Events:
log.Println("event:", event)
if event.Op&fsnotify.Write == fsnotify.Write {
log.Println("modified file:", event.Name)
}
case err := <-watcher.Errors:
log.Println("error:", err)
}
}
}()
err = watcher.Add("/tmp/foo")
if err != nil {
log.Fatal(err)
}
<-done
}
开发者ID:CyCoreSystems,项目名称:coreos-kubernetes,代码行数:28,代码来源:example_test.go
示例10: ExampleNewWatcher
func ExampleNewWatcher() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
done := make(chan bool)
go func() {
for {
select {
case event := <-watcher.Events:
if event.Op&fsnotify.Create == fsnotify.Create {
log.Println("added file:", event.Name)
SortDates()
}
case err := <-watcher.Errors:
log.Println("error:", err)
}
}
}()
err = watcher.Add("/Users/dhafer/camera")
if err != nil {
log.Fatal(err)
}
<-done
}
开发者ID:dillonhafer,项目名称:watcher,代码行数:28,代码来源:main.go
示例11: main
func main() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
done := make(chan bool, 1)
go func() {
for {
select {
case event := <-watcher.Events:
// fmt.Println("event:", event)
if event.Op&fsnotify.Write == fsnotify.Write {
log.Println("modified file:", event.Name)
}
case err := <-watcher.Errors:
log.Println("error:", err)
}
}
}()
path, _ := os.Getwd()
err = watcher.Add(path)
if err != nil {
log.Fatal(err)
}
<-done
}
开发者ID:zchee,项目名称:go-sandbox,代码行数:29,代码来源:go-fsnotify_sample.go
示例12: startWatcher
func startWatcher() synchronization {
w, err := fsnotify.NewWatcher()
if err != nil {
log.Fatalf("Could not create watcher: %v", err)
}
stop := make(chan struct{})
newBin := make(chan struct{})
go func() {
Loop:
for {
select {
case evt := <-w.Events:
if evt.Op&fsnotify.Create == fsnotify.Create {
log.Printf("New binary found. Preparing to shutdown.")
close(newBin)
}
case err := <-w.Errors:
log.Fatalf("File watcher error occurred: %v", err)
case <-stop:
w.Close()
break Loop
}
}
}()
w.Add(config.watchDir)
return synchronization{newBinary: newBin, stopWatcher: stop}
}
开发者ID:yiwang88,项目名称:goazure,代码行数:30,代码来源:main.go
示例13: fileWatcher
func fileWatcher(ch chan string) {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
err = watcher.Add(filepath.Dir(targetFileName))
if err != nil {
log.Fatal(err)
}
for {
select {
case event := <-watcher.Events:
if event.Name != targetFileName {
continue
}
if event.Op&fsnotify.Write != fsnotify.Write &&
event.Op&fsnotify.Create != fsnotify.Create {
continue
}
log.Println("modified file:", event, event.Name)
output, _ := getContentString(event.Name)
ch <- output
case err := <-watcher.Errors:
log.Println("error:", err)
}
}
}
开发者ID:hhatto,项目名称:ftcat,代码行数:29,代码来源:main.go
示例14: newWatcher
func newWatcher(a *Aster) (*Watcher, error) {
fsw, err := fsnotify.NewWatcher()
if err != nil {
return nil, err
}
err = filepath.Walk(".", func(path string, fi os.FileInfo, err error) error {
if err != nil || !fi.IsDir() {
return err
}
if a.ignore.Match(path) {
return filepath.SkipDir
}
return fsw.Add(path)
})
if err != nil {
fsw.Close()
return nil, err
}
w := &Watcher{
Watcher: fsw,
a: a,
quit: make(chan struct{}),
}
return w, nil
}
开发者ID:hattya,项目名称:aster,代码行数:25,代码来源:watcher.go
示例15: runViewWatcher
func runViewWatcher(views map[string]*template.Template, funcMap template.FuncMap) {
viewWatcher, err := fsnotify.NewWatcher()
if err != nil {
panic(err)
}
viewWatcher.Add("views")
go func() {
for {
select {
case ev := <-viewWatcher.Events:
if ev.Op&fsnotify.Write != fsnotify.Write && ev.Op&fsnotify.Chmod != fsnotify.Chmod {
break
}
filename := strings.SplitN(ev.Name, "/", 2)[1]
for templatesName, _ := range views {
for _, name := range strings.Split(templatesName, ",") {
if name == filename {
updateTemplate(templatesName, views, funcMap)
break
}
}
}
case err := <-viewWatcher.Errors:
log.Printf("view watcher error: %s\n", err)
}
}
}()
}
开发者ID:aoyama-nanami,项目名称:vitali,代码行数:29,代码来源:vitali.go
示例16: NewUFile
// NewUFile 新建文件加载器
// basePath 本地文件的基本路径
// checkInterval 网络文件的最小检测间隔
func NewUFile(basePath string, checkInterval time.Duration) (*UFile, error) {
basePath = strings.TrimSpace(basePath)
if basePath == "" {
basePath = "."
}
basePath, err := filepath.Abs(basePath)
if err != nil {
return nil, err
}
watcher, err := fsnotify.NewWatcher()
if err != nil {
return nil, err
}
uf := UFile{
basePath: basePath,
dirs: make(map[string]int),
files: make(map[string]*uFile),
watcher: watcher,
checkInterval: checkInterval,
ResChan: make(chan *Res, 2),
httpLoopAddChan: make(chan int, 1),
httpLoopSleepTimer: time.NewTicker(checkInterval),
}
go uf.loop()
return &uf, nil
}
开发者ID:dheminsgi,项目名称:TcpRoute2,代码行数:34,代码来源:ufile.go
示例17: startWatching
func startWatching() {
if inProduction {
return
}
watcher, err := fsnotify.NewWatcher()
if err != nil {
fmt.Printf("fsnotify.NewWather() failed with %s\n", err)
return
}
go watchChanges(watcher)
dirs := store.GetDirsToWatch()
dirs = append(dirs, "blog_posts")
for _, dir := range dirs {
err = watcher.Add(dir)
if err != nil {
fmt.Printf("watcher.Add() for %s failed with %s\n", dir, err)
return
} else {
//fmt.Printf("added watching for dir %s\n", dir)
}
}
//watcher.Close()
}
开发者ID:WMAT01,项目名称:web-blog,代码行数:25,代码来源:handler_ws.go
示例18: NewWatcher
func NewWatcher(paths ...string) (changesChan chan string) {
changesChan = make(chan string)
doneCount := uint64(0)
doneChan := make(chan bool)
for _, p := range paths {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Printf("watcher for %q: err %v\n", p, err)
continue
}
err = watcher.Add(p)
if err != nil {
log.Printf("%q error: %v\n", p, err)
watcher.Close()
continue
}
doneCount += 1
go func(w *fsnotify.Watcher, done chan bool) {
defer w.Close()
for {
select {
case event := <-w.Events:
mask := event.Op
if create(mask) || write(mask) || delete(mask) {
changesChan <- event.Name
}
case err := <-w.Errors:
if err != nil {
log.Println("error:", err)
}
default:
continue
}
}
done <- true
}(watcher, doneChan)
}
go func(done chan bool, n uint64) {
fmt.Println("n", n)
for i := uint64(0); i < n; i++ {
<-done
}
close(changesChan)
}(doneChan, doneCount)
return
}
开发者ID:odeke-em,项目名称:watnot-dev,代码行数:58,代码来源:watnot.go
示例19: Watch
func (fs *FileSystemImporter) Watch(opts *ImportOptions, shutdown chan struct{}) chan error {
//we watch opts.Dir or if empty, string(fs), or if emtpy, nothing.
dir := opts.Dir
if dir == "" {
dir = fs.WatchDir
}
out := make(chan error)
fini := func() {
//do nothing.
<-shutdown
close(out)
}
if dir == "" {
go fini()
} else {
err := os.MkdirAll(dir, 0755)
if err != nil {
out <- err
go fini()
} else {
go func() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
out <- err
fini()
return
}
defer watcher.Close()
if err = watcher.Add(dir); err != nil {
fini()
return
}
var wg sync.WaitGroup
log.Println("Watching Import Directory:", dir)
for {
select {
case ev := <-watcher.Events:
//log.Println("ImportWatch Event:", ev)
//probably only need write here...
if ev.Op == fsnotify.Create || ev.Op == fsnotify.Write {
//new file created let's have it!
fs.pendingImport(ev.Name, opts, out, &wg)
}
case err := <-watcher.Errors:
out <- err
case <-shutdown:
wg.Wait() //wait for anything happening to happen
close(out)
return
}
}
}()
}
}
return out
}
开发者ID:thechriswalker,项目名称:opfs,代码行数:57,代码来源:importer_fs.go
示例20: watchInput
func watchInput() *fsnotify.Watcher {
watcher, watcherr := fsnotify.NewWatcher()
fatality(watcherr)
adderr := watcher.Add("input/")
fatality(adderr)
return watcher
}
开发者ID:lcaballero,项目名称:code-exercise,代码行数:9,代码来源:main.go
注:本文中的github.com/go-fsnotify/fsnotify.NewWatcher函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论