Documentation
¶
Overview ¶
Package aghrenameio is a wrapper around package github.com/google/renameio/v2 that provides a similar stream-based API for both Unix and Windows systems. While the Windows API is not technically atomic, it still provides a consistent stream-based interface, and atomic renames of files do not seem to be possible in all cases anyway.
See https://github.com/google/renameio/issues/1.
TODO(a.garipov): Consider moving to golibs/renameioutil once tried and tested.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func WithDeferredCleanup ¶
func WithDeferredCleanup(returned error, file PendingFile) (err error)
WithDeferredCleanup is a helper that performs the necessary cleanups and finalizations of the temporary files based on the returned error.
Types ¶
type PendingFile ¶
type PendingFile interface {
// Cleanup closes the file, and removes it without performing the renaming.
// To close and rename the file, use CloseReplace.
Cleanup() (err error)
// CloseReplace closes the temporary file and replaces the destination file
// with it, possibly atomically.
//
// This method is not safe for concurrent use by multiple goroutines.
CloseReplace() (err error)
// Write writes len(b) bytes from b to the File. It returns the number of
// bytes written and an error, if any. Write returns a non-nil error when n
// != len(b).
Write(b []byte) (n int, err error)
}
PendingFile is the interface for pending temporary files.
func NewPendingFile ¶
func NewPendingFile(filePath string, mode fs.FileMode) (f PendingFile, err error)
NewPendingFile is a wrapper around renameio.NewPendingFile on Unix systems and os.CreateTemp on Windows.