//go:build !darwin && !dragonfly && !freebsd && !openbsd && !linux && !netbsd && !solaris && !windows // +build !darwin,!dragonfly,!freebsd,!openbsd,!linux,!netbsd,!solaris,!windows package fsnotify import ( "fmt" "runtime" ) // Watcher watches a set of files, delivering events to a channel. type Watcher struct{} // NewWatcher creates a new Watcher. func NewWatcher() (*Watcher, error) { return nil, fmt.Errorf("fsnotify not supported on %s", runtime.GOOS) } // Close removes all watches and closes the events channel. func (w *Watcher) Close() error { return nil } // Add starts monitoring the path for changes. // // A path can only be watched once; attempting to watch it more than once will // return an error. Paths that do not yet exist on the filesystem cannot be // added. A watch will be automatically removed if the path is deleted. // // A path will remain watched if it gets renamed to somewhere else on the same // filesystem, but the monitor will get removed if the path gets deleted and // re-created, or if it's moved to a different filesystem. // // Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special // filesystems (/proc, /sys, etc.) generally don't work. // // # Watching directories // // All files in a directory are monitored, including new files that are created // after the watcher is started. Subdirectories are not watched (i.e. it's // non-recursive). // // # Watching files // // Watching individual files (rather than directories) is generally not // recommended as many tools update files atomically. Instead of "just" writing // to the file a temporary file will be written to first, and if successful the // temporary file is moved to to destination removing the original, or some // variant thereof. The watcher on the original file is now lost, as it no // longer exists. // // Instead, watch the parent directory and use Event.Name to filter out files // you're not interested in. There is an example of this in [cmd/fsnotify/file.go]. func (w *Watcher) Add(name string) error { return nil } // Remove stops monitoring the path for changes. // // Directories are always removed non-recursively. For example, if you added // /tmp/dir and /tmp/dir/subdir then you will need to remove both. // // Removing a path that has not yet been added returns [ErrNonExistentWatch]. func (w *Watcher) Remove(name string) error { return nil }