func()

in ibazel/fswatcher/fsnotify/fsnotify.go [52:84]


func (w *realFSNotifyWatcher) UpdateAll(names []string) error {
	var errs []string
	prev_watched := w.watched
	new_watched := make(map[string]struct{}, len(names))

	for _, name := range names {
		new_watched[name] = struct{}{}

		_, ok := prev_watched[name]
		if ok {
			delete(w.watched, name)
		} else {
			err := w.wrapper.Add(name)
			if err != nil {
				errs = append(errs, fmt.Sprintf("Error watching file %q error: %v", name, err))
			}
		}
	}

	for name, _ := range prev_watched {
		err := w.wrapper.Remove(name)
		if err != nil {
			errs = append(errs, fmt.Sprintf("Error unwatching file %q error: %v\n", name, err))
		}
	}

	w.watched = new_watched

	if len(errs) > 0 {
		return errors.New(strings.Join(errs, "\n"))
	}
	return nil
}