// initWatchers initializes the watcher flags for all the monitored directories func initWatchers(watcher *fsnotify.Watcher, ctx Context) (err error) { defer func() { if e := recover(); e != nil { err = fmt.Errorf("initWatchers() -> %v", e) } ctx.Channels.Log <- mig.Log{Desc: "leaving initWatchers()"}.Debug() }() err = watcher.WatchFlags(ctx.Directories.Action.New, fsnotify.FSN_CREATE) if err != nil { e := fmt.Errorf("%v '%s'", err, ctx.Directories.Action.New) panic(e) } ctx.Channels.Log <- mig.Log{Desc: fmt.Sprintf("watcher.Watch(): %s", ctx.Directories.Action.New)}.Debug() err = watcher.WatchFlags(ctx.Directories.Command.InFlight, fsnotify.FSN_CREATE) if err != nil { e := fmt.Errorf("%v '%s'", err, ctx.Directories.Command.InFlight) panic(e) } ctx.Channels.Log <- mig.Log{Desc: fmt.Sprintf("watcher.Watch(): %s", ctx.Directories.Command.InFlight)}.Debug() err = watcher.WatchFlags(ctx.Directories.Command.Returned, fsnotify.FSN_CREATE) if err != nil { e := fmt.Errorf("%v '%s'", err, ctx.Directories.Command.Returned) panic(e) } ctx.Channels.Log <- mig.Log{Desc: fmt.Sprintf("watcher.Watch(): %s", ctx.Directories.Command.Returned)}.Debug() err = watcher.WatchFlags(ctx.Directories.Action.Done, fsnotify.FSN_CREATE) if err != nil { e := fmt.Errorf("%v '%s'", err, ctx.Directories.Action.Done) panic(e) } ctx.Channels.Log <- mig.Log{Desc: fmt.Sprintf("watcher.Watch(): %s", ctx.Directories.Action.Done)}.Debug() return }