Skip to content

Instantly share code, notes, and snippets.

@taotetek
Last active August 29, 2015 13:59
Show Gist options
  • Save taotetek/10985218 to your computer and use it in GitHub Desktop.
Save taotetek/10985218 to your computer and use it in GitHub Desktop.
func main() {
evChan := make(chan *fsnotify.FileEvent)
lnChan := make(chan *tail.Line)
done := make(chan string)
conf := new(Config)
err := conf.LoadConf("./goforward.json")
if err != nil {
log.Fatal(err)
}
go func() {
for {
ev := <-evChan
log.Println("event:", ev)
}
}()
go func() {
for {
ln := <-lnChan
log.Println(ln.Text)
}
}()
for _, dir := range conf.Directories {
go func() {
log.Println("adding dir: ", dir)
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
err = watcher.Watch(dir)
if err != nil {
log.Fatal(err)
}
for {
select {
case ev := <-watcher.Event:
evChan <- ev
case err := <-watcher.Error:
log.Println("error:", err)
}
}
}()
}
for _, file := range conf.Files {
go func() {
log.Println("adding file", file)
t, err := tail.TailFile(file, tail.Config{Follow: true, MustExist: true})
if err != nil {
log.Fatal(err)
}
for ln := range t.Lines {
lnChan <- ln
}
}()
}
for {
<-done
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment