const defaultPerm … const tmpTag … // FileExists returns true if a regular file exists at `path`, false if `path` does not exist, otherwise an error func FileExists(fs utilfs.Filesystem, path string) (bool, error) { … } // EnsureFile ensures that a regular file exists at `path`, and if it must create the file any // necessary parent directories will also be created and the new file will be empty. func EnsureFile(fs utilfs.Filesystem, path string) error { … } // WriteTmpFile creates a temporary file at `path`, writes `data` into it, and fsyncs the file // Expects the parent directory to exist. func WriteTmpFile(fs utilfs.Filesystem, path string, data []byte) (tmpPath string, retErr error) { … } // ReplaceFile replaces the contents of the file at `path` with `data` by writing to a tmp file in the same // dir as `path` and renaming the tmp file over `path`. The file does not have to exist to use ReplaceFile, // but the parent directory must exist. // Note ReplaceFile calls fsync. func ReplaceFile(fs utilfs.Filesystem, path string, data []byte) error { … } // DirExists returns true if a directory exists at `path`, false if `path` does not exist, otherwise an error func DirExists(fs utilfs.Filesystem, path string) (bool, error) { … } // EnsureDir ensures that a directory exists at `path`, and if it must create the directory any // necessary parent directories will also be created and the new directory will be empty. func EnsureDir(fs utilfs.Filesystem, path string) error { … } // WriteTempDir creates a temporary dir at `path`, writes `files` into it, and fsyncs all the files // The keys of `files` represent file names. These names must not: // - be empty // - be a path that contains more than the base name of a file (e.g. foo/bar is invalid, as is /bar) // - match `.` or `..` exactly // - be longer than 255 characters // The above validation rules are based on atomic_writer.go, though in this case are more restrictive // because we only allow a flat hierarchy. func WriteTempDir(fs utilfs.Filesystem, path string, files map[string]string) (tmpPath string, retErr error) { … } // ReplaceDir replaces the contents of the dir at `path` with `files` by writing to a tmp dir in the same // dir as `path` and renaming the tmp dir over `path`. The dir does not have to exist to use ReplaceDir. func ReplaceDir(fs utilfs.Filesystem, path string, files map[string]string) error { … }